שאלת מבחן במערכות הפעלה - האוניברסיטה הפתוחה 2024 - ניהול זיכרון

ניתן ליצור איזור של זיכרון משותף MEMORY SHARED בין שני תהליכים PROCESSES ע"י שבכל טבלת הדפים יהיו מצביעים לאזור המשותף של שני התהליכים. במצב זה:

א. האזור המשותף חייב להיות ממופה לאותה כתובת וירטואלית במרחבי הכתובות של שני התהליכים.
ב. אחד התהליכים פונה לכתובת משותפת ויש fault page, אזי שני התהליכים יחסמו בוודאות.

ג. קידום ערך המשתנה הנמצא באזור המשותף צריך להיות מוגן ע"י סמפור (SEMAPHORE).

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

ניתוח התשובות:

  • א. האזור המשותף חייב להיות ממופה לאותה כתובת וירטואלית במרחבי הכתובות של שני התהליכים.
לא נכון. לכל תהליך יש מרחב כתובות וירטואלי פרטי משלו. מערכת ההפעלה יכולה למפות את אותם דפים פיזיים (המהווים את הזיכרון המשותף) לכתובות וירטואליות *שונות* בכל אחד ממרחבי הכתובות של התהליכים. הגמישות הזו מאפשרת לכל תהליך לארגן את מרחב הכתובות שלו באופן בלתי תלוי.

  • ב. אחד התהליכים פונה לכתובת משותפת ויש fault page, אזי שני התהליכים יחסמו בוודאות.
לא נכון. Page Fault הוא אירוע המתרחש בהקשר של התהליך הבודד שניסה לגשת לכתובת. אם תהליך א' גורם ל-page fault, רק תהליך א' יושהה (ייחסם) עד שמערכת ההפעלה תטען את הדף החסר מהדיסק לזיכרון הפיזי. תהליך ב', שחולק את הזיכרון אך לא ביצע את הגישה הבעייתית, יכול להמשיך לרוץ במקביל (אם הוא מתוזמן).

  • ג. קידום ערך המשתנה הנמצא באזור המשותף צריך להיות מוגן ע"י סמפור (SEMAPHORE).
נכון. כאשר שני תהליכים או יותר יכולים לגשת ולשנות נתונים משותפים במקביל, עלול להיווצר תנאי מרוץ (race condition). פעולת קידום משתנה (למשל x++) אינה אטומית, והיא מורכבת בדרך כלל משלוש פעולות: קריאת הערך מהזיכרון לרגיסטר, קידום הערך ברגיסטר, וכתיבת הערך החדש בחזרה לזיכרון. ללא סנכרון, תהליך אחד עלול לדרוס את השינוי שביצע תהליך אחר. אזור הקוד שמבצע את הקידום הוא קטע קריטי (critical section), ויש להגן עליו באמצעות מנגנון סנכרון כמו סמפור או מנעול (lock) כדי להבטיח בלעדיות הדדית (mutual exclusion).

  • ד. כל גישה לאזור המשותף תבוצע ע"י מערכת ההפעלה ולא ישירות ע"י התהליך.
לא נכון. היתרון המרכזי של זיכרון משותף הוא יעילות. לאחר שמערכת ההפעלה מבצעת את המיפוי הראשוני של הדפים המשותפים למרחבי הכתובות של התהליכים (בדרך כלל באמצעות קריאת מערכת), התהליכים יכולים לגשת לזיכרון זה ישירות, באמצעות פקודות מכונה רגילות (load/store), כאילו היה זה הזיכרון הפרטי שלהם. אין צורך במעבר למצב ליבה (kernel mode) עבור כל גישה, מה שהופך את התקשורת למהירה מאוד.