OS PyramidTechnion 234123 · Operating Systemsbasics → exam
the pyramid
Stage 9 / 10 · Advanced Systems

Virtual Memoryhigh-yield

Virtual Memory is a core OS concept that abstracts physical memory, providing each process with a large, private address space. Mastering virtual address translation, page table structures, and the role of the TLB is crucial. This topic is frequently tested to ensure understanding of memory protection, efficient resource utilization, and the OS's role in managing memory.

Where to learn it

lectureLecture 9
44 slides
lectureLecture 10a
30 slides
lectureLecture 10b
19 slides
lectureLecture 13
45 slides
Start with slides 2, 3, 4, 5, 6
tutorialTutorial 10 · virtual memory hw
51 slides
tutorialTutorial 11 · virtual memory os
46 slides

How to study it

  • Thoroughly understand the virtual-to-physical address translation process, including multi-level page tables and the TLB's function.
  • Practice classifying and explaining page faults (e.g., minor, major, protection faults) and the OS's `do_page_fault` logic.
  • Work through examples of `page_table_walk` and `tlb_miss_calc` problems, as these are common exam archetypes.

What the exam asks

Exam questions typically involve tracing virtual address translations through page tables and the TLB, calculating TLB hit/miss rates, or analyzing scenarios involving page faults and memory protection (e.g., CoW, VMA flags).

The components, basic → advanced

These are the atomic skills this stage is built from. Learn them in this order — later ones assume the earlier ones.

L3 · applied
Virtual-to-physical address translation
L3 · applied
Linux VMA vm_flags interpretation
needs first: virtual address translation
L3 · applied
Copy-on-write fork memory protection
needs first: vma flags, fork exec semantics
L4 · advanced
Multi-level page table walk
needs first: virtual address translation
L4 · advanced
Page fault error code classification
needs first: vma flags
L4 · advanced
TLB miss and page walk cost
needs first: virtual address translation
L4 · advanced
do_page_fault handler reasoning
needs first: page fault classification, cow fork protection

Exam subsections in this stage (136 parts across 22 questions)

2018A_Winter_BQ4core10 parts here

