OS PyramidTechnion 234123 · Operating Systemsbasics → exam
Stage 8: Networking
winter_2019-2020_examAQuestion 3corecritical24 pts
Full original question text (raw OCR)

נא לסמן נכון / לא נכון עבור כל טענה. כל טענה מזכה ב-3 נקודות (8 טענות בסה"כ). בנימוק, יש להתייחס לממשק ה-sockets: האם ממשק זה קשור לטענה? אם כן, כיצד?

  1. 1· short_answer· 3 ptsNetworking

    מערכת ההפעלה לינוקס מממשת את הפרוטוקול HTTP.

    libc syscall wrapper caching pitfalls
  2. 2· short_answer· 3 ptsNetworking

    מערכת ההפעלה לינוקס מממשת את הפרוטוקול TCP.

    libc syscall wrapper caching pitfalls
  3. 3· short_answer· 3 ptsNetworking

    מערכת ההפעלה לינוקס מממשת את הפרוטוקול UDP.

    libc syscall wrapper caching pitfalls
  4. 4· short_answer· 3 ptsNetworking

    מערכת ההפעלה לינוקס מממשת את הפרוטוקול IP.

    libc syscall wrapper caching pitfalls
  5. 5· short_answer· 3 ptsNetworking

    מערכת ההפעלה לינוקס מממשת את הפרוטוקול Ethernet.

    libc syscall wrapper caching pitfalls
  6. 6· short_answer· 3 ptsNetworking

    כדי לשלוח הודעה ב-UDP, המשתמש חייב לציין את מספר הפורט בצד המקבל.

    Process state transitions
  7. 7· short_answer· 3 ptsNetworking

    כדי לשלוח הודעה ב-UDP, המשתמש חייב לציין את כתובת ה-IP של המקבל.

    Process state transitions
  8. 8· short_answer· 3 ptsNetworking

    כדי לשלוח הודעה ב-UDP, המשתמש חייב לציין את כתובת ה-MAC של המקבל.

    Process state transitions

The exam question — original PDF

pages 8, 9

Exactly as it appears on the exam paper.

loading page 8
loading page 9

Built from these components

Ordered basic → advanced. Master the earlier ones first.

L1Process state transitionsL3libc syscall wrapper caching pitfalls

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 2slide 4Process states

Process states created service provided ready preempted scheduled waiting finished or killed requires “slow” service (notably I/O) zombie running termination process is process is status collected runnable sleeping OS (234123) - processes & signals 4

Lecture slide — text above is the material (no raster available).
Tutorial 2slide 14קריאת המערכת wait()pid_t wait(int *wstatus);פעולה: ממתינה עד אשר אחד מתהליכי הבן יסיים

קריאת המערכת wait()pid_t wait(int *wstatus);פעולה: ממתינה עד אשר אחד מתהליכי הבן יסיים.פרמטרים:wstatus – מצביע למשתנה בו יאוחסנו פרטים על תהליך הבן שהסתיים.למשל, wstatus יכיל את ערך הסיום של הבן (הערך שהעביר כארגומנט ל-exit()). ערך הסיום מופיע בבית השני מתוך ארבעת בתי ה- wstatus. כדי לחלץ אותו יש לנצל את המאקרו WEXITSTATUS(*wstatus), המחזיר (*wstatus>>8) & 0xff. במידה ולא מעוניינים בסטטוס הבן שסיים, אפשר להעביר NULL.ערך מוחזר:אם אין בנים או שכל הבנים כבר סיימו ובוצע להם wait() – יוחזר מיד הערך -1.אם יש בנים שסיימו ועדיין לא בוצע עבורם wait() (כלומר הם במצב zombie – יפורט בשקופיות הבאות) – יוחזר מיד ה-pid של אחד הבנים הנ"ל.אחרת – המתנה עד שבן כלשהו יסיים.מערכות הפעלה - תרגול 214איך תהליך אב יכול לחכות לסיום כל תהליכי הבן?מבינים את החישוב?

Tutorial 2slide 18קריאת המערכת exit()שאלה: למה בכלל לקרוא ל-exit(status) , אם אפשר פשוט לרשום return status בסוף פונקציית ה-main?תשובה:...

קריאת המערכת exit()שאלה: למה בכלל לקרוא ל-exit(status) , אם אפשר פשוט לרשום return status בסוף פונקציית ה-main?תשובה: main היא לא באמת הפונקציה הראשית של התכנית...main() נקראת ע"י __libc_start_main() שאוספת את ערך החזרה של main() וקוראת ל-exit().int __libc_start_main(…) { …… exit(main(…));}מסקנה: הפונקציה exit תמיד נקראת לסיום סטנדרטי של התוכנית.מערכות הפעלה - תרגול 218

Tutorial 2slide 19סיום תהליכיםכדי לאפשר לאב לקבל מידע על סיום הבן, לאחר שתהליך מסיים את פעולתו הוא עובר למצב מיוחד – zombie – שבו התהלי...

סיום תהליכיםכדי לאפשר לאב לקבל מידע על סיום הבן, לאחר שתהליך מסיים את פעולתו הוא עובר למצב מיוחד – zombie – שבו התהליך קיים כרשומת נתונים בלבד ללא שום ביצוע משימה.הרשומה נמחקת לאחר שהאב קיבל את המידע על סיום הבן באמצעות wait().שאלה: מה קורה לתהליך "יתום" (orphan), כלומר תהליך שסיים לאחר שאביו כבר סיים בלי לקרוא ל-wait() ?התהליך הופך להיות בן של init.התהליך init ממשיך להתקיים לאורך כל פעולת המערכת.אחד מתפקידיו העיקריים – המתנה לכל בניו כדי לפנות את נתוניהם לאחר סיומם.מערכות הפעלה - תרגול 219

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 24דוגמת קודמסכמתprintf("pid = %d\n", getpid());pid_t pid = fork();if (pid == 0) { printf("child pid = %d\n", getpid());...

דוגמת קודמסכמתprintf("pid = %d\n", getpid());pid_t pid = fork();if (pid == 0) { printf("child pid = %d\n", getpid()); char* args[] = {"/bin/date", NULL}; execv(args[0], args); printf("This should not be printed\n");} else { wait(NULL); printf("parent pid = %d\n", getpid());}פלט לדוגמה:pid = 8919child pid = 8920Sun Oct 29 00:31:32 IDT 2017parent pid = 8919מערכות הפעלה - תרגול 224

Ask Gemini
winter_2019-2020_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.