זיכרון וירטואלי, חלוקה למדורים (Paging) וחלוקה למקטעים (Segmentation)
הוצג| English | משמעות |
|---|---|
| pages/ˈpeɪdʒɪz/ | עמודים |
| paging/ˈpeɪdʒɪŋ/ | חלוקת דף |
| segmentation/ˌseɡmənˈteɪʃn/ | קטיעה |
| virtual address space/ˈvɜːtʃuːəl əˈdres speɪs/ | מרחב כתובות וירטואלי |
| frames/freɪmz/ | מסגרות עמוד |
| page table/peɪdʒ ˈteɪbl/ | טבלת עמודים |
| page fault/peɪdʒ fɒlt/ | שגיאת עמוד |
| swap file/swɒp faɪl/ | קובץ החלפה |
| thrashing/ˈθræʃɪŋ/ | החלקה |
האור בכונן שמעיד שהמכונה לוותרה
- פתיחת יתר תוכניות במחשב שחסר לו זיכרון גורמת לתופעה אופיינית. הכל מאט כמעט לעצירה, ואור הכונן מפסיק להבהב ונשאר דלוק.
- המעבד אינו עסוק. הוא מחכה, כי הזיכרון שהתוכנה צריכה נמצא על הכונן, והוצאת דף אחד מרחיקה דף אחר שנדרש רגע לאחר מכן.
- המחשב לא עושה כלום מלבד העברת דפים. יש לו מספיק עבודה ומספיק זיכרון כדי לעשות את שניהם, אך הוא אינו מצליח לבצע אף אחד מהם.
- שיעור זה עוסק ב-זיכרון וירטואלי, כיצד חלוקה לדפים (paging) ו-חלוקה לקטעים (segmentation) מספקות אותו, וכיצד אותה מכניקה שמגדילה את הזיכרון apparent יכולה גם לנגוע במחשב לחסר תועלת.
מרחב הכתובות הוירטואלי
- לכל תהליך מוקצה מרחב כתובות וירטואלי משלו: טווח כתובות נקי ומרצף החל מאפס, שמערכת ההפעלה מקשרת למיקום האמיתי של הנתונים.
- משתיים דברים נובעים מכך. כל תהליך רואה מרחב פרטי פשוט ואינו צריך לדעת מה עוד רץ במערכת. התהליכים מוגנים זה מזה, שכן אחד אינו יכול להציין כתובת בשטח של השני. והזיכרון הכולל בשימוש יכול לעבור על הזיכרון הפיזי (RAM), כי חלק ממנו נמצא על דיסק.
- הבידוד הזה הוא גבול אבטחה ככל שהוא נוחות.
יתרון אחד של הזיכרון הווירטואלי הוא שהוא:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
הזיכרון הווירטואלי מספק לכל תהליך מרחב פרטי ומאפשר לקבוצת העבודה (Working Set) להתעלף מה-RAM המותקן באמצעות שימוש בדיסק.
מה משיגתן מתן מרחב כתובות וירטואלי לכל תהליך? סמון כל האפשרויות המתאימות.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
זיכרון וירטואלי מבטיח פשטות, בידוד וקיבולת. העלות היא במהירות, שכן חלק מהזיכרון נמצא למעשה על הכונן.
עמודות (Paging)
- המרחב הוירטואלי מחולק ל-עמודות בגודל קבוע; הזיכרון הפיזי מחולק ל-מסגרות באותו גודל. טבלת עמודות מציינת איזה מסגרת מחזיקה את כל עמודה כרגע.
- כאשר תהליך משתמש בכתובת, החומרה מחפש את העמוד בטבלה וממצא את המסגרת. אם העמוד אינו בזיכרון RAM, מדובר בשגיאת עמוד.
- בשוגשת עמוד, מערכת ההפעלה קוראת את העמוד מ-קובץ החלפה על הדיסק לתוך מסגרת חופשה. אם אין מסגרת חופשה, עליה תחילה להוציא עמוד, ולשמור אותו בחזרה על הדיסק אם שונה.

