OS PyramidTechnion 234123 · Operating Systemsbasics → exam
Stage 9: Virtual Memory
OS-Spring2021-examAQuestion 3core25 pts

נתון שהמחשב זה עתה עלה (מיד אחרי reboot), שהארכיטקטורה של המחשב היא x86/64bit, שמשתמשת יחידה בשם אליס משתמשת בו כרגע, שכל מה שאליס עשתה עד עתה זה להריץ shell על המחשב (כחלק מתהליך ה- login), שקיים קובץ בשם my_file.txt בתיקיית העבודה הנוכחית של אליס בגודל 32KB, ושהתהליך הראשון שאליס מריצה ב shell מבצע את קטע הקוד הבא: ```c 1. #define PAGE_SIZE (4 * 1024) 2. int main() { 3. int fd = open("./my_file.txt", O_RDONLY); 4. char* buffer = malloc(2 * PAGE_SIZE); 5. read(fd, buffer, 2 * PAGE_SIZE); 6. char* array = (char*) mmap(NULL, 4 * PAGE_SIZE, PROT_READ, MAP_SHARED, fd, 0); 7. char x = array[12]; 8. char z = array[12 + 2 * PAGE_SIZE]; 9. array[12 + 2 * PAGE_SIZE] = x; 10. return 0; 11. } ```

Full original question text (raw OCR)

