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

 
 
טאגליינס

הסבר על NVFS

 
מאת: עמית שני
רוצים להבין בדיוק מה זו מערכת הקבצים החדשה (2005) של מכשיירי הפאלם? מה יתרונותיה? מה מגבלותיה? כל אלו ועוד במאמר הבא

מה זה NVFS ולמה זה טוב

NVFS הוא ראשי תיבות של Non-Volatile File System. שמשמעו בתרגום ישיר הוא "מערכת קבצים בלתי נדיפה". כלומר, מערכת קבצים אשר לא נמחקת גם אם מנותק הזרם לזכרון.
NVFS היא מערכת קבצים הממומשת במחשבי כף יד מבוססי PalmOS. מערכת הקבצים הזו משתמשת בזכרון שאינו נדיף, וזאת על מנת למנוע איבוד מידע במקרה של התרוקנות הסוללה.
עד היום, במכשירים מבוססי PalmOS, עם התרוקנות הסוללה, היה נמחק כל המידע שבמכשיר. NVFS באה כדי למנוע מקרים כאלו.

איך בנויה NVFS

עד לפני זמן קצר, מערכת הקבצים במכשירי פאלם הייתה בנוייה משני רכיבי זכרון. היה זכרון פלאש, בתצורת NOR, שנועד לקריאה בלבד והחזיק את מערכת ההפעלה ותוכנות נוספות כמו יומן, ספר כתובות וכו'. קראנו לזכרון הזה ROM. בנוסף, היה זכרון SDRAM שהיה נדיף ושימש לאחסון של כל התוכניות והקבצים. כאשר היה מנותק המתח לזכרון זה, כל המידע שבו היה נמחק. לזכרון הזה קראנו RAM.
במכשירי פאלם מהדור החדש (Tungsten E2, T5, Treo 650, LifeDrive) הוצגה מערכת זכרון חדשה הנקראת NVFS. במערכת זו הזכרון כולו מאוחסן על רכיבי פלאש בתצורת NAND ולכן אינו נמחק גם אם מנותק אליו המתח, בעקבות התרוקנות הסוללה, הוצאתה או כל סיבה אחרת. בLifeDrive במקום פלאש ישנו דיסק קשיח אך המימוש הוא זהה.
ההבדל העיקרי בין זכרון בתצורת NAND לבין זכרון בתצורת NOR הוא בכך, שבזכרון NOR ניתן לגשת לכל חלק בזכרון באופן ישיר. ב NAND אפשר לגשת רק לגושים בזכרון ולא לכל כתובת, ולכן לא ניתן להריץ ממנו תוכנות באופן ישיר, אלא יש צורך בהעברת המידע שבו לזכרון אחר שכן מאפשר זאת.
לכן במערכת NVFS, הזכרון המשמש לשמירת תוכניות (נקרא לו זכרון התוכניות) לא יכול להיות גם הזכרון ממנו רצות התוכניות. לצורך כך קיים במכשירים עם NVFS זכרון נוסף, מבוסס SDRAM, שאליו מועברות התוכניות. זכרון זה הוא נדיף ובמקרה של ניתוק המתח, יימחק כל המידע שעליו.
הזכרון הנדיף לא מיועד כולו להרצת התוכניות. הוא מחולק לשלושה חלקים. ניקח, לדוגמה את החלוקה במכשירים T5 או Treo 650. במכשירים אלו יש 32MB של זכרון SDRAM והם מחולקים כך:
  • 16MB משמשים לאחסון קבצי מערכת ההפעלה והתוכנות המובנות (מה שקראנו פעם ROM). עם הפעלת המכשיר, מועתק תוכן ה ROM, שנמצא בצורה דחוסה בחלק ייעודי בפלאש, לתוך אותו חלק ייעודי בזכרון הנדיף. חלק זה של הזכרון הוא לקריאה בלבד ואינו ניתן לשינוי ע"י התוכניות. רק לאחר שאותו ROM הועבר בשלמותו מהפלאש, רק אז עולה מערכת ההפעלה וניתן להריץ תוכניות.
  • 6MB משמשים למה שנקרא Dynamic Heap. זה זיכרון המשמש את התוכנית הרצה לצורך העבודה שלה. זכרון כזה היה קיים גם במכשירי הפאלם הישנים יותר.
  • 10MB המשמשים לאחסון התוכניות (שמו הרשמי הוא DBCache ואנחנו נקרא לו "זכרון ריצה" או RAM). לחלק זה מועתקת התוכנית שמופעלת עם כל קבצי הנתונים שלה, וממנו זה רצה התוכנית, שאינה יכולה לרוץ ישירות מזכרון הפלאש (כי הוא NAND).
