OS PyramidTechnion 234123 · Operating Systemsbasics → exam
Stage 2: Processes & Signals
OS-Spring2021-examAQuestion 1core25 pts

This question spans 2 stages — each part below is tagged with, and links to, the stage it belongs to.

(כל סעיף 5 נק'.) נא לסמן את התשובה הנכונה בטופס התשובות המצורף, ללא נימוק. הבדיקה תתבצע באופן אוטומטי, ולכן יש להקפיד לסמן נכון ובבירור את (1) מספר תעודת הזהות,את (2) מספר הטור המצוין למטה, ואת (3) התשובות עצמן. בכל סעיף יש לבחור תשובה אחת בלבד. יש סעיפים שמבקשים לזהות היגד נכון, ויש סעיפים שמבקשים לזהות היגד שגוי / לא נכון / בלתי אפשרי. אם קיים יותר מהיגד אחד שעונה על תנאי השאלה, או שלא קיים היגד כזה כלל, יש לבחור את התשובה שאומרת זאת במפורש. טור X

Full original question text (raw OCR)

מערכות הפעלה (234123) שאלה 1 (25 נק') (כל סעיף 5 נק'.) נא לסמן את התשובה הנכונה בטופס התשובות המצורף, ללא נימוק. הבדיקה תתבצע באופן אוטומטי, ולכן יש להקפיד לסמן נכון ובבירור את (1) מספר תעודת הזהות,את (2) מספר הטור המצוין למטה, ואת (3) התשובות עצמן. בכל סעיף יש לבחור תשובה אחת בלבד. יש סעיפים שמבקשים לזהות היגד נכון, ויש סעיפים שמבקשים לזהות היגד שגוי / לא נכון / בלתי אפשרי. אם קיים יותר מהיגד אחד שעונה על תנאי השאלה, או שלא קיים היגד כזה כלל, יש לבחור את התשובה שאומרת זאת במפורש. טור X א. בעבור תהליך כלשהו, איזה מבין ההיגדים הבאים מתאר שינוי מצבים (state change) שהוא בלתי אפשרי 1. [היגד:] שינוי ממצב waiting אל מצב running 2. [היגד:] שינוי ממצב waiting אל מצב ready 3. [היגד:] שינוי ממצב ready אל מצב running 4. [היגד:] שינוי ממצב running אל מצב ready 5. [היגד:] שינוי ממצב running אל מצב zombie 6. יש יותר מהיגד אחד שמתאר שינוי מצבים בלתי אפשרי ב. בהתייחס למכונה אבסטרקטית (abstract machine), איזה מבין ההיגדים הבאים שגוי? 1. [היגד:] מכונה אבסטרקטית מאפשרת לתהליך להשתמש בזיכרון פיזי יותר גדול מאשר יש למכונה האמיתית 2. [היגד:] מכונה אבסטרקטית תומכת רק פקודות מכונה שהן non-privileged 3. [היגד:] מכונה אבסטרקטית מאפשרת לתוכניות לרוץ על מעבדים של יצרנים שונים, תחת מערכות הפעלה שונות 4. [היגד:] מכונה אבסטרקטית מאפשרת לשמור קבצים ותיקיות על הדיסק 5. [היגד:] מכונה אבסטרקטית מאפשרת שימוש במספר רגיסטרים קטן יותר מאשר יש למכונה האמיתית 6. יש יותר מהיגד אחד שגוי מערכות הפעלה (234123) ג. איזה מבין ההיגדים הבאים נכון 1. [היגד:] כשמגדירים signal handler בעבור הסיגנל SIGCONT, ה-handler נקרא מיד אחרי שממשיכים את התהליך 2. [היגד:] כשמגדירים signal handler בעבור הסיגנל SIGKILL, ה-handler נקרא מיד אחרי שהורגים את התהליך 3. [היגד:] כשמגדירים signal handler בעבור הסיגנל SIGSTOP, ה-handler נקרא מיד אחרי שעוצרים את התהליך 4. [היגד:] משתמש יכול לחסום את כל סוגי הסיגנלים רק אם הוא super-user או root 5. יש יותר מהיגד אחד נכון 6. כל ההיגדים אינם נכונים ד. איזה מבין ההיגדים הבאים נכון 1. כל ההיגדים שגויים 2. כל ההיגדים נכונים 3. [היגד:] תהליך עלול לקבל את הסיגנל SIGXCPU רק אם השתמשנו קודם לכן בקריאת המערכת setrlimit בכדי להגביל את צריכת המעבד של תהליך זה 4. [היגד:] אפשר לשלוח את הסיגנל SIGCONT לתהליך רק אם קודם לכן שלחנו אליו את הסיגנל SIGSTOP 5. [היגד:] תהליך עלול לקבל את הסיגנל SIGPIPE רק אם קודם לכן הוא השתמש בקריאת המערכת pipe אבל אז השתמש ב pipe שנוצר לא נכון (כתב ל pipe שנסגר לקריאה) 6. [היגד:] תהליך עשוי לקבל את הסיגנל SIGTRAP רק אם הוא רץ תחת דיבאגר ה. איזה מבין ההיגדים הבאים איננו נכון? (תזכורת: IPI הינו קיצור ל Inter-Processor Interrupt. הנחה: מדובר בארכיטקטורת x86.) 1. [היגד:] כשמתחוללת פסיקת חומרה כלשהי, הגרעין מטפל בה ואז שולח את הסיגנל המתאים לתהליך המתאים 2. [היגד:] ה scheduler עשוי לשלוח IPI מליבה אחת של המעבד לאחרת 3. [היגד:] תת-המערכת בגרעין שמממשת את הזיכרון הוירטואלי עשויה לשלוח IPI בין ליבה אחת של המעבד לאחרת 4. [היגד:] רק הגרעין מטפל בפסיקות חומרה, ורק תהליכים מטפלים בסיגנלים 5. יש יותר מהיגד אחד שאיננו נכון 6. כל ההיגדים נכונים

  1. א.· mcq· 5 ptsProcesses & Signals

    בעבור תהליך כלשהו, איזה מבין ההיגדים הבאים מתאר שינוי מצבים (state change) שהוא בלתי אפשרי 1. [היגד:] שינוי ממצב waiting אל מצב running 2. [היגד:] שינוי ממצב waiting אל מצב ready 3. [היגד:] שינוי ממצב ready אל מצב running 4. [היגד:] שינוי ממצב running אל מצב ready 5. [היגד:] שינוי ממצב running אל מצב zombie 6. יש יותר מהיגד אחד שמתאר שינוי מצבים בלתי אפשרי

    SRT / preemptive Gantt construction
  2. ב.· mcq· 5 ptsIntroduction

    בהתייחס למכונה אבסטרקטית (abstract machine), איזה מבין ההיגדים הבאים שגוי? 1. [היגד:] מכונה אבסטרקטית מאפשרת לתהליך להשתמש בזיכרון פיזי יותר גדול מאשר יש למכונה האמיתית 2. [היגד:] מכונה אבסטרקטית תומכת רק פקודות מכונה שהן non-privileged 3. [היגד:] מכונה אבסטרקטית מאפשרת לתוכניות לרוץ על מעבדים של יצרנים שונים, תחת מערכות הפעלה שונות 4. [היגד:] מכונה אבסטרקטית מאפשרת לשמור קבצים ותיקיות על הדיסק 5. [היגד:] מכונה אבסטרקטית מאפשרת שימוש במספר רגיסטרים קטן יותר מאשר יש למכונה האמיתית 6. יש יותר מהיגד אחד שגוי

    libc syscall wrapper caching pitfallsSignal delivery and handler timingPreemption trigger identification
  3. ג.· mcq· 5 ptsProcesses & Signals

    איזה מבין ההיגדים הבאים נכון 1. [היגד:] כשמגדירים signal handler בעבור הסיגנל SIGCONT, ה-handler נקרא מיד אחרי שממשיכים את התהליך 2. [היגד:] כשמגדירים signal handler בעבור הסיגנל SIGKILL, ה-handler נקרא מיד אחרי שהורגים את התהליך 3. [היגד:] כשמגדירים signal handler בעבור הסיגנל SIGSTOP, ה-handler נקרא מיד אחרי שעוצרים את התהליך 4. [היגד:] משתמש יכול לחסום את כל סוגי הסיגנלים רק אם הוא super-user או root 5. יש יותר מהיגד אחד נכון 6. כל ההיגדים אינם נכונים

    libc syscall wrapper caching pitfallsSignal delivery and handler timing
  4. ד.· mcq· 5 ptsProcesses & Signals

    איזה מבין ההיגדים הבאים נכון 1. כל ההיגדים שגויים 2. כל ההיגדים נכונים 3. [היגד:] תהליך עלול לקבל את הסיגנל SIGXCPU רק אם השתמשנו קודם לכן בקריאת המערכת setrlimit בכדי להגביל את צריכת המעבד של תהליך זה 4. [היגד:] אפשר לשלוח את הסיגנל SIGCONT לתהליך רק אם קודם לכן שלחנו אליו את הסיגנל SIGSTOP 5. [היגד:] תהליך עלול לקבל את הסיגנל SIGPIPE רק אם קודם לכן הוא השתמש בקריאת המערכת pipe אבל אז השתמש ב pipe שנוצר לא נכון (כתב ל pipe שנסגר לקריאה) 6. [היגד:] תהליך עשוי לקבל את הסיגנל SIGTRAP רק אם הוא רץ תחת דיבאגר

    libc syscall wrapper caching pitfallsSignal delivery and handler timingPipe IPC semantics
  5. ה.· mcq· 5 ptsProcesses & Signals

    איזה מבין ההיגדים הבאים איננו נכון? (תזכורת: IPI הינו קיצור ל Inter-Processor Interrupt. הנחה: מדובר בארכיטקטורת x86.) 1. [היגד:] כשמתחוללת פסיקת חומרה כלשהי, הגרעין מטפל בה ואז שולח את הסיגנל המתאים לתהליך המתאים 2. [היגד:] ה scheduler עשוי לשלוח IPI מליבה אחת של המעבד לאחרת 3. [היגד:] תת-המערכת בגרעין שמממשת את הזיכרון הוירטואלי עשויה לשלוח IPI בין ליבה אחת של המעבד לאחרת 4. [היגד:] רק הגרעין מטפל בפסיקות חומרה, ורק תהליכים מטפלים בסיגנלים 5. יש יותר מהיגד אחד שאיננו נכון 6. כל ההיגדים נכונים

    libc syscall wrapper caching pitfallsLocal vs global interrupt disableSignal delivery and handler timingPreemption trigger identificationSRT / preemptive Gantt construction

The exam question — original PDF

pages 2, 3

Exactly as it appears on the exam paper.

loading page 2
loading page 3

Built from these components

Ordered basic → advanced. Master the earlier ones first.

L3libc syscall wrapper caching pitfallsL3Local vs global interrupt disableL3Signal delivery and handler timingL3Pipe IPC semanticsL3Preemption trigger identificationL4SRT / preemptive Gantt construction

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.

Tutorial 2slide 3קריאות מערכתלעבודה עם תהליכיםמערכות הפעלה - תרגול 23

קריאות מערכתלעבודה עם תהליכיםמערכות הפעלה - תרגול 23

Tutorial 2slide 22קריאות המערכת getpid(), getppid()pid_t getpid();קריאת מערכת המחזירה לתהליך הקורא את ה-pid של עצמו

קריאות המערכת getpid(), getppid()pid_t getpid();קריאת מערכת המחזירה לתהליך הקורא את ה-pid של עצמו.pid_t getppid();קריאת מערכת המחזירה את ה-PID של תהליך האב של התהליך הקורא.שאלה: מה המשמעות של getppid() == 1 עבור תהליך משתמש טיפוסי?תשובה: תהליך האב הוא init. קורה למשל אם תהליך הבן יתום.מערכות הפעלה - תרגול 222

Tutorial 2slide 28מערכות הפעלה - תרגול 2281שאלה ממבחן

מערכות הפעלה - תרגול 2281שאלה ממבחן

Tutorial 3slide 8קריאת המערכת kill#include <sys/types

קריאת המערכת kill#include <sys/types.h>#include <signal.h>int kill(pid_t pid, int sig);פעולה: שולחת את הסיגנל שמספרו sig לתהליך המזוהה ע"י pid.אם הערך של sigהוא 0, אז הפעולה רק בודקת שהתהליך pid קיים, מבלי לשלוח signal (שימושי לבדיקת תקפות pid).ערך מוחזר:0 בהצלחה-1 בכישלון (למשל, אם אין תהליך בעל מזהה pid)מערכות הפעלה - תרגול 38

Tutorial 3slide 9העברת סיגנלים בשני שלביםרישום – מערכת ההפעלה רושמת ב-PCB של תהליך היעד שיש לו סיגנל ממתין (pending signal)

העברת סיגנלים בשני שלביםרישום – מערכת ההפעלה רושמת ב-PCB של תהליך היעד שיש לו סיגנל ממתין (pending signal).הרישום מתבצע במערך בינארי בין 31 ביטים, ולכן לכל תהליך יכול להיות לכל היותר סיגנל ממתין אחד מכל מספר.טיפול – בכל פעם שהתהליך חוזר ממצב גרעין למצב משתמש, מערכת ההפעלה בודקת אם יש סיגנלים ממתינים ומטפלת בהם.בסיום הטיפול בסיגנל, מערכת ההפעלה תאפס את הביט המתאים במערך. במידה ויש מספר סיגנלים ממתינים, סדר הטיפול מתחילת המערך לסופו.מערכות הפעלה - תרגול 39

Tutorial 3slide 20FD (file descriptors)כל פעולות קלט/פלט של תהליך בלינוקס מבוצעות דרך "קבצים":קבצים "רגילים" לאחסון מידע (/usr/file

FD (file descriptors)כל פעולות קלט/פלט של תהליך בלינוקס מבוצעות דרך "קבצים":קבצים "רגילים" לאחסון מידע (/usr/file.txt) נמצאים בדיסק.התקני חומרה גם כן מיוצגים כקבצים, אבל נמצאים בזיכרון.למשל, העכברים המחוברים למחשב מיוצגים כ- /dev/input/mouseN .גם ערוצי תקשורת כמו pipes מיוצגים ע"י קבצים שנמצאים בזיכרון.הקשר בין תהליך לבין קובץ שהוא ניגש אליו נשמר, ברמת המשתמש, ע"י מספר שלם שנקרא file descriptor (FD).לדוגמה: קריאת המערכת open() מחזירה FD.המשתמש מעביר את ה-FD לקריאות מערכת כמו read(), write() כדי לקרוא ולכתוב לקובץ.מערכות הפעלה - תרגול 320

Tutorial 3slide 42שחרור file objectשאלה: מי מבצע את שחרור הזיכרון של file object? מתי ניתן לשחררו? ייתכנו מצבים בהם תהליכים שונים מצביע...

שחרור file objectשאלה: מי מבצע את שחרור הזיכרון של file object? מתי ניתן לשחררו? ייתכנו מצבים בהם תהליכים שונים מצביעים לאותו file object, לכן שחרור ה-file object יכול להתבצע רק לאחר ביצוע close() מכל התהליכים החולקים את אותו ה-file object. זכרו של-file object יש מונה (f_count) הסופר את כמות התהליכים המצביעים עליו בכל רגע נתון. המונה קטן באחד עם כל פעולת close() על האובייקט. כאשר המונה מתאפס, ה-file object ישוחרר.מערכות הפעלה - תרגול 342

Tutorial 5slide 9דוגמת FCFSaverageResponseTime = (10 + 20 + 30) / 3 = 20כעת נסיר את הנחה 1 ("כל התהליכים רצים למשך אותו זמן")

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

Tutorial 5slide 10אפקט השיירה (convoy effect)averageResponseTime = (100 + 110 + 120) / 3 = 110אלגוריתם FCFS עלול לסבול מ"אפקט השיירה": ...

אפקט השיירה (convoy effect)averageResponseTime = (100 + 110 + 120) / 3 = 110אלגוריתם FCFS עלול לסבול מ"אפקט השיירה": מצב שבו תהליך אחד ארוך מעכב הרבה תהליכים קצרים. מערכות הפעלה - תרגול 510

Tutorial 6slide 13שני סוגים של החלפת הקשרהחלפת הקשר כפויה(== הפקעה)הגרעין מפקיע (כלומר, לוקח בכוח) את המעבד מהתהליך, למשל בעקבות:פסיקת ...

שני סוגים של החלפת הקשרהחלפת הקשר כפויה(== הפקעה)הגרעין מפקיע (כלומר, לוקח בכוח) את המעבד מהתהליך, למשל בעקבות:פסיקת שעון (מטופלת בשגרה scheduler_tick) אשר מגלה כי הזמן שהוקצב לתהליך הנוכחי אזל.אירוע אסינכרוני אשר מעיר תהליך בעל עדיפות טובה יותר מהתהליך הרץ כרגע.לדוגמה: פסיקת דיסק או שחרור מנעול שתהליך המתין לו.החלפת הקשר יזומההתהליך מוותר מרצונו על המעבד, למשל באמצעות:קריאת מערכת חוסמת (כמו wait(), read(), …) אשר מוציאה את התהליך להמתנה.קריאת מערכת exit() אשר מסיימת את התהליך.קריאת מערכת sched_yield() – קריאת מערכת ייעודית לוויתור על המעבד.מערכות הפעלה - תרגול 613

Tutorial 6slide 14הפקעה (preemption)בעיה: תהליך משתמש עלול לרוץ לנצח (למשל, לולאה אינסופית) ולמנוע את המעבד משאר התהליכים

הפקעה (preemption)בעיה: תהליך משתמש עלול לרוץ לנצח (למשל, לולאה אינסופית) ולמנוע את המעבד משאר התהליכים.פגיעה בהוגנות (fairness) ותגובתיות (rrsponsiveness).פתרון: לינוקס מפקיעה (preempt) את המעבד מתהליך אחד לטובת תהליך אחר, בעזרת התקן חומרה מיוחד – השעון.מערכת ההפעלה מבקשת מהשעון לשלוח פסיקה במרווחי זמן קבועים כדי להעביר את השליטה למערכת ההפעלה.כל הפסיקות, בפרט פסיקת שעון, מטופלות במצב גרעין, ואז הגרעין מחליף הקשר אם יש צורך.מערכות הפעלה - תרגול 614

Tutorial 7slide 14יצירת חוט חדשפרמטרים:thread – מצביע למקום בו יאוחסן מזהה החוט החדש במקרה של סיום הפונקציה בהצלחה

יצירת חוט חדשפרמטרים:thread – מצביע למקום בו יאוחסן מזהה החוט החדש במקרה של סיום הפונקציה בהצלחה.attr – מאפיינים המתארים את תכונות החוט החדש, כגון האם החוט הוא חוט גרעין או חוט משתמש, האם ניתן לבצע לו join, כלומר להמתין לסיומו, וכו'. בד"כ נספק ערך NULL המציין חוט ברירת המחדל של המערכת, שניתן להמתין לסיומו.void* (*start_routine)(void*) מצביע לפונקציה שתהווה את קוד החוט. הערך המוחזר מפונקציה זו במקרה של סיומה הטבעי הינו ערך הסיום של החוט.arg – פרמטר שיסופק לפונקציה עם הפעלתה.מערכות הפעלה - תרגול 714

Tutorial 8slide 1תרגול 8מנגנוני סנכרון: משתני תנאימנגנוני סנכרון: סמפוריםדוגמה: מימוש מנעול קוראים-כותביםסינכרון בגרעין לינוקס1מערכות ...

תרגול 8מנגנוני סנכרון: משתני תנאימנגנוני סנכרון: סמפוריםדוגמה: מימוש מנעול קוראים-כותביםסינכרון בגרעין לינוקס1מערכות הפעלה - תרגול 8

Tutorial 8slide 12שחרור חוטים ממתיניםint pthread_cond_signal(pthread_cond_t *cond); משחררת את אחד החוטים הממתינים (הגינות לא מובטחת)

שחרור חוטים ממתיניםint pthread_cond_signal(pthread_cond_t *cond); משחררת את אחד החוטים הממתינים (הגינות לא מובטחת).int pthread_cond_broadcast(pthread_cond_t *cond);משחררת את כל החוטים הממתינים.כל החוטים מפסיקים להמתין על משתנה התנאי ועוברים להמתין על המנעול. החוטים יחזרו לפעילות בזה אחר זה (בסדר כלשהו, לאו דווקא הוגן) לאחר שינעלו מחדש את ה-mutex.שימו לב: אם אין אף חוט שממתין באותו רגע על משתנה התנאי cond, הפעולות חסרות השפעה (הסיגנל הולך לאיבוד ואינו נזכר הלאה).ערך מוחזר: הפונקציות תמיד מצליחות ומחזירות 0.מערכות הפעלה - תרגול 812

Ask Gemini
OS-Spring2021-examA · Q1 — 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.