מערכות הפעלה (234123) שאלה 3 - זיכרון וירטואלי (25 נק') נתון שהמחשב זה עתה עלה (מיד אחרי reboot), שהארכיטקטורה של המחשב היא x86/64bit, שמשתמשת יחידה בשם אליס משתמשת בו כרגע, שכל מה שאליס עשתה עד עתה זה להריץ shell על המחשב (כחלק מתהליך ה- login), שקיים קובץ בשם my_file.txt בתיקיית העבודה הנוכחית של אליס בגודל 32KB, ושהתהליך הראשון שאליס מריצה ב shell מבצע את קטע הקוד הבא: ```c 1. #define PAGE_SIZE (4 * 1024) 2. int main() { 3. int fd = open("./my_file.txt", O_RDONLY); 4. char* buffer = malloc(2 * PAGE_SIZE); 5. read(fd, buffer, 2 * PAGE_SIZE); 6. char* array = (char*) mmap(NULL, 4 * PAGE_SIZE, PROT_READ, MAP_SHARED, fd, 0); 7. char x = array[12]; 8. char z = array[12 + 2 * PAGE_SIZE]; 9. array[12 + 2 * PAGE_SIZE] = x; 10. return 0; 11. } ``` 1. (7 נק') מה המספר המינימלי של מסגרות פיזיות חדשות שמוקצות (בעבור data בלבד, מבלי להתחשב ב- page table) בכל אחת מהשורות הבאות? שורה מספר מסגרות הסבר קצר 3 4 5 6 7 8 9 2. (3 נק') כיצד תשתנה תשובתך לסעיף 1 אם בשורה 6 היה כתוב MAP_PRIVATE במקום MAP_SHARED? צייני באיזה שורות תשובתך הייתה משתנה והסברי. נימוק: 3. (3 נק') כיצד תשתנה תשובתך לסעיף 1 אם מיד כאשר התהליך הנ"ל מסתיים הוא מורץ שוב? (השאלה מתייחסת להרצה השנייה.) נימוק: 4. (6 נק') כאשר מורץ הקוד לראשונה, מה הוא המספר המקסימלי של מסגרות פיזיות חדשות שמוקצות בעבור טבלת הדפים של התהליך? הנחיות: (1) התעלמי ממיפוי המחסנית. לעזרתך בחישוב: הניחי ש(2) הכתובת של buffer (שורה 4) היא 47 39 38 30 29 21 20 12 11 0 000000100 111111111 111111111 111111111 000000000000 (3) והכתובת של array (שורה (6) היא 47 39 38 30 29 21 20 12 11 0 000000000 111111111 111111111 111111111 000000000000 נימוק: 5. (1 נק') הגדירי major page fault. נימוק: 6. (2 נק') מה מספרי השורות בהן מתרחש major page fault? נימוק: 7. (3 נק') כיצד תשתנה תשובתך לסעיף 6 אם בשורה 6 היה כתוב MAP_PRIVATE במקום MAP_SHARED? נימוק:

  1. 1· calculation· 7 ptsVirtual Memory

    (7 נק') מה המספר המינימלי של מסגרות פיזיות חדשות שמוקצות (בעבור data בלבד, מבלי להתחשב ב- page table) בכל אחת מהשורות הבאות? שורה מספר מסגרות הסבר קצר 3 4 5 6 7 8 9

    Virtual-to-physical address translation
  2. 2· short_answer· 3 ptsVirtual Memory

    (3 נק') כיצד תשתנה תשובתך לסעיף 1 אם בשורה 6 היה כתוב MAP_PRIVATE במקום MAP_SHARED? צייני באיזה שורות תשובתך הייתה משתנה והסברי. נימוק:

    Virtual-to-physical address translationSRT / preemptive Gantt constructionPage fault error code classification
  3. 3· short_answer· 3 ptsVirtual Memory

    (3 נק') כיצד תשתנה תשובתך לסעיף 1 אם מיד כאשר התהליך הנ"ל מסתיים הוא מורץ שוב? (השאלה מתייחסת להרצה השנייה.) נימוק:

    Virtual-to-physical address translationSRT / preemptive Gantt constructionPage fault error code classification
  4. 4· calculation· 6 ptsVirtual Memory

    (6 נק') כאשר מורץ הקוד לראשונה, מה הוא המספר המקסימלי של מסגרות פיזיות חדשות שמוקצות בעבור טבלת הדפים של התהליך? הנחיות: (1) התעלמי ממיפוי המחסנית. לעזרתך בחישוב: הניחי ש(2) הכתובת של buffer (שורה 4) היא 000000100 111111111 111111111 111111111 000000000000 47 39 38 30 29 21 20 12 11 0 (3) והכתובת של array (שורה 6) היא 000000000 111111111 111111111 111111111 000000000000 47 39 38 30 29 21 20 12 11 0 נימוק:

    SRT / preemptive Gantt construction
    review:T5·9
  5. 5· short_answer· 1 ptsVirtual Memory

    (1 נק') הגדירי major page fault. נימוק:

    Page fault error code classification
  6. 6· short_answer· 2 ptsVirtual Memory

    (2 נק') מה מספרי השורות בהן מתרחש major page fault? נימוק:

    Page fault error code classification
  7. 7· short_answer· 3 ptsVirtual Memory

    (3 נק') כיצד תשתנה תשובתך לסעיף 6 אם בשורה 6 היה כתוב MAP_PRIVATE במקום MAP_SHARED? נימוק:

    Virtual-to-physical address translationSRT / preemptive Gantt constructionPage fault error code classification

The exam question — original PDF

pages 9, 10, 11

Exactly as it appears on the exam paper.

loading page 9
loading page 10
loading page 11

Built from these components

Ordered basic → advanced. Master the earlier ones first.

L3Virtual-to-physical address translationL3Linux VMA vm_flags interpretationL3Copy-on-write fork memory protectionL3Hard link vs symlink inode behaviorL4SRT / preemptive Gantt constructionL4Page fault error code classificationL4do_page_fault handler reasoning

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.

Lecture 11–12slide 34inodes & *stat syscalls

inodes & *stat syscalls • lstat(2) – Exactly the same as stat(2) if applied to a hard link – But if applied to a symlink, would return the information of this symlink (not to the target of the symlink) – In this case, POSIX says that the only fields within the stat structure that you can portably use are: • st_mode which will specify that the file is a symlink • st_size symlink content length (= length of target filepath) – The value of the rest of the fields could be valid, but it is not specified by POSIX – Notably, it is not specified if a symlink has a corresponding inode • Will be discussed shortly OS (234123) - files 34

Lecture slide — text above is the material (no raster available).
Lecture 13slide 23Reminder: x86 paging

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

Lecture slide — text above is the material (no raster available).
Tutorial 5slide 9דוגמת FCFSaverageResponseTime = (10 + 20 + 30) / 3 = 20כעת נסיר את הנחה 1 ("כל התהליכים רצים למשך אותו זמן")

דוגמת FCFSaverageResponseTime = (10 + 20 + 30) / 3 = 20כעת נסיר את הנחה 1 ("כל התהליכים רצים למשך אותו זמן"). לכל תהליך זמן ריצה משלו.תוכלו לחשוב על דוגמה שבה FCFS אינו יעיל?מערכות הפעלה - תרגול 59כל התהליכים רצים למשך אותו זמן.כל התהליכים מגיעים באותו זמן (t=0).אם תהליך התחיל לרוץ, אז הוא ירוץ עד לסיומו ללא הפסקות.התהליכים משתמשים רק במעבד ולא מבצעים I/O.זמן הריצה של כל התהליכים ידוע מראש.

Tutorial 10slide 19טבלת הדפים (page table)לכל תהליך יש טבלת דפים משלו – מבנה נתונים אשר ממפה בין דפים למסגרות

טבלת הדפים (page table)לכל תהליך יש טבלת דפים משלו – מבנה נתונים אשר ממפה בין דפים למסגרות.ניתן לממש טבלת דפים באמצעות מבני נתונים שונים: מערך פשוט, עצים, טבלאות גיבוב (hash tables), ...עבור כל דף במרחב הזיכרון הווירטואלי של התהליך, יש כניסה בטבלת הדפים אשר מציינת:האם הדף נמצא בזיכרון ובאיזו מסגרת?האם הדף נמצא בדיסק ובאיזה מיקום?האם הדף מעולם לא הוקצה? (כלומר איננו בזיכרון ואיננו בדיסק)טבלת הדפים אחראית לתפקידים נוספים כמו הגנת גישה.למשל: טבלת הדפים מסמנת דפים לקריאה בלבד ומונעת גישות כתיבה.19מערכות הפעלה - תרגול 10

Tutorial 10slide 39סיכום: תהליך התרגום במעבדי אינטל39the CPU searches the TLBhitmissthe CPU walks the page tablecompletedpage faultphysi...

סיכום: תהליך התרגום במעבדי אינטל39the CPU searches the TLBhitmissthe CPU walks the page tablecompletedpage faultphysical addressvirtual addressthe OS serves the page faultמערכות הפעלה - תרגול 10

Tutorial 11slide 2סיכום השיעור שעבר2the CPU searches the TLBhitmissthe CPU walks the page tablecompletedpage faultphysical addressvirtu...

סיכום השיעור שעבר2the CPU searches the TLBhitmissthe CPU walks the page tablecompletedpage faultphysical addressvirtual addressthe OS serves the page faultמערכות הפעלה - תרגול 10

Tutorial 11slide 3מה נלמד היום?3the CPU searches the TLBhitmissthe CPU walks the page tablecompletedpage faultphysical addressvirtual a...

מה נלמד היום?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

Tutorial 11slide 17הרשאות של אזור זיכרוןהדגלים המציינים את הרשאות האזור נשמרים בשדה vm_flags והם מאפשרים לגרעין לסווג גישות חוקיות ולא ח...

הרשאות של אזור זיכרוןהדגלים המציינים את הרשאות האזור נשמרים בשדה 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

Tutorial 11slide 23מרחבי זיכרון וקריאות מערכתחוטים הנוצרים ע"י קריאת המערכתclone() משתפים את מרחב הזיכרון ע"י הצבעה לאותו מתאר מרחב הזיכ...

מרחבי זיכרון וקריאות מערכתחוטים הנוצרים ע"י קריאת המערכתclone() משתפים את מרחב הזיכרון ע"י הצבעה לאותו מתאר מרחב הזיכרון של תהליך האב.יש להגדיל את מונה השיתוף (mm_users) של מתאר מרחב הזיכרון של תהליך האב.קריאת המערכת execv() ודומותיה טוענות תהליך חדש ולכן הן משחררות את מרחב הזיכרון ומקצות אחד חדש.קריאת המערכתfork() מקצה לתהליך הבן מרחב זיכרון משלו.במקרה שכזה צריך להעתיק את מרחב הזיכרון של האב לזה של הבן.בפועל, בדרך-כלל אין באמת העתקה בזכות מנגנון copy-on-write.23מערכות הפעלה - תרגול 10

Tutorial 11slide 27הפתרון: copy-on-write (COW)הרעיון של מנגנון copy-on-write (COW) הוא:דפים הניתנים לכתיבה שאינם יכולים להיות משותפים (ל...

הפתרון: copy-on-write (COW)הרעיון של מנגנון copy-on-write (COW) הוא:דפים הניתנים לכתיבה שאינם יכולים להיות משותפים (לדוגמה, המחסנית), מוגדרים בתחילה כמשותפים אבל מועתקים לעותק פרטי כאשר אחד התהליכים השותפים (האב או הבן) מנסה לכתוב אליהם לראשונה.שאר הדפים (כדוגמת דפי קוד או דפי נתונים לקריאה בלבד) הופכים למשותפים בין מרחבי הזיכרון של האב והבן.מנגנון COW פותר את שתי הבעיות שהוצגו קודם:COW מקטין את זמן הביצוע של fork() כי הוא "פורס לתשלומים" את ההעתקה של כל מרחב הזיכרון להרבה העתקות קטנות בגודל דף שיתבצעו בעתיד---בכל כתיבה ראשונה לדף שאינו משותף.במידה ותהליך הבן יבצע מיד execv(), מרחב הזיכרון שלו יימחק וכך תיחסך רוב פעולת ההעתקה.27מערכות הפעלה - תרגול 10

Tutorial 11slide 28father processpage tablememory regionsדוגמה: לפני קריאת מערכת fork()28…PTE #11r/w = 1…frame #250count == 1מערכות הפעל...

father processpage tablememory regionsדוגמה: לפני קריאת מערכת fork()28…PTE #11r/w = 1…frame #250count == 1מערכות הפעלה - תרגול 10region #1VM_MAYWRITE=1VM_WRITE=1region #2

Tutorial 11slide 37COW: טיפול ב-page faultתרחיש הטיפול: האב או הבן מנסים לכתוב לדף מוגן ע"י COW

COW: טיפול ב-page faultתרחיש הטיפול: האב או הבן מנסים לכתוב לדף מוגן ע"י COW.המעבד ניגש לסיביות הבקרה ב-PTE של הדף, ומגלה כי r/w כבוי.המעבד יוצר חריגת דף (page fault).הגרעין מטפל בחריגה, ובודק שהדף שייך לאחד מאזורי הזיכרון ושהגישה בכלל חוקית (דגל VM_WRITE דלוק במתאר האזור).הגרעין בודק את ערך המונה השיתוף של המסגרת:אם count > 1, מקצים מסגרת חדשה, מעתיקים אליה את המסגרת המקורית, ומצביעים את הדף למסגרת החדשה.במסגרת הישנה מבוצע count-- .במסגרת החדשה מוצב count = 1 .בעותק החדש מאופשרת הכתיבה.אחרת (count == 1), הגרעין פשוט מאפשר כתיבה בדף ע"י הדלקת הדגל r/w.37מערכות הפעלה - תרגול 10

Tutorial 13slide 13בלינוקס יש שני סוגי קישורים (links)soft / symbolic linkln -s src dstקישור סימבולי הוא קובץ חדש עם inode נפרד מזה של ה...

בלינוקס יש שני סוגי קישורים (links)soft / symbolic linkln -s src dstקישור סימבולי הוא קובץ חדש עם inode נפרד מזה של הקובץ המקורי.כתיבה דרך הקישור כותבת לקובץ אליו הוא מצביע.מחיקת הקישור (באמצעות הפקודה rm) לא תמחק את הקובץ המוצבע.אפשר ליצור קישורים סימבוליים גם לקובץ שלא קיים.hard linkln src dstקישור קשיח הוא שם נרדף לקובץ המקורי כי הוא מצביע ישירות ל-inode של הקובץ המקורי.כתיבה דרך הקישור כותבת לקובץ אליו הוא מצביע.מחיקת הקישור תקטין את מונה הקישורים של הקובץ (כפי שנשמר ב-inode).הקובץ יימחק מהדיסק רק כאשר כל ה-hard links אליו יימחקו.מערכות הפעלה - תרגול 1213

Tutorial 13slide 19>> rm /A/helloמערכות הפעלה - תרגול 1219inode #2type=dirdatanameinode #A5B7inode #5type=dirdatanameinode #…………inode #1...

>> rm /A/helloמערכות הפעלה - תרגול 1219inode #2type=dirdatanameinode #A5B7inode #5type=dirdatanameinode #…………inode #13type=soft_linkdatainode #7type=dirdatanameinode #soft13……data block/A/helloקישור "שבור"!dangling link

Ask Gemini
OS-Spring2021-examA · Q3 — question + its material already loaded
Pick a shortcut above or ask anything about this question.
The exam text, the skills it tests, and the exact slides are already in context.