חלוקת זכרונות
חלוקת הזכרונות
במקרה של Hard Reset, נמחקים לחלוטין כל הזכרון הנדיף (על כל שלושת חלקיו) וכל זכרון התוכניות הנמצא בפלאש. נשאר רק החלק של הפלאש המכיל עותק דחוס של ה ROM כדי שיוכל להטען למקומו בRAM לאחר ה-Reset.

איך עובדת NVFS

כאשר תוכנית מועתקת מהפלאש לזכרון הריצה, היא מן הסתם משתנה שם או שנגרמים שינויים לקבצי הנתונים שלה, שגם נמצאים על אותו זכרון ריצה נדיף. מערכת ההפעלה לחלוטין "אינה מודעת" לכך שישנו עותק על הפלאש, שצריך גם הוא להתעדכן למקרה של הפסקת חשמל. לכן, הקבצים שבפלאש יעודכנו באחד מארבעת המקרים הבאים:
  • המכשיר כובה, בין אם ידנית או בעקבות תיזמון.
  • התוכנה הוגדרה ע"י המתכנתים שלה כן, שהפלאש יעודכן באופן יזום ע"י פונקציה שמיועדת לכך.
  • נעשה שינוי במאפייני התוכנה, נתונים כמו CreatorID, סוג התוכנית, שם התוכנית וכו'.
  • התוכנית או אחד מהקבצים שלה נסגרו. סגירה של תוכנית משמעו מעבר מאפליקציה אחת לשניה או יציאה מאפליקציה פעילה. סגירת קובץ יכולה להתבצע גם ללא יציאה מתוכנית. לדוגמה, כאשר עובדים בתוכנה כמו אג'נדוס ומעדכנים פרטי איש קשר ומיד אח"כ פרטי פגישה. פרטי איש הקשר נשמרים בקובץ אחד ופרטי הפגישה בקובץ אחר. המעבר זה סוגר את קובץ אנשי הקשר ולכן גורם לעדכונו.
במקרים אלה, הקובץ נסרק על מנת לוודא שהוא תקין ואז מעודכן התאום שלו בפלאש.
גודל זכרון הריצה מוגבל (בדוגמא שלנו הוא 10MB). אם נטענת תוכנה הגדולה ממנו, היא תוציא הודעת שגיאה על כך שאין די זיכרון להפעילה. אם נטענת תוכנה המשתמשת בבסיסי נתונים, וגודלם המצטבר עולה על גודל זכרון הריצה הפנוי, מתחיל תהליך של פינוי זכרון הריצה. תהליך זה שקוף למשתמש, ובעצם הוא מתבצע באמצעות ניקוי תוכניות היושבות בזכרון הריצה ושאינן נעולות. תוכניות אלו מעודכנות לפלאש ונמחקות מזכרון הריצה. מדובר בעיקר בתוכניות שסיימו את עבודתן או תוכניות שרות שאמורות לרוץ ברקע. במהלך התהליך, מטבע הדברים, תורגש ירידה משמעותית בביצועים עקב הקריאה והכתיבה לזכרון הפלאש.
ניתן, באמצעות תוכנות צד ג' (כמו SharkCache ו RLock) להגדיר תוכניות שתהיינה נעולות תמיד בזכרון הריצה. תוכניות אלו לא תפוננה ממנו במקרה של תהליך פינוי הזכרון. הדבר יגרום לכך שהן תופעלנה מהר וישירות מזכרון הריצה. מומלץ לנעול תוכניות כאלו פחות ככל האפשר, כדי להשאיר זכרון ריצה פנוי וגדול לתוכניות אחרות.
במידה וישנה תוכנית המגדילה באופן עקבי בסיס נתונים עד שהוא עובר את גודל זכרון הריצה וכבר נוקו ממנו כל העודפים, מערכת ההפעלה ממשיכה ע"י ניקוי חכם, המוחק רשומות של אותו בסיס נתונים מזכרון הריצה, לאחר שמעדכן אותן בפלאש.
ישנן תוכנות צד ג' (כמו DBCacheTool) שיודעות לנהל את זכרון הריצה ולנקות אותו לפי הגדרות המשתמש, באם לדעתו של המשתמש, מערכת ההפעלה לא עשתה את העבודה כמו שצריך.
במכשירים החדשים יותר, כמו TX וגם Treo650 אחרי עדכון ROM 1.20, מתבצע ניקוי של זכרון הריצה, כמו זה שמבצעת DBCachTool ע"י מערכת ההפעלה. במכשירים אלו, עם כל כניסה לדפדפן האינטרנט, מתבצע ניקוי וסידור של הזכרון. גם כאשר תוכנה גדולה מנסה להטען, מתבצע ניקוי יעיל של זכרון הריצה. כך, למעשה, אין צורך בתוכנות צד ג' לביצוע פעולות אלו.
באופן כללי, במכשירים אלו מנוהל הזכרון בצורה יעילה יותר וגם נפח זכרון הריצה גדל קצת על חשבון ROM קטן ויעיל יותר.