עמודות ומסגרות באותו גודל, המחוברות בטבלאית
בפייג'ינג, הזיכרון מחולק ל:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
פייג'ינג משתמש בדפים ומסגרות בגודל קבוע, הקשורים בטבלת דפים. (גודלים משתנים הם סגמנטציה.)
שגיאת דף מתרחשת כאשר:
Difficulty 1/5 · 100 coins + a small bonus on first completion today
הדף שנעשה בו שימוש אינו זמין במסגרת, ולכן מערכת ההפעלה טורפת אותו מקובץ הסוואה (ומשלחת אחר אם נדרש).
דוגמה פותרת: מה קורה בשוגשת עמוד
- תהליך מגיע לכתובת שעמודה שלה אינה בזיכרון RAM. תאר מה מערכת ההפעולה עושה. [4]
- החומרה מזדהה שהעמוד לא קיים ומפעילה פרעור שוגשת עמוד, והתהליך נחסם.
- מערכת ההפעלה מוצאת מסגרת חופשה; אם אין כזו, היא בוחרת עמוד להחלפה, ושומרת אותו בחזרה לקובץ החלפה אם שונה.
- היא קוראת את העמוד הנדרש מקובץ החלפה לתוך המסגרת הזו ועדכנת את טבלת העמודות.
- התהליך מוחזר למצב מוכן וההוראה מושחת מחדש. ארבעה שלבים, ארבע נקודות, ועיין שהתהליך היה חסום לאורך כל הזמן.
מה קורה בעת תקלת דף (Page Fault)?
מעבר צעד אחר צעד בתקלת דף: כאשר התוכנית פונה לדף שאינו קיים ב-RAM, מערכת ההפעלה טוענת אותו בשקט מהדיסק ומעדכנת את טבלת המדורים — כך שהתוכנית רואה יותר זיכרון מאשר קיים בפועל.
סדר את תגובת מערכת ההפעלה לשגיאת דף.
Difficulty 3/5 · 200 coins + a small bonus on first completion today
זיהוי וחסימה, פתיחת מקום, טעינה, הקלטה, ניסיון חוזר. תקלת דף היא המנגנון הרגיל, לא שגיאה.
תזוזה (Thrashing)
- בחירת העמוד להחלפה חשובה, שכן בחירה שגויה תגרום לכך שהוא יהיה נדרש שוב מיד.
- כאשר יש פחות מדי RAM לערכה הפועלת של התהליכים הרצים, כמעט כל הגישה גורמת לשוגשת עמוד, וכל שוגשת מוציאה עמוד שנדרש שוב מיד.
- המערכת אז מבזבזת כמעט כל הזמן שלה בהחלפת עמודים במקום ביצוע הוראות. זהו תזוזה, או תזוזת דיסק, והוא המצב המתואר בתחילת שיעור זה.
- הטיפול הוא במצע RAM נוסף או בתהליכים פחותים; מעבד מהיר אינו מועיל כלל, משום שהמעבד אינו המרכיב העסוק.
המחשב מאט כמעט לעצירה והדיסק פועל ברציפות. מה יפתור את הבעיה?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
זוהי ריצה סוחפת: כל גישה גורמת לתקלת דף והמעבד מחכה. המעבד אינו רכיב עמוס, ולכן האצתו אינה משנה דבר.
חלוקה למקטעים
- חלוקה למקטעים מחלקת את הזיכרון למקטעים לוגיים בעלי גודל משתנה התואמים את מבנה התוכנה עצמו: הקוד, הערימה, האזור החופשי, מאגר נתונים גדול.
- מכיוון שמקטע הוא יחידה לוגית, הוא יכול לשאת את האישורים שלו: מקטע הקוד יכול להיות לקריאה בלבד וניתן לביצוע, הערימה לקריאה-כתיבה ולא ניתן לביצוע.
- ההבדל הנדרש במבחן: דפי זיכרון הם בגודל קבוע ואין להם משמעות לתוכנה; מקטעים הם בגודל משתנה ותואמים חלקים לוגיים שלה. מערכות רבות בשוק משלבות בין שני המנגנונים, על ידי ביצוע דפודיג (paging) בתוך מקטעים.

