PDAce   PDAce   PDAce
 
סקירות ומדריכים
חפש
 
דף הבית
סקירות ומדריכים
השוואת מכשירים
מילון מונחים
תוכנות מומלצות
קישורים לאתרים נבחרים
הוראות שימוש באתר
מי אנחנו
טאגליינס
 
החיים מבעד ל-PDA
PDAce - Stories הטוב, הרע וצבי צב
או - כך התקנו WM2005 על אחד IPAQ 4700

 
 
טאגליינס

Multitasking בפאלם?

 
מאת: Yoovee, Shed
האם ישנו Multitasking בפאלם?
בנוהל, אציין שידיעותיי אינן מקצועיות, והן מבוססות על נסיוני הדל והאומלל לפתח תוכנות לפאלם (נסיון שנעצר לעת עתה עקב ניגוד אינטרסים עם הלימודים לתואר ובשל עגליותו (מלשון "היותו עגלה") של המחשב שלי המריץ את מערכת ההפעלה 98 ואי לכך לא עומד בתקנים ל-PODS החינמית, אבל נעזוב את זה...)

אה כן, ושוב שלום לכולם :- )(אם כי חדי (חדת ;-)) העין הבחינו בקאמבקי לפורום אור לשבוע שעבר)

אז ככה, קודם כל מעט פשטנות בהגדרות יסוד:

1) "ריצה במקביל" אינה מתרחשת כך פשוטו כמשמעו ברמת המעבד. לרוב המעבדים מכילים ערוץ הרצה יחיד (pipeline), ואם ישנם ערוצים מקבילים על אותו מעבד, הם בד"כ ל"משימות משנה" נחותות (ואני מזהיר שוב שהמידע שברשותי לא הכי מדוייק - כבר יובלות שאני לא מתעניין בזה יתר על המידה, והטכנולוגיה מתעדכנת). "ריצה במקביל" ברמת המשתמש, היא בעיקר פונקציה של מערכת ההפעלה (כמה מפתיע :-P) שדואגת לחלק את זמינות המעבד לתוכנות הפעילות.

2) ישנן פעולות שיכולות לרוץ באופן כביכול עצמאי ברקע, למרות שמערכת ההפעלה לכאורה אינה תומכת בכך, למשל - MP3. ה"סוד" טמון לפעמים במעבד משנה מיוחד שמוקדש למשימה (ר' הDSP של הSONY שניגנו MP3 אפילו על OS4 שרצה על מעבד הדרגון-בול האיטי והמוגבל יחסית לפיענוח של מוסיקה כזו). גם אם זו פונקציה מיוחדת על טהרת התוכנה, למשתמש הקצה ההרצה נראית במקביל, למרות שבפועל היא אינה כזו (לפחות ב-OS5 לעניות דעתי), ומשתמשת באלמנטים שיוזכרו בעקרון הבא:

3) ישנן "אירועי מערכת" (וכאן אני מדבר ספציפית על פאלם - Notifications, שהקיצו את הקץ על ה"האקים" מהדור הישן) שתוכנות יכולות "לרשום את עצמן" להן, ובכך "לקבל הודעה" כל אימת שאירוע כזה מתרחש, והתוכנות הרשומות לאירוע, מקבלות בזו אחר זו את ההזדמנות להגיב (באופן שקוף למשתמש) - כך למשל תוכנות ה"מתלבשות" על ההדלקה/כיבוי של המכשיר לבצע אי אילו פעולות תחזוקה (למשל AutoOffExtenderשל כותב שורות אלו), תוכנות המראות את עצמן כאייקון ב-Command Bar (הן מקבלות עדכון כשמקפיצים אותו עם שרבוט של "/" בגרפיטי; מוזר ככל שזה נשמע, יש הגיון במנגנון הזה של יידוע מחדש בכל פעם ולא פשוט התקנה ל-Bar כמו ללאונצ'ר רגיל - הן יכולות להחליט אם הן זמינות כרגע או לא. למרבה הצער, מעט תוכנות מיישמות את זה), ועוד (רשימת הדוגמאות ארוכה ומבלבלת ליריעה זו).

4) תוכנות במערכות הפעלה מתקדמות (קרי, לא DOS) מגיבות בד"כ ל"אירועים". למשל תחת חלונות, "אירוע" הוא כל קליק/דבל-קליק/תזוזת עכבר בחלון למשל, ובאופן דומה בפאלם "אירוע" הוא, נניח, לחיצה עם הסטילוס במסך.