מבנה הקבצים של NVFS

בעקבות השימוש בזכרון בלתי נדיף בתצורת NAND, השתנה כל מבנה הקבצים של התוכניות ובסיסי הנתונים בפאלם. עד כה, הכל היה מאוחסן בזכרון בצורה רציפה, וניתן היה לגשת ישירות לכתובות בזכרון כדי לדלות מהן נתונים. במערכת NVFS הקבצים מסודרים, כמו במחשב, בגושים.
מבנה הגושים עבר שינויים מהותיים מאז שהומצאה ה NVFS.
מבנה הקבצים הישן ( Treo 650 או T5 לפני עדכוני ה ROM האחרונים) היה בנוי כך:
כל גוש היה בגודל של 512 בתים (Bytes). אם גודלו של קובץ היה פחות מגודל הגוש, הוא אוחסן בגוש אחד. אם יותר מכך, הוא נפרס על מספר גושים בהתאם לגודלו כאשר בכל גוש אוחסן חלק מהקובץ.
לדוגמא, קובץ שגודלו 60 בתים אוחסן בתוך גוש של 512 בתים. ובעצם תפס יותר מפי 8 מגודלו האמיתי.
קובץ שגודלו 700 בתים אוחסן בחלקים: החלק הראשון תפס גוש של 512 בתים במלואו והחלק השני, של 188 בתים, תפס עוד גוש. סה"כ תפס הקובץ 1024 בתים.
כפי שניתן להבחין מיד, שיטה זו היתה בזבזנית ביותר, ובעצם נתנה למשתמש פחות זכרון ממה שנראה לו. אם היו במכשיר 32MB פנויים למשתמש בזכרון התוכניות, ניתן היה בפועל לאחסן בו פחות מכך בגלל השטח הריק שנשאר בגושים.
מכשירים כמו LifeDrive, T|E2 ובמכשירי Treo 650 ו T5 לאחר עדכון ה-ROM, מערכת הקבצים היא שונה:
גם כאן יש שימוש בגושים בגודל 512 בתים, אלא שניצולם הוא אחר. כאן, כל גוש מחולק ל 16 תת-גושים בגודל 32 בתים, המסוגלים לשמש לשמירת חלקי קבצים. ישנן מגבלות גם להשמת תת-גושים. מספר התת-גושים הדרושים לאחסון קובץ נקבע ע"י עיגול למעלה של גודל הקובץ, לחזקה הבאה של 2. בנוסף מיקום הקובץ יהיה לפי גודלו. כלומר, קובץ של תת-גוש אחד יכול להיות ממוקם בכל מקום בגוש. קובץ של 4 תת-גושים יוכל להתחיל רק בכל 128 בתים כלומר, כל רבע גוש וכך הלאה.
לדוגמא: קובץ של 60 בתים יאוחסן בתוך גוש של 512 בתים אבל יתפוס רק 64 בתים מתוכו (שני תת-גושים).
קובץ של 700 בתים, יתפוס גוש שלם של 512 בתים והשארית, 188 בתים, תוכל להיות מאוסנת בגוש אחר. לדוגמא, יהיה לו מספיק מקום פנוי בתת-גוש עם הקובץ הקטן (60 בתים), אבל בגלל גודלו, העיגול למעלה משמעו שהוא יתפוס 256 בתים, כלומר 8 תת-גושים ולכן יוכל להיות ממוקם או בתחילת הגוש או באמצעו. למרות שיש שטח מבוזבז, זה משאיר מספיק מקום פנוי לאחסון של קובץ נוסף בגודל של עד 129 בתים.