המקטעים הם חלקיה של התוכנה, לא פרוסות שוות
התאם כל מונח ניהול זיכרון למשמעותו.
Difficulty 2/5 · 140 coins + a small bonus on first completion today
חלוקת דפים = דפים בגודל קבוע; חלוקה לסיגמנטים = יחידות לוגיות בגודל משתנה; תקלת דף מגרה חילוף; מספר רב מדי של תקלות = ריצה סוחפת.
חלוקה לסיגמנטים מחלקת זיכרון ליחידות לוגיות בגודל משתנה (קוד, סטק, היפ), לכל אחת מהן הרשאות משלה, בעוד שחלוקת דפים משתמשת בדפים בגודל קבוע.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
הסיגמנטים תואמים את המבנה הלוגי של התוכנית; הדפים הם בלוקים אחידים בגודל קבוע – חלק מהמערכות משלב בין שניהם.
בניגוד לעמודים, שכולם באותו גודל, מקטעים הם בגודל ⟦varying⟧ ומתאימים לחלקים הלוגיים של התוכנית.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
המקטע הוא הקוד, הערימה או ההיפ, ולכן יכול לשאת את ההרשאות שלו. עמוד הוא חלוקה פיזית שאין לה משמעות עבור התוכנית.
דוגמה פתורה: דפודיג מול חלוקה למקטעים
- פרטו שני הבדלים בין דפודיג לחלוקה למקטעים. [2]
- הדפים כולם בגודל קבוע, שנקבע על ידי המערכת; המקטעים בגודל משתנה, שנקבע לפי החלקים הלוגיים של התוכנה.
- הדף הוא חלוקה פיזית טהורה שאין לה משמעות לתוכנה; מקטע תואם ליחידה לוגית כמו הקוד או הערימה, וניתן לקבוע לו אישורי גישה משלו.
- אם נדרש ערך נוסף: בדפודיג עשויה להישאר שטח לא מנוצל בתוך הדף האחרון של ההקצה, בעוד שבחלוקה למקטעים נשארים פערים של שטח בלתי שימושי בין המקטעים.
סימונים נופלים מהיד
- הזיכרון הווירטואלי אינו יוצר זיכרון. הוא מאפשר ל**סה
- שגיאת דף היא לא שגיאה. זוהי המנגנון הרגיל באמצעותו דף מובא לזיכרון.
- משיטה (thrashing) היא spending יותר זמן בהחלפה מאשר ביצוע, והפתרון הוא זיכרון RAM נוסף או תהליכים פחותים, לעולם לא מעבד מהיר יותר.
- גודל קבוע מול גודל משתנה, משמעות לוגית הוא ההבדל בין חלוקה לדפים לחלוקה לקטעים. הבע את שני החלקים.
הבנתך מושלמת
- מרחב כתובות וירטואלי מספק לכל תהליך טווח רציף פרטי, מגן על תהליכים זה מזה, ומאפשר לזיכרון בשימוש לעלות על כמות ה-RAM הפיזית.
- חלוקה לדפים: דפים בגודל קבוע המקוטבים ל-מסגרות (frames) באמצעות טבלת דפים; שגיאת דף חוסמת את התהליך בזמן שהמערכת הפעולה מרחיקה דף אם נדרש, מטענת מה-קובץ החלפה (swap file), מעדכנת את הטבלה ומנסה שוב.
- משיטה היא spend יותר זמן בהחלפה מאשר ביצוע; לרפא אותה עם זיכרון RAM נוסף או תהליכים פחותים.
- חלוקה לקטעים משתמשת בקטעים בעלי גודל משתנה המתאימים לחלקים הלוגיים של התוכנה, לכל קטע ישנם רישיונות משלו; מערכות רבות מבצעות חלוקה לדפים בתוך הקטעים.