OS PyramidTechnion 234123 · Operating Systemsbasics → exam
the pyramid
Stage 1 / 10 · Foundations

Introductionsupporting

This introductory module lays the groundwork for understanding operating systems, covering their definition, historical evolution, and core components. While direct exam questions on this specific topic are rare, a solid grasp of these foundational concepts is essential for comprehending all subsequent, more complex OS topics. It helps contextualize the "why" behind OS design and functionality.

Where to learn it

lectureLecture 1
42 slides
Start with slides 3, 4, 5, 8, 10
tutorialTutorial 1 · intro
41 slides

How to study it

  • Understand the fundamental definitions and goals of an operating system.
  • Familiarize yourself with the historical progression of OS to appreciate design choices.
  • Focus on the high-level functions and components introduced, as these will be detailed later.

What the exam asks

Direct questions are unlikely, but foundational concepts from this module may be implicitly required to answer questions on later, more complex topics.

Exam subsections in this stage (29 parts across 7 questions)

2017A_Winter_AQ2core14 parts here

קריאות מערכת הפעלה

  1. 1.1· short_answer

    קריאה לפונקצית מעטפת עם פרמטרים במחסנית

    System call trap and kernel entrylibc syscall wrapper caching pitfallsLocal vs global interrupt disable
  2. 1.2· short_answer· 1 pts

    העברת הפרמטרים לריגסטרים

    System call trap and kernel entrylibc syscall wrapper caching pitfallsLocal vs global interrupt disable
  3. 1.3· short_answer· 1 pts

    פקודת int 0x80

    System call trap and kernel entry
  4. 1.4· short_answer· 1 pts

    מציאת בסיס מחסנית הגרעין מתוך TSS

    System call trap and kernel entrylibc syscall wrapper caching pitfallsLocal vs global interrupt disable
  5. 1.5· short_answer· 1 pts

    מציאת פונקצית הטיפול בפסיקה

    Local vs global interrupt disable
  6. 1.6· short_answer· 1 pts

    שמירת ss,esp,eflags,cs,eip למקום שמוצבע על-ידי TSS.esp0 וכיוון ss:esp למחסנית הגרעין

    System call trap and kernel entrylibc syscall wrapper caching pitfallsLocal vs global interrupt disable
  7. 1.7· short_answer· 1 pts

    כיוון cs:eip למקום של שגרת הטיפול ב-int 0x80 לפי ה-gate מה-IDT.

    System call trap and kernel entry
  8. 1.8· short_answer· 1 pts

    שמירת orig_eax וקריאה ל-SAVE_ALL

    System call trap and kernel entrylibc syscall wrapper caching pitfallsLocal vs global interrupt disable
  9. 1.9· short_answer· 1 pts

    איתור שגרת השירות ב-syscall_table + בדיקה שמספר קריאת המערכת הוא חוקי

    libc syscall wrapper caching pitfalls
  10. 1.10· short_answer· 1 pts

    קריאה לשגרת השרות

    System call trap and kernel entrylibc syscall wrapper caching pitfallsLocal vs global interrupt disable
  11. 1.11· short_answer· 1 pts

    ביצוע שגרת השירות

    System call trap and kernel entrylibc syscall wrapper caching pitfallsLocal vs global interrupt disable
  12. 2· mcq· 5 pts

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

    libc syscall wrapper caching pitfallsLocal vs global interrupt disable
  13. 3· mcq· 5 pts

    (5 נק') עידן, מתרגל במערכות הפעלה, הציע לשנות את מנגנון הפסיקות באופן אחר: עם קבלת פסיקה לא מחליפים מחסניות, דוחפים את eflags, cs, eip בלבד בראש המחסנית הנוכחית, ועוברים לבצע את שגרת הטיפול בפסיקה כפי שהיא מופיעה ב-IDT. בהתאם, בחזרה מפסיקה, שולפים את שלושת הערכים שנדחפו ונשארים במחסנית הנוכחית. האם המימוש של עידן תקין? אם לא, איזו בעיה עלולה להיווצר במימוש? א. המימוש תקין. ב. המימוש לא תקין, כי קריאות מערכת לא יוכלו לכתוב על המחסנית. ג. המימוש לא תקין, כי קריאות מערכת לא יוכלו לגשת למבנה הנתונים runqueue של הגרעין. ד. המימוש לא תקין, כי המעבד לא יוכל להבדיל בין פסיקות חומרה לחריגות (פסיקות תוכנה). ה. המימוש לא תקין, כי המעבד לא יוכל להבדיל בין פסיקות מקוננות לפסיקות לא מקוננות. ו. המימוש לא תקין, כי משתמש זדוני יוכל לגרום לקריסת המערכת ע"י הצבעה לכתובת מחסנית לא חוקית. נימוק

    libc syscall wrapper caching pitfallsLocal vs global interrupt disable
  14. 4· mcq· 5 pts

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

    libc syscall wrapper caching pitfallsLocal vs global interrupt disable
2017B_Spring_AQ1core5 parts here

קריאות לפונקציות

  1. א· trace· 5 pts

    (5 נק') השלימו את תמונת המחסנית בהרצת התוכנית כאשר היא נמצאת בשורה 4 לעיל. הסבירו את תשובתכם לפני הקריאה ב-main כתובת החזרה return address Old esi Old edi Old ebx

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

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

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

    (5 נק') בהנחה ש-main עושה שימוש בכל הרגיסטרים לפני הקריאה ל-extend ולאחר הקריאה ל-extend אילו רגיסטרים חייבים להישמר על-ידי main טרם הקריאה ל-extend? הסבר.

    libc syscall wrapper caching pitfalls
  4. ד· trace· 5 pts

    (5 נק') בתרגולים ראינו שניתן במקרים מסויימים להגדיר פונקציות עם קונבנציית קריאה בסגנון FASTCALL. באופן דומה לסעיף א, השלימו את מצב המחסנית בשורה 4 בתוכנית לעיל, כאשר מוסיפים את השורה הבאה לפני הגדרת הפונקציה extend (נניח בשורה 0): unsigned long long extend(unsigned int low, unsigned int high) __attribute__((regparm(2))); return address

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

    (5 נק') הצג מימוש קצר ככל האפשר ב-assembly לפונקציה extend מסעיף ד. הסבר את המימוש:

    libc syscall wrapper caching pitfalls
2018B_Spring_BQ1core4 parts here

קריאות מערכת ופסיקות

  1. 1· mcq· 5 pts

    (5 נק') מהו סדר הפונקציות/רוטינות בביצוע קריאת המערכת open? a. sys_open → system_call → libc wrapper b. sys_open →libc wrapper → system_call c. system_call → sys_open → libc wrapper d. system_call → libc wrapper→ sys_open e. libc wrapper→ system_call → sys_open f. libc wrapper→ sys_open → system_call נמקו:

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

    (5 נק') מהם ערכי CPL במהלך השלבים של קריאת המערכת open? sys_open system_call libc wrapper a. 3 3 0 b. 0 3 0 c. 3 0 0 d. 0 0 3 e. 3 3 3 f. 0 3 3 נמקו:

    libc syscall wrapper caching pitfalls
  3. 3· mcq· 5 pts

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

    libc syscall wrapper caching pitfallsLocal vs global interrupt disablePreemption trigger identification
  4. 4· mcq· 5 pts

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

    libc syscall wrapper caching pitfallsLocal vs global interrupt disable
2017A_Winter_BQ3core3 parts here

מטמונים

  1. 1.· mcq· 3 pts

    (3 נק') בכמה זיכרון יותר איטי מהמעבד? בחרו סדר גודל. א. 10 ב. 100 ג. 1000 ד. 10000 הסבר:

    Process state transitions
  2. 2.· mcq· 3 pts

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

    Copy-on-write fork memory protection
  3. 6.· mcq· 3 pts

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

    libc syscall wrapper caching pitfalls