חלק 4 - זיכרון וירטואלי

  1. 16· mcq· 4 pts

    (4 נק') נניח כי הגרעין לא פינה שום דף מהזיכרון לדיסק. לאחר מכן תהליך A קורא נתון כלשהו מהדף P. לאילו מבנים (בחומרה ובתוכנה) המעבד ומערכת ההפעלה ניגשים? a. מטמון הדפים (page cache). b. טבלת הדפים(page table c. הדיסק.

    libc syscall wrapper caching pitfallsVirtual-to-physical address translation
  2. נימוק· short_answer

    (זכרו לציין את המבנים הן עבור המעבד והן עבור מערכת ההפעלה):

    libc syscall wrapper caching pitfalls
  3. 17· mcq· 4 pts

    (4 נק') נניח כי הגרעין פינה את הדף P ממרחב הזיכרון של A. לאחר מכן תהליך A קורא נתון כלשהו מהדף P. לאילו מבנים (בחומרה ובתוכנה) המעבד ומערכת ההפעלה ניגשים? a. מטמון הדפים (page cache) b. טבלת הדפים .page table c. הדיסק.

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsVirtual-to-physical address translation
  4. נימוק· short_answer

    (זכרו לציין את המבנים הן עבור המעבד והן עבור מערכת ההפעלה)

    libc syscall wrapper caching pitfalls
  5. 18· mcq· 4 pts

    (4 נק') נניח כי הגרעין פינה את הדף P ממרחב הזיכרון של A. לאחר מכן תהליך B קורא נתון כלשהו מהדף P. לאילו מבנים (בחומרה ובתוכנה) המעבד ומערכת ההפעלה ניגשים? a. מטמון הדפים (page cache). b. טבלת הדפים(page table c. הדיסק.

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsVirtual-to-physical address translation
  6. נימוק· short_answer

    (זכרו לציין את המבנים הן עבור המעבד והן עבור מערכת ההפעלה):

    libc syscall wrapper caching pitfalls
  7. 19· mcq· 4 pts

    (4 נק') כעת נניח כי התהליך A הוא האב של תהליך B, וכי הדף P הוא דף באיזור ניתן לכתיבה שאינו ניתן לשיתוף. במילים אחרות, שני התהליכים מצביעים למסגרת F בגלל מנגנון COW. כעת תהליך האב A ניגש ל-P לצורך כתיבה ולאחר מכן תהליך הבן B מבצע את אותה הפעולה. איזו מבין שתי הפעולות תיקח יותר זמן? a. הגישה של תהליך האב A. b. הגישה של תהליך הבן B. c. לא ניתן לקבוע.

    Copy-on-write fork memory protection
  8. נימוק· short_answer

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsCopy-on-write fork memory protection
  9. 20· mcq· 4 pts

    (4 נק') בהמשך לסעיף הקודם, אילו גישות יגרמו לחריגת דף (page fault)? a. הגישה של תהליך האב A. b. הגישה של תהליך הבן B. c. שתי הגישות. d. לא ניתן לקבוע.

    Page fault error code classification
  10. נימוק· short_answer

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsCopy-on-write fork memory protection
2019B_Spring_AQ3core9 parts here

זיכרון וירטואלי

  1. 1· short_answer· 3 pts

    בקוד A יש בעיה של פרגמנטציה פנימית במרחב הזיכרון הווירטואלי - נבון / לא נכון. הסבירו.

    fork/exec address-space semantics
  2. 2· short_answer· 3 pts

    בקוד A יש בעיה של פרגמנטציה פנימית במרחב הזיכרון הפיזי - נבון / לא נכון. הסבירו.

    fork/exec address-space semantics
  3. 3· short_answer· 3 pts

    בהתייחס לקוד A: במידה ו-malloc() תמומש באמצעות קריאת המערכת mmap() בלבד, לא תהיה בעיית פרגמנטציה פנימית במרחב הפיזי - נכון / לא נכון. הסבירו.

    fork/exec address-space semanticslibc syscall wrapper caching pitfalls
  4. 4· short_answer· 2 pts

    המערך array (בקוד B) בהכרח מוקצה באופן רציף במרחב הזיכרון הווירטואלי - נכון / לא נכון.

    fork/exec address-space semanticsSRT / preemptive Gantt construction
  5. 5· short_answer· 2 pts

    המערך array (בקוד B) בהכרח מוקצה באופן רציף במרחב הזיכרון הפיזי - נכון / לא נכון.

    fork/exec address-space semanticsSRT / preemptive Gantt construction
  6. 6· short_answer· 3 pts

    סארי טוען שישנה בעיית אבטחה בקוד B, מכיוון שהיא מוותרת על המעבד (sched_yield) דבר המאפשר לתהליך אחר לגשת למערך array - נבון / לא נכון. הסבירו.

    SRT / preemptive Gantt construction
  7. 7· short_answer· 3 pts

    סארי טוען ששורה 6 אינה מטיבה עם ניהול הזיכרון הפיזי במערכת, וניתן להסירה – נכון / לא נכון. הסבירו.

    libc syscall wrapper caching pitfalls
  8. 8· short_answer· 3 pts

    סארי טוען ששורה 9 אינה מטיבה עם ניהול הזיכרון הפיזי במערכת, וניתן להסירה – נכון / לא נכון. הסבירו.

    libc syscall wrapper caching pitfalls
  9. 9· short_answer· 3 pts

    בהנחה שהתהליך המריץ את C רץ בשלמותו ללא החלפות הקשר ועל מחשב בעל ליבה אחת, האם טענתו של סארי בסעיף 8 נכונה? נכונה / לא נכונה. הסבירו.

    Linux VMA vm_flags interpretationCopy-on-write fork memory protectionPage fault error code classification
OS-Winter2022-examBQ2core9 parts here

זיכרון וירטואלי

  1. 1· calculation· 2 pts

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

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretation
  2. 2· mcq· 2 pts

    סעיף 2 (2 נק') טוקיו, בת דודה של מוקה, טוענת שמספר המסגרות בזיכרון הפיזי שווה למספר הדפים שחישבתם\ן בסעיף הקודם. מוקה לא מסכימה וטוענת שמספר המסגרות שונה ממספר הדפים. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) אם מוקה צודקת, ציין\י את מספר המסגרות. נמק\י את תשובתך בקצרה. נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretation
  3. 3· mcq· 2 pts

    סעיף 3 (2 נק') טוקיו למדה בקורס מערכות הפעלה שהרגיסטר CR3 מכיל את הכתובת לשורש טבלת הדפים של התהליך הרץ. טוקיו טוענת שהכתובת השמורה ב CR3 הינה כתובת פיזית, אבל מוקה טוענת שהיא וירטואלית. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) מה הבעיה העיקרית באופציה הלא נכונה? נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretation
  4. 4· calculation· 3 pts

    סעיף 4 (3 נק') מוקה וטוקיו רוצות לדעת את הגודל של ה PTE, ולכן הן פנו אליך! מהו הגודל של PTE? מהו הגודל המקסימלי שניתן להקצות לדגלים בכל PTE? פרט\י את החישוב. הנחה: אין בזבוז בדפי טבלת הדפים (כלומר הם מכוסים במלואם ע"י PTES) תשובה סופית: גודל ה PTE: , גודל הדגלים המקסימלי:_ נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretation
  5. 5· trace· 6 pts

    סעיף 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. 6· mcq· 3 pts

    סעיף 6 (3 נק') מוקה טוענת שהזיכרון הפיזי שלה מבוזבז ושהיא לא יכולה לנצל אותו במלואו, אבל טוקיו טוענת שהיא טועה. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) אם טוקיו צודקת, תאר\י כיצד ניתן לנצל את מרחב הזיכרון הפיזי במלואו? אחרת, הסבר\י בקצרה. נימוק:

    fork/exec address-space semantics
  7. 7· mcq· 3 pts

    סעיף 7 (3 נק') טוקיו טוענת שלא יתכן מחשב שבו הזיכרון הווירטואלי גדול יותר מהפיזי, מוקה לא הסכימה וטענה זה מצב תקין. מי מהן צודקת? מוקה | טוקיו (הקף\י את התשובה הנכונה) אם טוקיו צודקת אז הסבר\י מדוע, ואם מוקה צודקת תאר\י איך זה אפשרי. נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretation
  8. 8· short_answer· 4 pts

    סעיף 8 (4 נק') מוקה רוצה לאפשר שימוש בדפים גדולים, בלי ביצוע שינויים למבנה טבלת הדפים (כלומר באופן דומה למנגנון שראינו בתרגולים), איזה גדלים של דפים ניתן לאפשר? נמק\י למה אלו כל האופציות האפשריות. תשובה סופית: נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretation
  9. בונוס· mcq· 4 pts

    סעיף בונוס (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
OS-Winter-2020-2021-examAQ3core8 parts here

זיכרון וירטואלי וסנכרון

  1. 1.1· mcq· 3 pts

    מהו המספר הנמוך ביותר של חריגות דף (page faults) עבור ריצה תקינה של תרחיש 1? הסבירו. א. 0 ב. 1 ג. 8 ד. 16 ה. אף תשובה לא נכונה

    Page fault error code classification
  2. 1.2· mcq· 3 pts

    האם זמן ריצה של תרחיש 1 יהיה קצר יותר או ארוך יותר, אילו המערך לא היה מגובה על ידי memory mapped file? כלומר פשוט מערך גלובלי רגיל. הסבירו את תשובתכם. א. קצר יותר בלי mmap ב. ארוך יותר בלי mmap ג. אותו דבר בלי mmap ד. לא ניתן לדעת ה. אף תשובה לא נכונה

    libc syscall wrapper caching pitfallsVirtual-to-physical address translationSRT / preemptive Gantt construction
  3. 1.3· mcq· 3 pts

    איזה סוג של עקרון המקומיות (locality of access) אנחנו רואים בתרחיש 1? הסבירו. א. Spatial locality. ב. Temporal locality. ג. לא מתקיים עקרון המקומיות (There is no locality at all) ד. לא ניתן לדעת ה. אף תשובה לא נכונה

    libc syscall wrapper caching pitfallsVirtual-to-physical address translationSRT / preemptive Gantt construction
  4. 1.5· mcq· 3 pts

    מהו מספר הגבוה ביותר של כניסות TLB (בכל הליבות יחד) שיכילו תרגום תכף (valid) לאחר סיום ריצה של תרחיש 1? הסבירו. א. 1 ב. 8 ג. 64 ד. לא ניתן לדעת ה. אף תשובה לא נכונה

    Virtual-to-physical address translation
  5. 2.1· mcq· 3 pts

    מהו המספר הנמוך ביותר של חריגות דף (page faults) עבור ריצה תקינה של תרחיש 2? הסבירו. א. 0 ב. 1 ג. 8 ד. 16 ה. אף תשובה לא נכונה

    Page fault error code classification
  6. 2.2· mcq· 3 pts

    האם זמן ריצה של תרחיש 2 יהיה קצר יותר או ארוך יותר בהשוואה לתרחיש 1. הסבירו את תשובתכם. א. קצר יותר ב. ארוך יותר ג. אותו דבר ד. לא ניתן לדעת ה. אף תשובה לא נכונה

    libc syscall wrapper caching pitfallsVirtual-to-physical address translationSRT / preemptive Gantt construction
  7. 2.3· mcq· 3 pts

    את איזה סוג של עקרון המקומיות (locality of access) אנחנו רואים בתרחיש 2? הסבירו. א. Spatial locality. ב. Temporal locality. ג. לא מתקיים עקרון המקומיות (There is no locality at all) ד. לא ניתן לדעת ה. אף תשובה לא נכונה

    libc syscall wrapper caching pitfallsVirtual-to-physical address translationSRT / preemptive Gantt construction
  8. 2.5· mcq· 3 pts

    מהו מספר הגבוה ביותר של כניסות TLB (בכל הליבות יחד) שיכילו תרגום תכף (valid) לאחר סיום ריצה של תרחיש 2? הסבירו. א. 1 ב. 8 ג. 64 ד. לא ניתן לדעת ה. אף תשובה לא נכונה

    Virtual-to-physical address translation
OS-Spring2021-examBQ2core8 parts here

זיכרון וירטואלי (Virtual Memory)

  1. a· short_answer· 2 pts

    מה תפקידו של ה TLB?

    Virtual-to-physical address translation
  2. b· short_answer· 2 pts

    למה כדאי להימנע מפסילת תוכן ה TLB?

    Virtual-to-physical address translation
  3. c· short_answer· 2 pts

    בעת מעבר ממצב משתמש למצב גרעין. חובה / לא חובה. נימוק:

    Virtual-to-physical address translationLinux VMA vm_flags interpretationCopy-on-write fork memory protection
  4. d· short_answer· 2 pts

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

    Voluntary vs preemptive context switchPipe IPC semantics
  5. e· short_answer· 2 pts

    בעת פינוי מסגרת לדיסק. חובה / לא חובה. נימוק:

    Virtual-to-physical address translationLinux VMA vm_flags interpretationCopy-on-write fork memory protection
  6. f· short_answer· 2 pts

    בעת החלפת הקשר בין תהליך אב לתהליך בן חובה / לא חובה. נימוק:

    Voluntary vs preemptive context switch
  7. g· calculation· 5 pts

    מהו תרגום הכתובת הוירטואלית הבאה 0x00801171 תשובה:

    Virtual-to-physical address translation
  8. h· calculation· 5 pts

    מה מספר הכתובות הוירטואליות המצביעות לכתובת הפיזית 0x00005555? ציינו אותם. תשובה: כתובות: 1. 4. 2. 5. 3. 6.

    Virtual-to-physical address translationLinux VMA vm_flags interpretationCopy-on-write fork memory protection
examA-spring2020_mergedQ1core8 parts here

זיכרון וירטואלי

  1. 1· calculation· 1 pts

    (1 נק') מה גודל מסגרת פיזית במעבד הנ"ל, בבתים? נימוק:

    Virtual-to-physical address translationLinux VMA vm_flags interpretationCopy-on-write fork memory protection
  2. 2· calculation· 1 pts

    (1 נק') כמה רשומות (PTEs) יש במסגרת L2 בודדת? נימוק:

    Virtual-to-physical address translationLinux VMA vm_flags interpretationCopy-on-write fork memory protection
  3. 3· calculation· 1 pts

    (1 נק') כמה בתים לכל היותר מנוצלים במסגרת (בודדת) בטבלת דפים? נימוק:

    Virtual-to-physical address translationLinux VMA vm_flags interpretationCopy-on-write fork memory protection
  4. 4· calculation· 1 pts

    (1 נק') מהו הגודל המינימלי של טבלת הדפים של תהליך אחד, סה"כ, בבתים ? נימוק:

    Virtual-to-physical address translationLinux VMA vm_flags interpretationCopy-on-write fork memory protection
  5. 5· calculation· 1 pts

    (1 נק') מהו הגודל המקסימלי של טבלאות הדפים של תהליך אחד, סה"כ, בבתים? נימוק:

    Virtual-to-physical address translationLinux VMA vm_flags interpretationCopy-on-write fork memory protection
  6. 6· calculation· 3 pts

    (3 נק') מה מספר הביטים N בכתובת פיזית של המעבד הנתון? נימוק:

    Virtual-to-physical address translationLinux VMA vm_flags interpretationCopy-on-write fork memory protection
  7. 7· short_answer· 3 pts

    (3 נק') האם יש יתרון בהגדרת 16<N (כתובת פיזית גדולה מכתובת וירטואלית) לעומת 16=N במעבד הנתון? כן / לא (הקיפי) נימוק:

    Virtual-to-physical address translationLinux VMA vm_flags interpretationCopy-on-write fork memory protection
  8. 8· calculation· 6 pts

    (6 נק') הניחי שבמעבד הנתון יש תמיכה חומרתית ב nested (2D) page walk של מכונות וירטואליות. בהנחה שאין TLB, כמה גישות לזיכרון מתבצעות כשקוראים מהזיכרון בית אחד באמצעות כתובת guest virtual? נימוק:

    Virtual-to-physical address translation
OS-Spring2021-examAQ3core7 parts here

שאלה 3 - זיכרון וירטואלי

  1. 1· calculation· 7 pts

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

    Virtual-to-physical address translation
  2. 2· short_answer· 3 pts

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

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

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

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

    (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
  5. 5· short_answer· 1 pts

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

    Page fault error code classification
  6. 6· short_answer· 2 pts

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

    Page fault error code classification
  7. 7· short_answer· 3 pts

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

    Virtual-to-physical address translationSRT / preemptive Gantt constructionPage fault error code classification
examB-spring2020Q4corecritical7 parts here

זיכרון וירטואלי

  1. 1.a· calculation· 1 pts

    (1 נק') לכמה בתים בזיכרון הוירטואלי יכול התהליך לגשת (בבתים)?

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsSRT / preemptive Gantt construction
  2. 1.b· calculation· 1 pts

    (1 נק') לכמה בתים בזיכרון הפיזי יכול התהליך לגשת (בבתים)?

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsSRT / preemptive Gantt construction
  3. 1.c· short_answer· 2 pts

    (2 נק') באילו כתובות וירטואליות נמצא ה-PCB של התהליך?

    libc syscall wrapper caching pitfalls
  4. 2· trace· 10 pts

    מלאו את הטבלה הבאה בנוגע לקוד שהוצג: מספר שורת קוד: 4, 5, 6, 7, 8 מספר חריגות הדף (PF) המינימלי שנוצרו במהלך הפקודה מספר אזורי זיכרון חדשים שהוקצו לתהליך במהלך הפקודה מספר מסגרות פיזיות חדשות שהוקצו עבור מרחב המשתמש של התהליך במהלך הפקודה

    fork/exec address-space semantics
  5. 4.a· short_answer· 2 pts

    (2 נק') האם תתרחש חריגת דף (PF) כשתהליך האב יבצע את שורה 14? כן / לא נימוק:

    Page fault error code classification
  6. 4.b· short_answer· 2 pts

    (2 נק') האם תתרחש חריגת דף (PF) כשתהליך האב יבצע את שורה 15? כן / לא נימוק:

    Page fault error code classification
  7. 5· short_answer· 4 pts

    (4 נק') כעת הניחו שתהליך האב מבצע את שורות 14-15 אחרי שתהליך הבן מבצע את שורות 11-12. האם תתרחש חריגת דף (PF) כשתהליך האב יבצע את שורה 15? כן / לא נימוק:

    Page fault error code classification
Winter2022-examAQ1core7 parts here

זיכרון וירטואלי

  1. 1· mcq· 2 pts

    (2 נק') מה המטרה של יחידת SLB בארכיטקטורת Power PC? א. לתת מענה לתרגום כתובת אפקטיבית שניגשו אליה לאחרונה לכתובת וירטואלית ב. לתת מענה לתרגום כל כתובת וירטואלית לכתובת פיזית ג. לתת מענה לתרגום כל כתובת אפקטיבית לכתובת וירטואלית ד. לתת מענה לתרגום כל כתובת אפקטיבית לכתובת פיזית ה. לתת מענה לתרגום כתובת וירטואלית שניגשו אליה לאחרונה לכתובת פיזית ו. לתת מענה לתרגום כתובת אפקטיבית שניגשו אליה לאחרונה לכתובת פיזית

    Virtual-to-physical address translation
  2. 2· mcq· 2 pts

    (2 נק') מה המטרה של יחידת TLB בארכיטקטורת Power PC? א. לתת מענה לתרגום כתובת וירטואלית שניגשו אליה לאחרונה לכתובת פיזית ב. לתת מענה לתרגום כל כתובת וירטואלית לכתובת פיזית ג. לתת מענה לתרגום כל כתובת אפקטיבית לכתובת וירטואלית ד. לתת מענה לתרגום כל כתובת אפקטיבית לכתובת פיזית ה. לתת מענה לתרגום כתובת אפקטיבית שניגשו אליה לאחרונה לכתובת וירטואלית ו. לתת מענה לתרגום כתובת אפקטיבית שניגשו אליה לאחרונה לכתובת פיזית

    Virtual-to-physical address translation
  3. 3· mcq· 2 pts

    (2 נק') מה המטרה של יחידת ERAT בארכיטקטורת Power PC? א. לתת מענה לתרגום כתובת אפקטיבית שניגשו אליה לאחרונה לכתובת פיזית ב. לתת מענה לתרגום כל כתובת וירטואלית לכתובת פיזית ג. לתת מענה לתרגום כל כתובת אפקטיבית לכתובת וירטואלית ד. לתת מענה לתרגום כל כתובת אפקטיבית לכתובת פיזית ה. לתת מענה לתרגום כתובת וירטואלית שניגשו אליה לאחרונה לכתובת פיזית ו. לתת מענה לתרגום כתובת אפקטיבית שניגשו אליה לאחרונה לכתובת וירטואלית

    Virtual-to-physical address translation
  4. 4· mcq· 3 pts

    (3 נק') מה קורה בזמן של SLB-miss בארכיטקטורת Power PC? א. קורת פסיקת דף ומערכת הפעלה שמטפלת בה מעדכנת את SLB מתוך טבלאות שלה ב. קורת פסיקת דף ומערכת הפעלה שמטפלת בה מעדכנת את SLB מתוך HTAB ג. חומרה ממשיכה את התרגום וניגשת לHTAB לצורך המשך תרגום ד. חומרה ממשיכה את התרגום ועושה page walk על כל חמש רמות של טבלאות הדפים ה. חומרה ממשיכה את התרגום הארוך בין כתובת אפקטיבית לכתובת פיזית ו. כל התשובות האחרות אינן נכונות

    libc syscall wrapper caching pitfallsLocal vs global interrupt disableVirtual-to-physical address translation
  5. 5· mcq· 3 pts

    (3 נק') מה קורה בזמן של TLB-miss בארכיטקטורת Power PC? א. חומרה ממשיכה את התרגום וניגשת לHTAB לצורך המשך תרגום ב. קורת פסיקת דף ומערכת הפעלה שמטפלת בה מעדכנת את SLB מתוך טבלאות שלה ג. קורת פסיקת דף ומערכת הפעלה שמטפלת בה מעדכנת את SLB מתוך HTAB ד. חומרה ממשיכה את התרגום ועושה page walk על כל חמש רמות של טבלאות הדפים ה. חומרה ממשיכה את התרגום הארוך בין כתובת אפקטיבית לכתובת פיזית ו. כל התשובות האחרות אינן נכונות

    libc syscall wrapper caching pitfallsLocal vs global interrupt disableVirtual-to-physical address translation
  6. 6· mcq· 3 pts

    (3 נק') מה קורה בזמן של ERAT-miss בארכיטקטורת Power PC? א. חומרה ממשיכה את התרגום הארוך בין כתובת אפקטיבית לכתובת פיזית ב. קורת פסיקת דף ומערכת הפעלה שמטפלת בה מעדכנת את SLB מתוך טבלאות שלה ג. קורת פסיקת דף ומערכת הפעלה שמטפלת בה מעדכנת את SLB מתוך HTAB ד. חומרה ממשיכה את התרגום וניגשת לHTAB לצורך המשך תרגום ה. חומרה ממשיכה את התרגום ועושה page walk על כל חמש רמות של טבלאות הדפים ו. כל התשובות האחרות אינן נכונות

    libc syscall wrapper caching pitfallsLocal vs global interrupt disableVirtual-to-physical address translation
  7. 7· mcq· 5 pts

    (5 נק') מה קורה בזמן של HTAB-miss כפול בארכיטקטורת Power PC (כלומר, שתי פונקציות הערבול לא מצאו את התרגום)? א. קורת פסיקת דף ומערכת הפעלה שמטפלת בה מעדכנת את HTAB מתוך טבלאות שלה ב. אין מצב של HTAB-miss תמיד אפשר למצוא תרגום של כל כתובת וירטואלית בHTAB ג. אין מצב של HTAB-miss תמיד אפשר למצוא תרגום של כל כתובת אפקטיבית בHTAB ד. חומרה ממשיכה את התרגום ועושה page walk על כל חמש רמות של טבלאות הדפים ה. חומרה ממשיכה את התרגום הארוך בין כתובת אפקטיבית לכתובת פיזית ו. כל התשובות האחרות אינן נכונות

    libc syscall wrapper caching pitfallsLocal vs global interrupt disableVirtual-to-physical address translation
OS-Winter2022-examCQ1core6 parts here

זיכרון וירטואלי

  1. 1· mcq· 5 pts

    איזה מבני נתונים מהבאים הקרנל יעדכן בשורה 4? א. רשימת אזורי הזיכרון בשתי התוכניות ב. טבלת הדפים בשתי התוכניות ג. טבלת המסגרות בשתי התוכניות ד. רשימת הקבצים הפתוחים רק בתוכנית B ה. רשימת ההקצאות של glibc/malloc ו. יש יותר מתשובה אחת נכונה

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsPage fault error code classification
  2. 2· mcq· 5 pts

    איזה מבין המשפטים הבאים נכון (כשמתייחסים לביצוע של שורה 8 בשתי התוכניות)? א. הערך של x אצל האבא בהכרח שווה ל- 0 בתוכנית A ואולי שווה ל- 0 בתוכנית B ב. הערך של x אצל האבא בהכרח שווה ל- 0 בשתי התוכניות ג. הערך של x אצל האבא בהכרח שווה ל- 0 בתוכנית A ובהכרח שונה מ- 0 בתוכנית B ד. הערך של x אצל האבא בהכרח שווה ל- 0 בתוכנית B ובהכרח שונה מ- 0 בתוכנית A ה. הערך של x אצל האבא בהכרח שווה ל- 0 בתוכנית B ואולי שווה ל- 0 בתוכנית A ו. אי אפשר להגיד בוודאות מה הערך של x אצל האבא בתוכנית A וגם אי אפשר להגיד בוודאות מה הערך של x אצל האבא בתוכנית B

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsPage fault error code classification
  3. 3· mcq· 5 pts

    איזה מבין המשפטים הבאים מתאר נכון את המספר והסוג של חריגות דף אשר שורה 8 יוצרת? א. תוכנית A תיצור שתי חריגת דף מסוג Minor ב. תוכנית A תיצור רק חריגת דף אחת מסוג Minor ואף חריגת דף מסוג Major ג. תוכנית B תיצור רק חריגת דף אחת מסוג Major ואף חריגת דף מסוג Minor ד. תוכנית B תיצור שתי חריגת דף מסוג Major ה. תוכנית A תיצור שתי חריגת דף מסוג Minor ותוכנית B תיצור שתי חריגת דף מסוג Major ו. תוכנית A תיצור חריגת דף אחת מסוג Minor ותוכנית B תיצור חריגת דף אחת מסוג Major

    Page fault error code classification
  4. 4· mcq· 5 pts

    איזה מבין ההיגדים הבאים נכון לגבי שורה 8 בשתי התוכניות הנ"ל? א. זמן הריצה של שורה 8 בתהליך הבן של A בהכרח יותר קצר מאשר בתהליך הבן של B ב. זמן הריצה של שורה 8 בתהליך האבא של A בהכרח יותר קצר מאשר בתהליך האבא של B ג. זמן הריצה של שורה 8 בתהליך הבן של A בהכרח יותר ארוך מאשר בתהליך הבן של B ד. זמן הריצה של שורה 8 בתהליך האבא של A בהכרח יותר ארוך מאשר בתהליך האבא של B ה. זמן הריצה של שורה 8 בתהליך הבן של A בהכרח יותר קצר מאשר בתהליך האבא של A ו. זמן הריצה של שורה 8 בתהליך הבן של A בהכרח יותר ארוך מאשר בתהליך האבא של A

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsPage fault error code classification
  5. 5· mcq· 5 pts

    איזה מבין המשפטים הבאים מתאר נכון את מספר חריגות הדף אשר שורה 9 יוצרת? א. גם תהליך האבא וגם תהליך הבן של A יוצרים חריגת דף אחת כל אחד מהם ב. תהליך האבא של A יוצר חריגת דף אחת ואילו תהליך הבן של A לא יוצר אף חריגת דף ג. תהליך הבן של A יוצר חריגת דף אחת ואילו תהליך האבא של A לא יוצר אף חריגת דף ד. תהליך האבא של B יוצר חריגת דף אחת ואילו תהליך הבן של B לא יוצר אף חריגת דף ה. תהליך הבן של B יוצר חריגת דף אחת ואילו תהליך האבא של B לא יוצר אף חריגת דף ו. גם תהליך האבא וגם תהליך הבן של B יוצרים חריגת דף אחת כל אחד מהם

    Page fault error code classification
  6. 6· mcq· 5 pts

    בהינתן ששתי התוכניות הנ"ל ירוצו על מערכת דומה לזו המתוארת בשאלה אך התנאים 1-3 הנתונים אינם מתקיימים. כלומר, לא ניתן להבטיח שכל תוכנית תרוץ לבדה במערכת, לא מובטח שמטמון הדפים ריק לפני שמתחילים להריץ את שתי התוכניות, ולא ידוע כמה זיכרון פיזי פנוי קיים במערכת לפני ריצת התוכניות. איזה מבין המשפטים הבאים נכון? א. כל ההיגדים נכונים ב. [היגד:] תהליך האבא של A עלול ליצור major page fault בשורה 10 ג. [היגד:] תהליך הבן של A עלול ליצור major page fault בשורה 10 ד. [היגד:] תהליך האבא של B עלול ליצור major page fault בשורה 10 ה. [היגד:] תהליך הבן של B עלול ליצור major page fault בשורה 10 ו. כל ההיגדים אינם נכונים

    libc syscall wrapper caching pitfallsPage fault error code classification
2017A_Winter_AQ4core6 parts here

מחזור מסגרות

  1. 1.a· short_answer· 2 pts

    (2 נק') הסבירו את הצורך במטמון הדפים, כלומר, הראו מצב שבו אי שימוש במטמון הדפים גורם לבעיה.

    Voluntary vs preemptive context switchlibc syscall wrapper caching pitfallsPreemption trigger identification
  2. 1.b· short_answer· 5 pts

    (5 נק') דורון, סטודנט בקורס, טוען שבמערכת עם מעבד יחיד, בה הגרעין הוא non-preemptive, ניתן לפתור את הבעיה שהוצגה בסעיף הקודם באופן הבא: 1. upon evacuating frame X to slot Y do: 2. for every process do: 3. for every PTE s.t PTE = X do: 4. set PTE <- Y בפשטות, בזמן פינוי מסגרת X למגירה Y, האלגוריתם עובר על כל טבלאות הדפים של כל התהליכים ומעדכן כל PTE שהצביע על X להצביע על Y. האלגוריתם רץ בפסיקות חסומות ואינו מוותר על המעבד עד לסיומו. האלגוריתם מחליף את מנגנון הפינוי באמצעות מטמון הדפים. נמקו מדוע האלגוריתם של דורון נכון. פרטו לפחות שני חסרונות של האלגוריתם לעומת הפתרון הקיים בגרעין לינוקס, האם קיימים גם יתרונות? אם כן פרטו.

    Voluntary vs preemptive context switchlibc syscall wrapper caching pitfallsPreemption trigger identificationNon-preemptible kernel implicationsLocal vs global interrupt disable
  3. 2.a· short_answer· 4 pts

    (4 נק') הסבירו כיצד תורם קיומו של מנגנון הזיכרון הווירטואלי למימוש ההרחבה.

    Voluntary vs preemptive context switchlibc syscall wrapper caching pitfallsPreemption trigger identification
  4. 2.b· short_answer· 6 pts

    (6 נק') ציינו לפחות 3 מבנים בגרעין או בחומרה אותם ההרחבה צריכה לעדכן? פרטו. 1. 2. 3.

    Voluntary vs preemptive context switchlibc syscall wrapper caching pitfallsPreemption trigger identification
  5. 3.a· short_answer· 4 pts

    (4 נק') הסבירו מדוע הסדר של הפאזות חשוב, כלומר, מדוע חשוב שפאזה 1 תרוץ לפני פאזה 2? (רמז: האלגוריתם יישאר נכון גם אם נהפוך את סדר הפאזות)

    Voluntary vs preemptive context switchlibc syscall wrapper caching pitfallsPreemption trigger identification
  6. 3.b· short_answer· 4 pts

    (4 נק') האם בכל זאת קיים מצב שבו נעדיף להפוך את סדר הפאזות? נמקו.

    Voluntary vs preemptive context switchlibc syscall wrapper caching pitfallsPreemption trigger identification
2017A_Winter_BQ1core6 parts here

זיכרון וירטואלי

  1. 1.· calculation· 5 pts

    (5 נק') תארו 3 פירוקים אפשריים לכתובת הוירטואלית במערכת הנתונה. פרטו את החישובים הרלוונטים והמחישו באמצעות הטבלאות המצורפות. נמקו.

    libc syscall wrapper caching pitfalls
  2. 2.· short_answer· 5 pts

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

    fork/exec address-space semantics
  3. 3.· calculation· 3 pts

    (3 נק') כמה זכרון מבוזבז בבתים? כלומר - כמה זכרון מתוך המסגרות שמוקצות עבור טבלאות הדפים אינו מנוצל (מספיק להציג נוסחה בחשבון-חזקות)

    Linux VMA vm_flags interpretationCopy-on-write fork memory protectionPage fault error code classification
  4. 4.· calculation· 5 pts

    (5 נק') כמה מקום (בבתים) בזיכרון הפיזי תופסות טבלאות הדפים של תהליך יחיד המנצל את כל מרחב הזכרון הוירטואלי שלו? פרטו את החישובים ונמקו. (לא חובה להגיע לתשובה מספרית סופית - ניתן ורצוי להציג נוסחה בחשבון-חזקות)

    fork/exec address-space semantics
  5. 5.· short_answer· 4 pts

    (4 נק') מהנדסי המעבד הוסיפו לו קבוצה של 32 רגיסטרים מיוחדים בגודל 64 ביט: r0,...,r31. עליכם להציע פתרון לבעיית בזבוז הזיכרון שאוזכרה בסעיף הקודם. הסבירו כיצד מתחלקת הכתובת הוירטואלית וכיצד מתבצע תהליך התרגום בפתרון שהצעתם, ונמקו.

    Virtual-to-physical address translation
  6. 6.· short_answer· 3 pts

    (3 נק') מנו 2 חסרונות של המערכת שהוצעה בשאלה ביחס למערכת שנלמדה בתרגולים (לינוקס על מעבד 32-IA). נמקו.

    libc syscall wrapper caching pitfalls
2018B_Spring_AQ3core6 parts here

זיכרון וירטואלי

  1. 1· mcq· 5 pts

    (5 נק') בהנחה שגודל כניסה בטבלת הדפים מעוגל למעלה לחזקה שלמה של 2, מהו אופן חלוקת הכתובת הוירטואלית לשדות בתהליך תרגום כתובות (page walk)? index3 index2 index1 offset 2 9 9 12 א. 2 10 10 10 ב. 1 9 10 12 ג. 4 9 9 10 ד. 2 10 10 12 ה. 2 9 9 10 ו. נימוק:

    Virtual-to-physical address translation
  2. 2· mcq· 5 pts

    (5 נק') מהו הגודל המינימלי האפשרי של כניסה בטבלת הדפים אם לא מעגלים אותו למעלה? a. 3 בתים b. 4 בתים c. 5 בתים d. 6 בתים e. 7 בתים f. אף תשובה אינה נכונה נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsVirtual-to-physical address translation
  3. 3· mcq· 5 pts

    (5 נק') מהי הפונקציה f1? f1(vpn) = vpn/819 .a f1(vpn) = vpn%819 .b f1(vpn) = (vpn/819)%819 .c f1(vpn) = (vpn/819)/819 .d f1(vpn) = (vpn%819)/819 .e f1(vpn) = ((vpn/819)%819)/819 .f נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsVirtual-to-physical address translation
  4. 4· mcq· 3 pts

    (3 נק') מהי הפונקציה f2? f2(vpn) = vpn/819 .a f2(vpn) = vpn%819 .b f2(vpn) = (vpn/819)%819 .c f2(vpn) = (vpn/819)/819 .d f2(vpn) = (vpn%819)/819 .e f2(vpn) = ((vpn/819)%819)/819 .f נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsVirtual-to-physical address translation
  5. 5· mcq· 2 pts

    (2 נק') מהי הפונקציה f3? f3(vpn) = vpn/819 .a f3(vpn) = vpn%819 .b f3(vpn) = (vpn/819)%819 .c f3(vpn) = (vpn/819)/819 .d f3(vpn) = (vpn%819)/819 .e f3(vpn) = ((vpn/819)%819)/819 .f נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsVirtual-to-physical address translation
  6. 6· mcq· 5 pts

    (5 נק') מה היתרון של המערכת שהציע שוקי על פני המערכת שהציעה עדן? a. מיפוי של מרחב זיכרון וירטואלי גדול יותר. b. מיפוי של מרחב זיכרון פיזי גדול יותר. c. ה-TLB אפקטיבי יותר בגלל שהוא מכסה יותר זיכרון. d. טבלאות הדפים של תהליכי משתמש תופסות נפח קטן יותר בזיכרון. e. פחות פרגמנטציה חיצונית, כלומר יותר זיכרון רציף. f. אף תשובה אינה נכונה. נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsVirtual-to-physical address translation
OS-Winter-2020-2021-examBQ3core6 parts here

וירטואליזציה

  1. 1· short_answer· 3 pts

    רשמו מגבלה/חיסרון של פרה-וירטואליזציה (para-virtualization) ביחס לוירטואליזציה מלאה. נמקו בקצרה.

    Virtual-to-physical address translation
  2. 2· short_answer· 3 pts

    רשמו יתרון של מנגנון התרגום הבינארי (translation binary) על פני מנגנון emulation למימוש וירטואליזציה של X86 .נמקו בקצרה.

    Virtual-to-physical address translation
  3. 3· short_answer· 3 pts

    רשמו יתרון של מנגנון התרגום הבינארי (translation binary) על פני מנגנון trap&emulate למימוש וירטואליזציה של X86 .נמקו בקצרה.

    Virtual-to-physical address translation
  4. 4· short_answer· 3 pts

    במימוש וירטואליזציה של X86 על ידי מנגנון התרגום הבינארי (translation binary ,( האם מתבצע גם תרגום של הקוד אותו מריצים תהליכי המשתמש (code user ?(אם כן, הסבירו בקצרה מדוע זה נדרש. אם לא, הסבירו בקצרה מדוע אין צורך בכך.

    Virtual-to-physical address translation
  5. 5· short_answer· 3 pts

    רשמו יתרון של המנגנון Extended Page Table (או Nested Page Table) על פני המנגנון Shadow Page Table למימוש וירטואליזציה של זיכרון וירטואלי .נמקו בקצרה.

    Virtual-to-physical address translation
  6. 6· short_answer· 3 pts

    רשמו יתרון של המנגנון Shadow Page Table על פני המנגנון Extended Page Table (או Nested Page Table) למימוש וירטואליזציה של זיכרון וירטואלי .נמקו בקצרה.

    Virtual-to-physical address translation
2017B_Spring_AQ3core5 parts here

זיכרון וירטואלי

  1. א· diagram· 4 pts

    (4 נק') שרטטי את תהליך המהלך על טבלת הדפים (page table walk) בעת תרגום כתובת וירטואלית לכתובת פיזית בארכיטקטורת x86-64, מתחילתו ועד סופו. נא לציין את תחילת, סיום, וגודל כל שדה ביטים (bit-field) בכתובת הוירטואלית, שנכלל בשירטוטך. לדוגמא, בשירטוט הבא רואים שדה בגודל 4 ביטים שמתחיל בביט #6 ונגמר בביט #9. (נא לא לכלול את ה- TLB בשרטוטך.) 4 9 6 0 63

    Virtual-to-physical address translation
  2. ב· short_answer· 4 pts

    (4 נק') בהתייחס לארכיטקטורת x86-64: מה גודל כל דף בהיררכיה (בבתים)? כמה ביטים מכיל שדה ההיסט בתוך הדף (page offset) כמה רמות יש בהיררכיית טבלאות הדפים? מה גודל כל PTE (בבתים)? כמה PTES יש בכל טבלת דפים? רגיסטר CR3 מכיל כתובת ווירטואלית / פיזית (הקיפי את התשובה הנכונה)

    Linux VMA vm_flags interpretationCopy-on-write fork memory protectionPage fault error code classification
  3. ג· short_answer· 8 pts

    (8 נק') באיזה גדלים של סופר-דפים (super-pages) ארכיטקטורת x86-64 תומכת? מדוע דווקא גדלים אלה? (יש להסביר ולפרט את אופן החישוב.)

    Linux VMA vm_flags interpretationCopy-on-write fork memory protectionPage fault error code classification
  4. ד· short_answer· 1 pts

    (1 נק') למה משמש TLB?.

    Virtual-to-physical address translation
  5. ה· short_answer· 8 pts

    (8 נק') מה היתרונות והחסרונות של שימוש בדפים גדולים. יתרונות: חסרונות:

    Linux VMA vm_flags interpretationCopy-on-write fork memory protectionPage fault error code classification
2017B_Spring_BQ4core5 parts here

זיכרון ווירטואלי

  1. א· trace· 10 pts

    (2 נק' לכל שורה בטבלה, סך הכל 10 נק') [table of page faults]

    Page fault error code classification
  2. ב· short_answer· 3 pts

    (3 נק') מהו היתרון במערכת החדשה על פני המערכת המקורית? נמקו

    libc syscall wrapper caching pitfalls
  3. ג· short_answer· 3 pts

    (3 נק') מהו ה-trade off במערכת החדשה (מה אנחנו משלמים כדי לקבל את הפונקציונליות החדשה)?

    libc syscall wrapper caching pitfalls
  4. ד· short_answer· 4 pts

    (4 נק') מפתחי לינוקס שמו לב שבמערכת החדשה שפיתחו צצה תקלה חדשה שגרמה למערכת ההפעלה לקרוס לעתים. כאשר חקרו את הבעיה גילו שמשום מה התבצעה כתיבה לאיזורי זכרון של תהליכים מסויימים ושל הגרעין אפילו שתהליכים אלו כלל לא ניסו לכתוב לשם. הסבירו מה יכול היה לגרום לתקלה במערכת החדשה. (רמז: התקלה קרתה לעתים תכופות יותר ככל שהיה יותר עומס זכרון במערכת ההפעלה)

    libc syscall wrapper caching pitfalls
  5. ה· short_answer· 5 pts

    (5 נק') הציעו דרך למנוע את הבעיה שתיארתם בסעיף הקודם בצורה היעילה ביותר.

    Voluntary vs preemptive context switchfork/exec address-space semanticslibc syscall wrapper caching pitfalls
2018B_Spring_BQ4core5 parts here

זיכרון וירטואלי

  1. 1· mcq· 5 pts

    (5 נק') מהי סדרת האירועים אשר מתרחשת כאשר תוכנית ניגשת לכתובת זיכרון וירטואלית ומפעילה את מנגנון copy-on-write? a. TLB miss → page table walk → page fault b. TLB hit → page table walk → page fault c. page fault → page table walk → TLB miss d. page fault → page table walk → TLB hit e. page table walk → TLB miss → page fault f. page table walk → TLB hit → page fault נמקו:

    Virtual-to-physical address translationCopy-on-write fork memory protectionPage fault error code classification
  2. 2· mcq· 5 pts

    (5 נק') כמה חריגות דף (page faults) יוצר תהליך הבן מתחילתו ועד סופו (שורות 7--10)? הניחו כי כל קריאות המערכת מצליחות. a. 0, בגלל שמנגנון COW חוסך את כל העתקות הזיכרון מהאב לבן. b. לפחות 1, בגלל ניסיון כתיבה של הבן למחסנית המשתמש שלו. c. לפחות 1, בגלל ניסיון כתיבה של הבן למחסנית הגרעין שלו. d. לפחות 1, בגלל ניסיון כתיבה של הבן לערימה שלו. e. אולי 0 ואולי יותר, תלוי במספר ההחטאות ב-TLB. f. אולי 0 ואולי יותר, תלוי בתזמון היחסי בין תהליך האב לתהליך הבן. נמקו:

    libc syscall wrapper caching pitfallsVirtual-to-physical address translationCopy-on-write fork memory protectionPage fault error code classification
  3. 3· mcq· 5 pts

    (5 נק') באיזה מערכת זמן הריצה יהיה קצר יותר, ומדוע? T(COW) > T(NO-COW) .a בגלל שמעתיקים פחות זיכרון מהאב לבן. T(COW) <T(NO-COW).b בגלל שמעתיקים פחות זיכרון מהאב לבן. .בגלל שמספר חריגות הדף קטן יותר T(COW) > T(NO-COW) C .בגלל שמספר חריגות הדף קטן יותר T(COW) < T(NO-COW).d T(COW) > T(NO-COW).е בגלל שתהליך האב יכול לרוץ במקביל לתהליך הבן. T(COW) < T(NO-COW).f בגלל שתהליך האב יכול לרוץ במקביל לתהליך הבן. נמקו:

    libc syscall wrapper caching pitfallsCopy-on-write fork memory protection
  4. 4· mcq· 5 pts

    (5 נק') כמה חריגות דף (page faults) יוצר תהליך הבן מתחילתו ועד סופו (שורות 7--12)? בחרו את התשובה הקרובה ביותר מבין הבאות (אנחנו מתעניינים בסדר גודל ולא תשובה מדויקת). הניחו כי כל קריאות המערכת מצליחות. 1.1024 .a 10.1024.b 100.1024 .C 1024 1024 .d 101024 1024 .e 1001024 1024 .f נמקו:

    libc syscall wrapper caching pitfallsPage fault error code classification
  5. 5· mcq· 5 pts

    (5 נק') יובל חזר על תהליך המדידה שתואר קודם גם עבור התכנית החדשה. באיזה מערכת זמן הריצה יהיה קצר יותר, ומדוע? T(COW) > T(NO-COW) .a בגלל שמעתיקים פחות זיכרון מהאב לבן. T(COW) <T(NO-COW) .b בגלל שמעתיקים פחות זיכרון מהאב לבן. .בגלל שמספר חריגות הדף קטן יותר T(COW) > T(NO-COW).C .בגלל שמספר חריגות הדף קטן יותר T(COW) <T(NO-COW) .d T(COW) > T(NO-COW).е בגלל שתהליך האב יכול לרוץ במקביל לתהליך הבן. T(COW) < T(NO-COW).f בגלל שתהליך האב יכול לרוץ במקביל לתהליך הבן. נמקו:

    libc syscall wrapper caching pitfallsCopy-on-write fork memory protection
OS-Winter-2020-2021-examBQ2core5 parts here

זיכרון וירטואלי

  1. 1· trace· 5 pts

    int fd = open(“a.txt”, O_RDWR); char* a = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_FILE|MAP_PRIVATE, fd, 0); int x = a[10]; a[10] = 'a'; בהתייחס לקוד שלמעלה, כמה מסגרות חדשות מוקצה אחרי כל פקודה וכמה חריגות דף,נמקו ? (Table for lines 1-4)

    Hard link vs symlink inode behavior
  2. 2· trace· 6 pts

    כעת מוסיפים קריאת המערכת ()fork אחרי שורה 1, כמה מסגרות חדשות מוקצות אחרי כל פקודה, וכמה חריגות דף ? הערה: רשמו עבור כל שורה סה"כ החריגות/מסגרות מ-2 התהליכים int fd = open(“a.txt

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsHard link vs symlink inode behavior
  3. 3· mcq· 2 pts

    בהתייחסות לקוד שלמעלה (עם ה-fork), תוכן ה-TLB נפסל בהחלפת ההקשר בין האב לבן: תשובה: נכון / לא נכון נימוק:

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsVirtual-to-physical address translation
  4. 4· trace· 6 pts

    int fd = open(“a.txt”, O_RDWR); char* a = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); read(fd, a, 4096); int x = a[10]; a[10] = 'a'; בהתייחסות לקוד שלמעלה, כמה מסגרות חדשות מוקצה אחרי כל פקודה וכמה חריגות דף?

    Hard link vs symlink inode behavior
  5. 5· trace· 6 pts

    כעת מוסיפים את ה-fork, כמה מסגרות חדשות מוקצה אחרי כל פקודה, וכמה חריגות דף? הערה: רשמו עבור כל שורה סה״כ החריגות/מסגרות מ-2 התהליכים int fd = open(“a.txt”, O_RDWR); char* a = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); read(fd, a, 4096); fork(); int x = a[10]; a[10] = 'a';

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsHard link vs symlink inode behavior
2018A_Winter_AQ3core4 parts here

חלק 3 - זיכרון וירטואלי

  1. 11· mcq· 5 pts

    (5 נק') מה התנאי על vm_flags עבורו קריאת המערכת ()fork מגינה על איזור הזיכרון? a. vma->vm_flags & (VM_SHARED | VM_MAYREAD) == 0 b. vma->vm_flags & (VM_SHARED | VM_MAYREAD) == VM_SHARED c. vma->vm_flags & (VM_SHARED | VM_MAYREAD) == VM_MAYREAD d. vma->vm_flags & (VM_SHARED | VM_MAYWRITE) == 0 e. vma->vm_flags & (VM_SHARED | VM_MAYWRITE) == VM_SHARED f. vma->vm_flags & (VM_SHARED | VM_MAYWRITE) == VM_MAYWRITE

    fork/exec address-space semanticslibc syscall wrapper caching pitfallsLinux VMA vm_flags interpretation
  2. 12· mcq· 5 pts

    (5 נק') מה התנאי על vm_flags עבורו חריגת הדף מסווגת כ-COW? a. vma->vm_flags & VM_SHARED == 0 b. vma->vm_flags & VM_SHARED == VM_SHARED c. vma->vm_flags & VM_READ == 0 d. vma->vm_flags & VM_READ == VM_READ e. vma->vm_flags & VM_WRITE == 0 f. vma->vm_flags & VM_WRITE == VM_WRITE

    Linux VMA vm_flags interpretationCopy-on-write fork memory protection
  3. 13· mcq· 5 pts

    (5 נק') מה ערך קוד השגיאה עבורו חריגת הדף מסווגת כ-COW? a. 2 b. 3 c. 4 d. 5 e. 6 f. 7

    Copy-on-write fork memory protection
  4. 14· mcq· 5 pts

    (5 נק') האם המימוש של נור תקין ויעיל? אם לא, מה עליה לעשות כדי לתקן אותו? a. המימוש תקין ויעיל באותה מידה כמו הקוד המקורי. b. המימוש תקין, אבל פחות יעיל בגלל שהוא גורם ליותר חריגות דף. c. המימוש תקין, אבל פחות יעיל בגלל שהוא גורם להעתקות מיותרות. d. המימוש תקין, אבל פחות יעיל בגלל שהוא גורם ליותר חריגות דף + גורם להעתקות מיותרות. e. המימוש שגוי. כדי לתקן את המימוש צריך לעדכן את הקוד של do_page_fault. f. המימוש שגוי. לא ניתן לתקן את המימוש עבור מעבדי x86.

    Page fault error code classificationdo_page_fault handler reasoning