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

סעיף זה מתייחס למערכת ההפעלה Linux.
א. (8 נק') בעת ביצוע fork מבצעים (COW (Copy on Write. לאחר מכן, מאפשרים לתהליך הבן לרוץ לפני תהליך האב. תארו יתרון עיקרי וחיסרון עיקרי אחד בשיטה זו.

ב. (8 נק') מהם היתרונות העיקריים בהחלפת הקשר (context switch) בין שני תהליכים המשתפים זיכרון לעומת החלפת הקשר בין שני תהליכים שאינם משתפים זיכרון?
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד 852018סמסטר ב
forkexecתהליכיםתהליכוניםניהול זיכרוןזיכרוןהחלפת הקשרTLBמטמוןליבה
א. חשבו על התרחיש הנפוץ ביותר לאחר קריאת fork, ומה קורה אם תרחיש זה לא מתממש. ב. התמקדו בחלק היקר ביותר של פעולת החלפת הקשר, הקשור לניהול זיכרון, וכיצד זיכרון משותף משפיע עליו.
א.
יתרון: היתרון העיקרי נובע מהתבנית הנפוצה של שימוש ב-fork ולאחר מכן מיד ב-exec. כאשר תהליך הבן רץ ראשון ומבצע קריאת מערכת exec, הוא מחליף את כל מרחב הכתובות שלו בזה של התוכנית החדשה. כתוצאה מכך, אין צורך להעתיק בפועל את דפי הזיכרון של תהליך האב שתויגו במנגנון Copy-on-Write (COW). בכך נחסך זמן יקר ומשאבים שהיו מתבזבזים על העתקת זיכרון שלעולם לא היה נעשה בו שימוש על ידי הבן, והאב לא צריך להמתין לסיום ההעתקה.


חיסרון: החיסרון העיקרי מתבטא במצב של "התחייבות יתר על זיכרון" (memory overcommitment). מערכת ההפעלה מאשרת את קריאת ה-fork בהנחה שהזיכרון יתפנה בקרוב על ידי exec. אם תהליך הבן אינו קורא ל-exec ומתחיל לבצע כתיבות לזיכרון, הוא יגרום לסדרת page faults שיאלצו את הליבה להקצות דפים פיזיים חדשים ולהעתיק את תוכן דפי האב. במערכת עמוסה, ייתכן שלא יהיה מספיק זיכרון פיזי פנוי כדי לספק את כל דרישות ההעתקה הללו. מצב זה עלול להוביל להפעלת מנגנון ה-OOM (Out-Of-Memory) killer, שמסיים תהליכים באופן כפוי כדי לפנות זיכרון, וגורם לחוסר יציבות במערכת.

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


1. יעילות TLB: החלק היקר ביותר בהחלפת הקשר בין תהליכים שאינם משתפים זיכרון הוא לרוב הצורך לרוקן את ה-TLB (Translation Lookaside Buffer). ה-TLB הוא מטמון מהיר החומרתי של המעבד המכיל תרגומי כתובות וירטואליות לפיזיות. כאשר עוברים לתהליך עם מרחב כתובות שונה לחלוטין, כל הרשומות ב-TLB הופכות ללא רלוונטיות ויש לנקות אותו (TLB flush). פעולה זו גורמת לכך שהתהליך החדש יסבול מ-TLB misses רבים בתחילת ריצתו, מה שפוגע בביצועים. לעומת זאת, בעת מעבר בין תהליכים המשתפים זיכרון (לדוגמה, תהליכונים באותו תהליך), חלק גדול ממרחב הכתובות משותף. כתוצאה מכך, רשומות רבות ב-TLB נותרות תקפות ואין צורך לנקות את כולו. הדבר חוסך את התקורה של ניקוי ה-TLB ומילואו מחדש.

2. יעילות מטמון המעבד (CPU Cache): בדומה ל-TLB, גם מטמוני המעבד (L1, L2) עשויים להכיל נתונים והוראות רלוונטיים מהאזורים המשותפים בזיכרון. כאשר ההקשר מוחלף בין תהליכים שאינם משתפים זיכרון, המידע במטמון לרוב אינו רלוונטי לתהליך החדש, מה שמוביל לסדרה של cache misses יקרים. בין תהליכים המשתפים זיכרון, יש סיכוי גבוה יותר שהמידע במטמון יהיה שימושי גם עבור התהליך השני, מה שמפחית את מספר ה-cache misses ומשפר את הביצועים מיד לאחר החלפת ההקשר.
שאלת מבחן במערכות הפעלה - האוניברסיטה הפתוחה 2018 | prepd