ועכשיו כך: במע"ה Palm OS על כל גירסאותיה שהופצו עד כה, מסיבות היסטוריות, התוכנות אחראיות ל"לולאה התמידית" של התוכנית - ז"א הן אילו שמריצות בדיקה במשך כל ה"זמן המת" של השימוש בתוכנה, ובודקות אם ישנם "אירועים" בתור שצריך לטפל בהם - מהבחינה הזו לפחות, אין "מולטי-טאסקינג" (=ריבוי משימות) בפאלם, וניתן בפירוש לקרוא פרמטר שנקרא CurrAppDB או משהו מעין זה (עמיתיי המתכנתים, השם המדויק לא קריטי לדיון) ומכיל את התוכנה האקסלוסיבית לרגע זה (אומנם מזכיר את "החלון הפעיל", Active Window בחלונות, אבל המהות שונה).

ואיך כל בליל המידע הזה קשור לשרשור המקורי? אז זהו: תוכנות בפאלם, לפחות נכון לעכשיו ונכון לידע המוגבל שלי (מודה מראש באשמה :-D) אינן "רצות במקביל" או "רצות ברקע". בפשטות, הן אינן "רצות". הן יותר נכון "אורבות" ברקע, קשובות ל"הודעות" של מערכת ההפעלה (Palm OS Notifications) ומחליטות מה יהיו המשימות הקטנות שהן יבצעו מאחורי הקלעים שיהוו את ה"ריצה" שלהן. לעיתים הן אפילו יצריכו תגובת משתמש, כמו בהקפצת דיאלוג שיאמר ש"קרה משהו" ו"מה אתם רוצים לעשות".

"אבל בכל זאת", יקשה קורא קפדן של השרשור וישאל: "MP3 דורש פענוח בלתי פוסק של המוסיקה, וזו, פשוטו כמשמעו, רצה (מושמעת) ברקע, אז מה אתה [אני :] מבלבל במוח?!?" אז פה אני אסייג ואומר שהצורה המדוייקת שפאלם דאגו לכך שזה ייקרה אינה נהירה לי לחלוטין, אבל קרוב לוודאי שהם לא המציאו את הגלגל, ואו שישנו DSP שמוקדש לכך, או שמעבד ה-ARM הראשי החזק יחסית אומנם עושה זאת בעצמו, אבל מערכת ההפעלה הטמיעה באופן פרטני בלבד את היכולת שלו "לנגן ברקע" תוך מתן אפשרות להמשך התעסקות ושימוש בפאלם (מי שיש לו מכשיר מתקדם, בניגוד אליי, יכול ודאי לשים לב אם יש או אין האטה כשיש מוזיקה ברקע, ולנחש מה פאלם עשו).

אני מקווה שקצת עשיתי סדר בהגדרות למי ששמע "ריצה ברקע" ולא ממש הבין מה עומד מאחורי הביטוי. ההסבר הוא מאוד פשטני וכמובן שההודעה לא באה לחדש משהו לקוקי למשל, שמידיעותיו הנרחבות אני נפעם ונהנה בכל פעם מחדש, או נניח ל-shed, שאני בטוח שהוא יכול לתקן הרבה דברים ממה שרשמתי לעיל, אבל "בגדול", מלבד לכמה מתכנתים שאולי יירצו להעלות אותי על המוקד, אני מקווה שסייעתי ושרוח הדברים ברורה:- )

shed מוסיף:

עוד בימי ה-DOS היה ניתן לכתוב תוכנת TSR שיושבת בזכרון ו"אורבת" לארוע כל שהוא. אחת התוכניות הראשונות שכתבתי היתה תוכנה שבכל פעם שהיה ארוע של קלוק מערכת היא היתה בודקת האם מקש מסויים לחוץ, ובמידה וכן - שולחת את המסך להדפסה / לקובץ. בצורה כזו הצלחתי להוציא סקרין שוטים של משחקים שחסמו את מקש ה-print screen.

בדיוק באותו אופן ולפי אותו עקרון, תוכנת ניגון MP3 או תוכנה ל-IP כמו verichat מבצעות "רגיסטרציה" לארוע המתרחש באופן תדיר במערכת, ובכל פעם שהארוע הזה קורה הן מבצעות את פעולת החישוב/ keep alive (או כל דבר אחר) שלהן.

לא מדובר כאן בריבוי משימות במובן הקלאסי של threadים שונים אשר מע' ההפעלה יודעת לתזמן ולנהל אותם על פי תור קדימויות וכו' כמו שאנחנו רגילים לראות במחשב שולחני או ב-WM. בכל מקרה, המעבד (כל מעבד) מבצע פעולה אחת בלבד בכל רגע נתון.
 
30-Nov-1999