לפני עדכון ROM
לפני עדכון ROM
אחרי עדכון ROM
אחרי עדכון ROM
קל להווכח שהשיטה הזו יעילה בהרבה מהקודמת, אך עדיין יש כאן בזבוז של מקום ובנוסף לכך, יש צורך לנהל את המקום הפנוי. מערכת ההפעלה "יודעת" לנהל את המקום הפנוי. משמע, העברת קבצים שגדלו למקומות פנויים אחרים וכן צמצום ואיחוד קבצים הפזורים על פני גושים בלתי מנוצלים.
במכשירי T5 ו LifeDrive ישנו חלק נוסף של זכרון בלתי נדיף. חלק זה משמש לאחסון קבצים, ומתנהג כמו כרטיס זכרון במכשירים אחרים. הקבצים בחלק זה מנוהלים גם הם באותה שיטה של גושים כמו שאר הזכרון הבלתי נדיף. לדוגמא, ב T5, גודל זכרון הפלאש הוא 256Mb, כשמתוכם 55MB הם זכרון התוכניות, 41MB מכילים את קבצי ה ROM ושטח מוסתר לשימוש מערכת ההפעלה, ו-160MB משמשים למשתמש כדיסק נוסף, הנקרא INTERNAL.

לסיכום

כך מנוהל NVFS. שיטה זו דומה מאוד בעצם לזו הממומשת במחשבים אישיים (ללא קשר לסוג מערכת הפעלה). יתרונות השיטה ברורים:
  • אין מצב של מחיקת נתונים במקרה של נפילת מתח. לכן ניתן לתכנן מכשירים עם סוללה מתחלפת.
  • צריכת החשמל נמוכה יותר, מכיוון שאין צורך לשמור על מתח קבוע כל הזמן כדי לשמור את הזכרון פעיל. מה גם שהזכרון הנדיף הוא קטן יותר ולכן צורך פחות מתח.

אך עם היתרונות באים גם חסרונות:
  • פעולות הכתיבה והקריאה בין זכרון התוכניות לבין זכרון הריצה לוקחות זמן, שמשכו תלוי בגודל הקובץ המועבר ותדירות המעבר שלו בין הזכרונות. זמן הזה עלול להיות מורגש כאיטיות בהפעלת תוכנות. כאשר מדובר ב LifeDrive שבמקום פלאש מחזיק דיסק מכאני, אז פעולות אלו הופכות להיות איטיות עוד יותר.
  • גודל זכרון הריצה מוגבל. אמנם אין כיום תוכנה שיכולה למלא את כולו, אבל עצם ההגבלה הוא נושא שמפתחים צריכים להתחשב בו, וגם עוד לא ברורה השפעתו על תוכניות שיצאו בעתיד.
  • מבנה הקבצים החדש שונה מהותית מזה שהיה נהוג בפאלם עד כה, לכן תוכניות רבות שהיו "רגילות" לגשת ישירות לכתובות בזכרון כדי לשלוף נתונים, צריכות להתמודד עם מבנה נתונים חדש וקריאות להבאת נתונים מזכרון אחד לשני. אי לכך ישנן בעיות של תאימות בתוכנות ש"התרגלו" לשיטה הישנה לבין מכשירים הפועלים בשיטה החדשה.

מערכת הקבצים NVFS באה כדי לתת מענה לבעיה ספציפית. השיטה עצמה היא שיטה טובה מאוד וגם ממומשת בצורה יעילה.
הבעיות איתה הן בעיקר בגלל שהמכשירים עליהם היא מותקנת, לא ממש מתאימים.
לדוגמא, ב LifeDrive, בגלל השימוש בדיסק מכאני, פעולות הכתיבה והקריאה לוקחות יותר זמן. אפשר היה להשתמש במכשיר הזה בזכרון ריצה גדול יותר ב RAM, ובכך להפחית את פעולות אלו.
במכשירי Treo 650 ו TE2, ישנם 32MB זכרון למשתמש. זה היה סטנדרט שהתאים למכשירים לפני ה NVFS אבל כיום, בגלל הצורך לשמור עותק של מערכת ההפעלה על הזכרון וגם צורת ניהול הקבצים, הזכרון הזמין בפועל הוא פחות מ 20MB שזה כבר מעט במונחים של פאלם בן ימינו.
כבר היום אפשר לראות שמכשירים חדשים יותר מנהלים את הזכרון בצורה טובה יותר. גם עדכוני ROM משפרים את ניהול הזכרון ויציבות המכשירים. סביר להניח שבמכשירים הבאים יהיה מימוש טוב יותר של NVFS ואולי גם עדכוני ROM למכשירים הנוכחים ישפרו את הביצועים ע"י הקטנת קבצי מערכת וטעינה סלקטיבית של קבצי ROM מהפלאש לRAM.
בינתיים אנחנו יכולים לשמוח על כך שהמידע לא יאבד כאשר תתרוקן הסוללה, ושאפשר סוף סוף לראות מכשירים עם סוללה מתחלפת.
 
30-Nov-1999