מוקה קנתה מחשב ישן עם מערכת הפעלה לינוקס וארכיטקטורה דומה לזאת שנלמדה בקורס. הכתובות הוירטואליות הינן בגודל 16-bit והכתובות הפיזיות הינן בגודל 32-bit. החלוקה של הכתובת הוירטואלית היא כזאת: Virtual Page Number bit-4 bit-4 OFFSET bit-8 15 12 11 87 0 נתון שגודל דף (PAGE) שווה לגודל מסגרת (FRAME), וגם שווה לגודל כל טבלה בטבלת הדפים (PAGE TABLE). הערה: בכל סעיף שלא מתייחס לכך באופן מפורש, ניתן להניח שהמחשב הזה תקין.
Full original question text (raw OCR)
שאלה 2 - זיכרון וירטואלי (25 נק') מוקה קנתה מחשב ישן עם מערכת הפעלה לינוקס וארכיטקטורה דומה לזאת שנלמדה בקורס. הכתובות הוירטואליות הינן בגודל 16-bit והכתובות הפיזיות הינן בגודל 32-bit. החלוקה של הכתובת הוירטואלית היא כזאת: Virtual Page Number bit-4 bit-4 OFFSET bit-8 15 12 11 87 0 נתון שגודל דף (PAGE) שווה לגודל מסגרת (FRAME), וגם שווה לגודל כל טבלה בטבלת הדפים (PAGE TABLE). הערה: בכל סעיף שלא מתייחס לכך באופן מפורש, ניתן להניח שהמחשב הזה תקין. סעיף 1 (2 נק') כמה דפים יכולים להיות לתהליך לכל היותר? פרט\י את החישוב בקצרה. תשובה סופית: נימוק: סעיף 2 (2 נק') טוקיו, בת דודה של מוקה, טוענת שמספר המסגרות בזיכרון הפיזי שווה למספר הדפים שחישבתם\ן בסעיף הקודם. מוקה לא מסכימה וטוענת שמספר המסגרות שונה ממספר הדפים. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) אם מוקה צודקת, ציין\י את מספר המסגרות. נמק\י את תשובתך בקצרה. נימוק: סעיף 3 (2 נק') טוקיו למדה בקורס מערכות הפעלה שהרגיסטר CR3 מכיל את הכתובת לשורש טבלת הדפים של התהליך הרץ. טוקיו טוענת שהכתובת השמורה ב CR3 הינה כתובת פיזית, אבל מוקה טוענת שהיא וירטואלית. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) מה הבעיה העיקרית באופציה הלא נכונה? נימוק: סעיף 4 (3 נק') מוקה וטוקיו רוצות לדעת את הגודל של ה PTE, ולכן הן פנו אליך! מהו הגודל של PTE? מהו הגודל המקסימלי שניתן להקצות לדגלים בכל PTE? פרט\י את החישוב. הנחה: אין בזבוז בדפי טבלת הדפים (כלומר הם מכוסים במלואם ע"י PTES) תשובה סופית: גודל ה PTE: , גודל הדגלים המקסימלי:_ נימוק: סעיף 5 (6 נק') בהינתן שהרגיסטר CR3 מכיל את הערך 0xBB00, ונתונות גם הרישות (הPTEs הראשונים) של חלק מטבלאות הדפים: הנחה 1: הערכים המוצגים בטבלאות הבאות הינן רק הframe number, כלומר לא מוצגים פה דגלים או ביטים אחרים המשומשים לניהול המערכת. הנחה 2: אין מטמונים מכל סוג (בסעיף זה בלבד). הנחה 3: ללא קשר לתוצאת סעיף 4, הנח\י בסעיף זה שגודל הFN הינו 1BYTE=8bit. טבלת הדפים טבלת הדפים טבלת הדפים | טבלת הדפים | טבלת הדפים שנמצאת בכתובת שנמצאת בכתובת שנמצאת בכתובת שנמצאת בכתובת שנמצאת בכתובת הפיזית 0xAB00: הפיזית 0x000 :0x8000 הפיזית : 0xBB00 0x4000 הפיזית 0xAB 0x40 0xC0 0x40 0x20 OxAA 0x80 0xC4 0xC0 0x30 0x50 0x48 0x65 0x80 0x31 0x54 0x44 0x99 OxAB 0x32 א. מה היא הכתובת הפיזית (בבסיס hex) שמתאימה לכתובת הוירטואלית 0x1325? ב. כמה גישות לזיכרון יהיו במהלך התרגום (לא כולל הגישה למידע הסופי)? ג. סמנ\י 'א' מעל הטבלאות שהשתתפו בתרגום. הערה: ספק\י חישוב מפורט לחלק הראשון, והסבר מתאים לחלק השני. תזכורת: ספרה של HEX מקודדת ל 4 סיביות, למשל: 0100 0011 0010 0001 = 0x1234 תשובה סופית: הכתובת הפיזית: , מספר הגישות: נימוק: סעיף 6 (3 נק') מוקה טוענת שהזיכרון הפיזי שלה מבוזבז ושהיא לא יכולה לנצל אותו במלואו, אבל טוקיו טוענת שהיא טועה. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) אם טוקיו צודקת, תאר\י כיצד ניתן לנצל את מרחב הזיכרון הפיזי במלואו? אחרת, הסבר\י בקצרה. נימוק: סעיף 7 (3 נק') טוקיו טוענת שלא יתכן מחשב שבו הזיכרון הווירטואלי גדול יותר מהפיזי, מוקה לא הסכימה וטענה זה מצב תקין. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) אם טוקיו צודקת אז הסבר\י מדוע, ואם מוקה צודקת תאר\י איך זה אפשרי. נימוק: סעיף 8 (4 נק') מוקה רוצה לאפשר שימוש בדפים גדולים, בלי ביצוע שינויים למבנה טבלת הדפים (כלומר באופן דומה למנגנון שראינו בתרגולים), איזה גדלים של דפים ניתן לאפשר? נמק\י למה אלו כל האופציות האפשריות. תשובה סופית: נימוק: סעיף בונוס (4 נק') איזה מהדפים הבאים יתכן שיצטרך הגנה ב COW? הקף\י את התשובות הנכונות (יתכן שיש רק תשובה אחת נכונה) 1. דפים בלי הדגל VM_MAYWRITE במתאר אזור הזכירון המתאים. 2. דפים בלי הדגל VM_WRITE במתאר אזור הזכירון המתאים. 3. דפים עם הדגל VM_SHARE במתאר אזור הזכירון המתאים. 4. דפים עם הדגל VM_MAYREAD במתאר אזור הזכירון המתאים. 5. אף אחת מהתשובות אינה נכונה. הסבר\י בקצרה למה כל תשובה היא נכונה\לא נכונה.
סעיף 1 (2 נק') כמה דפים יכולים להיות לתהליך לכל היותר? פרט\י את החישוב בקצרה. תשובה סופית: נימוק:
fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretationסעיף 2 (2 נק') טוקיו, בת דודה של מוקה, טוענת שמספר המסגרות בזיכרון הפיזי שווה למספר הדפים שחישבתם\ן בסעיף הקודם. מוקה לא מסכימה וטוענת שמספר המסגרות שונה ממספר הדפים. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) אם מוקה צודקת, ציין\י את מספר המסגרות. נמק\י את תשובתך בקצרה. נימוק:
fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretationסעיף 3 (2 נק') טוקיו למדה בקורס מערכות הפעלה שהרגיסטר CR3 מכיל את הכתובת לשורש טבלת הדפים של התהליך הרץ. טוקיו טוענת שהכתובת השמורה ב CR3 הינה כתובת פיזית, אבל מוקה טוענת שהיא וירטואלית. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) מה הבעיה העיקרית באופציה הלא נכונה? נימוק:
fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretationסעיף 4 (3 נק') מוקה וטוקיו רוצות לדעת את הגודל של ה PTE, ולכן הן פנו אליך! מהו הגודל של PTE? מהו הגודל המקסימלי שניתן להקצות לדגלים בכל PTE? פרט\י את החישוב. הנחה: אין בזבוז בדפי טבלת הדפים (כלומר הם מכוסים במלואם ע"י PTES) תשובה סופית: גודל ה PTE: , גודל הדגלים המקסימלי:_ נימוק:
fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretationסעיף 5 (6 נק') בהינתן שהרגיסטר CR3 מכיל את הערך 0xBB00, ונתונות גם הרישות (הPTEs הראשונים) של חלק מטבלאות הדפים: הנחה 1: הערכים המוצגים בטבלאות הבאות הינן רק הframe number, כלומר לא מוצגים פה דגלים או ביטים אחרים המשומשים לניהול המערכת. הנחה 2: אין מטמונים מכל סוג (בסעיף זה בלבד). הנחה 3: ללא קשר לתוצאת סעיף 4, הנח\י בסעיף זה שגודל הFN הינו 1BYTE=8bit. טבלת הדפים טבלת הדפים טבלת הדפים | טבלת הדפים | טבלת הדפים שנמצאת בכתובת שנמצאת בכתובת שנמצאת בכתובת שנמצאת בכתובת שנמצאת בכתובת הפיזית 0xAB00: הפיזית 0x000 :0x8000 הפיזית : 0xBB00 0x4000 הפיזית 0xAB 0x40 0xC0 0x40 0x20 OxAA 0x80 0xC4 0xC0 0x30 0x50 0x48 0x65 0x80 0x31 0x54 0x44 0x99 OxAB 0x32 א. מה היא הכתובת הפיזית (בבסיס hex) שמתאימה לכתובת הוירטואלית 0x1325? ב. כמה גישות לזיכרון יהיו במהלך התרגום (לא כולל הגישה למידע הסופי)? ג. סמנ\י 'א' מעל הטבלאות שהשתתפו בתרגום. הערה: ספק\י חישוב מפורט לחלק הראשון, והסבר מתאים לחלק השני. תזכורת: ספרה של HEX מקודדת ל 4 סיביות, למשל: 0100 0011 0010 0001 = 0x1234 תשובה סופית: הכתובת הפיזית: , מספר הגישות: נימוק:
libc syscall wrapper caching pitfallsVirtual-to-physical address translationסעיף 6 (3 נק') מוקה טוענת שהזיכרון הפיזי שלה מבוזבז ושהיא לא יכולה לנצל אותו במלואו, אבל טוקיו טוענת שהיא טועה. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) אם טוקיו צודקת, תאר\י כיצד ניתן לנצל את מרחב הזיכרון הפיזי במלואו? אחרת, הסבר\י בקצרה. נימוק:
fork/exec address-space semanticsסעיף 7 (3 נק') טוקיו טוענת שלא יתכן מחשב שבו הזיכרון הווירטואלי גדול יותר מהפיזי, מוקה לא הסכימה וטענה זה מצב תקין. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) אם טוקיו צודקת אז הסבר\י מדוע, ואם מוקה צודקת תאר\י איך זה אפשרי. נימוק:
fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretationסעיף 8 (4 נק') מוקה רוצה לאפשר שימוש בדפים גדולים, בלי ביצוע שינויים למבנה טבלת הדפים (כלומר באופן דומה למנגנון שראינו בתרגולים), איזה גדלים של דפים ניתן לאפשר? נמק\י למה אלו כל האופציות האפשריות. תשובה סופית: נימוק:
fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretationסעיף בונוס (4 נק') איזה מהדפים הבאים יתכן שיצטרך הגנה ב COW? הקף\י את התשובות הנכונות (יתכן שיש רק תשובה אחת נכונה) 1. דפים בלי הדגל VM_MAYWRITE במתאר אזור הזכירון המתאים. 2. דפים בלי הדגל VM_WRITE במתאר אזור הזכירון המתאים. 3. דפים עם הדגל VM_SHARE במתאר אזור הזכירון המתאים. 4. דפים עם הדגל VM_MAYREAD במתאר אזור הזכירון המתאים. 5. אף אחת מהתשובות אינה נכונה. הסבר\י בקצרה למה כל תשובה היא נכונה\לא נכונה.
Linux VMA vm_flags interpretationCopy-on-write fork memory protection
The exam question — original PDF
pages 5, 6, 7, 8Exactly as it appears on the exam paper.
Built from these components
Ordered basic → advanced. Master the earlier ones first.
Review the material
Read these before you answer — each verified slide teaches a component this question tests, and nothing from an unrelated topic is included. Tutorial slides show the actual slide image.
Reminder: x86 paging Need to translate from: virtual addresses to: physical addresses Translation is cached on-chip TLB (Translation Lookaside Buffer) Page table is read & modified by HW (Access/dirty bit) Each process has its own virtual address space Page table pointed to by CR3 register During context switch the OS updates the value of CR3. Page table is a hierarchical structure OS – virtualization 23
אחרי fork()parentint main() { int x = 0; pid_t p = fork(); if (p == 0) { x = 1; } else { x = 2; }}sonint main() { int x = 0; pid_t p = fork(); if (p == 0) { x = 1; } else { x = 2; }}מערכות הפעלה - תרגול 210
הדפסה מתואמת למסךשימוש ב-wait() יכול לפתור את הבעיה שראינו קודם כאשר מדפיסים למסך במקביל משני תהליכים:int main() { pid_t p = fork(); if (p > 0) { // parent waits for child wait(NULL); } printf(“hello”); return 0;}מערכות הפעלה - תרגול 215
קריאות המערכת getpid(), getppid()pid_t getpid();קריאת מערכת המחזירה לתהליך הקורא את ה-pid של עצמו.pid_t getppid();קריאת מערכת המחזירה את ה-PID של תהליך האב של התהליך הקורא.שאלה: מה המשמעות של getppid() == 1 עבור תהליך משתמש טיפוסי?תשובה: תהליך האב הוא init. קורה למשל אם תהליך הבן יתום.מערכות הפעלה - תרגול 222
טבלת הדפים (page table)לכל תהליך יש טבלת דפים משלו – מבנה נתונים אשר ממפה בין דפים למסגרות.ניתן לממש טבלת דפים באמצעות מבני נתונים שונים: מערך פשוט, עצים, טבלאות גיבוב (hash tables), ...עבור כל דף במרחב הזיכרון הווירטואלי של התהליך, יש כניסה בטבלת הדפים אשר מציינת:האם הדף נמצא בזיכרון ובאיזו מסגרת?האם הדף נמצא בדיסק ובאיזה מיקום?האם הדף מעולם לא הוקצה? (כלומר איננו בזיכרון ואיננו בדיסק)טבלת הדפים אחראית לתפקידים נוספים כמו הגנת גישה.למשל: טבלת הדפים מסמנת דפים לקריאה בלבד ומונעת גישות כתיבה.19מערכות הפעלה - תרגול 10
סיכום: תהליך התרגום במעבדי אינטל39the CPU searches the TLBhitmissthe CPU walks the page tablecompletedpage faultphysical addressvirtual addressthe OS serves the page faultמערכות הפעלה - תרגול 10
סיכום השיעור שעבר2the CPU searches the TLBhitmissthe CPU walks the page tablecompletedpage faultphysical addressvirtual addressthe OS serves the page faultמערכות הפעלה - תרגול 10
מה נלמד היום?3the CPU searches the TLBhitmissthe CPU walks the page tablecompletedpage faultphysical addressvirtual addresskill the process or the entire systemfix the page table and retrythe OS serves the page faultinvalidvalidמערכות הפעלה - תרגול 10
הרשאות של אזור זיכרוןהדגלים המציינים את הרשאות האזור נשמרים בשדה vm_flags והם מאפשרים לגרעין לסווג גישות חוקיות ולא חוקיות לדפים באזור.VM_READ, VM_WRITE, VM_EXEC – האם מותר לקרוא/לכתוב/לבצע נתונים בדפים באזור.VM_MAYREAD, VM_MAYWRITE, VM_MAYEXEC – "הרשאת הרשאה" לכל אחת מההרשאות הנ"ל.לדוגמה VM_MAYWRITE קובע האם מותר להדליק את VM_WRITE.הדגלים האלה קשורים לקריאת המערכת mprotect() – מעבר לחומר הקורס.VM_SHARED – האם צריך לשתף דפים באזור זה עם תהליכי בן.VM_LOCKED – אסור לפנות את הדפים באזור מהזיכרון לדיסק.17מערכות הפעלה - תרגול 10
מרחבי זיכרון וקריאות מערכתחוטים הנוצרים ע"י קריאת המערכתclone() משתפים את מרחב הזיכרון ע"י הצבעה לאותו מתאר מרחב הזיכרון של תהליך האב.יש להגדיל את מונה השיתוף (mm_users) של מתאר מרחב הזיכרון של תהליך האב.קריאת המערכת execv() ודומותיה טוענות תהליך חדש ולכן הן משחררות את מרחב הזיכרון ומקצות אחד חדש.קריאת המערכתfork() מקצה לתהליך הבן מרחב זיכרון משלו.במקרה שכזה צריך להעתיק את מרחב הזיכרון של האב לזה של הבן.בפועל, בדרך-כלל אין באמת העתקה בזכות מנגנון copy-on-write.23מערכות הפעלה - תרגול 10
הפתרון: copy-on-write (COW)הרעיון של מנגנון copy-on-write (COW) הוא:דפים הניתנים לכתיבה שאינם יכולים להיות משותפים (לדוגמה, המחסנית), מוגדרים בתחילה כמשותפים אבל מועתקים לעותק פרטי כאשר אחד התהליכים השותפים (האב או הבן) מנסה לכתוב אליהם לראשונה.שאר הדפים (כדוגמת דפי קוד או דפי נתונים לקריאה בלבד) הופכים למשותפים בין מרחבי הזיכרון של האב והבן.מנגנון COW פותר את שתי הבעיות שהוצגו קודם:COW מקטין את זמן הביצוע של fork() כי הוא "פורס לתשלומים" את ההעתקה של כל מרחב הזיכרון להרבה העתקות קטנות בגודל דף שיתבצעו בעתיד---בכל כתיבה ראשונה לדף שאינו משותף.במידה ותהליך הבן יבצע מיד execv(), מרחב הזיכרון שלו יימחק וכך תיחסך רוב פעולת ההעתקה.27מערכות הפעלה - תרגול 10
father processpage tablememory regionsדוגמה: לפני קריאת מערכת fork()28…PTE #11r/w = 1…frame #250count == 1מערכות הפעלה - תרגול 10region #1VM_MAYWRITE=1VM_WRITE=1region #2
COW: טיפול ב-page faultתרחיש הטיפול: האב או הבן מנסים לכתוב לדף מוגן ע"י COW.המעבד ניגש לסיביות הבקרה ב-PTE של הדף, ומגלה כי r/w כבוי.המעבד יוצר חריגת דף (page fault).הגרעין מטפל בחריגה, ובודק שהדף שייך לאחד מאזורי הזיכרון ושהגישה בכלל חוקית (דגל VM_WRITE דלוק במתאר האזור).הגרעין בודק את ערך המונה השיתוף של המסגרת:אם count > 1, מקצים מסגרת חדשה, מעתיקים אליה את המסגרת המקורית, ומצביעים את הדף למסגרת החדשה.במסגרת הישנה מבוצע count-- .במסגרת החדשה מוצב count = 1 .בעותק החדש מאופשרת הכתיבה.אחרת (count == 1), הגרעין פשוט מאפשר כתיבה בדף ע"י הדלקת הדגל r/w.37מערכות הפעלה - תרגול 10
חריגת דף (page fault)החומרה מתריעה באמצעות חריגת דף על:גישה לדף שאינו נמצא בזיכרון, כלומר הביט present==0 בכניסה המתאימה בטבלת הדפים.גישה לא חוקית (שלא לפי ההרשאות בטבלת הדפים) לדף שנמצא בזיכרון, למשל ניסיון כתיבה לדף שמותר לקריאה בלבד.חריגת דף מפעילה את שגרת הטיפול הממומשת בפונקציית הגרעין do_page_fault().בסיום הטיפול בחריגה מבוצעת מחדש ההוראה שגרמה לה.אלא אם כן, כמובן, הטיפול בחריגה הורג את התהליך.43מערכות הפעלה - תרגול 10
The exam text, the skills it tests, and the exact slides are already in context.