OS PyramidTechnion 234123 · Operating Systemsbasics → exam
Stage 10: Storage & Filesystems
2017A_Winter_BQuestion 4core25 pts

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

טומי, בוגר הקורס במערכות הפעלה, מצא במכירת חיסול כונן סרטים מגנטיים וספרים טכניים המפרטים איך לתפעל אותו. כונן סרטים מגנטיים הוא אמצעי אחסון המורכב מ-3 חלקים עיקריים: 1. סרט מגנטי שעליו נשמר המידע. הסרט מתוח בין שני גלגלים ממונעים כמו בתמונה. 2. ראש קורא קבוע במקומו (בניגוד לדיסק קשיח, שבו הראש הקורא יכול לנוע). 3. הבקר של הכונן, שתפקידו "להריץ" את הסרט המגנטי קדימה או אחורה עד שהמקום הרצוי לקריאה/כתיבה נמצא מתחת לראש הקורא. ב. (6 נק') בשלב הבא, טומי רצה לנצל את הנפח הגדול של הכונן (500 גיגה בייט) ולשמור עליו מספר קבצים. לשם כך החליט לממש בעצמו מערכת קבצים פשוטה --- TFS, שבה הקבצים נשמרים ברצף, בזה אחר זה, כאשר לפני כל קובץ נשמרת רשומת header בגודל 128 בתים המכילה metadata עבור הקובץ: [Table with Field offset, Field size, Field] פרט לרשומות ה-header, מערכת הקבצים TFS אינה משתמשת במבני נתונים נוספים על הכונן. למערכת שהציע טומי יש יתרונות וחסרונות ביחס למערכת הקבצים VSFS שנלמדה בהרצאות (מערכת הקבצים הקלאסית של UNIX עם מספר רמות של מצביעים, או באנגלית: multi-level index). תזכורת: גודל inode במערכת הקבצים VSFS הוא 128 בתים. ענו נכון / לא נכון עבור ההיגדים הבאים, והסבירו. תשובה ללא הסבר לא תתקבל.

Full original question text (raw OCR)

שאלה 4 - מערכות קבצים (25 נק)

  1. א.· short_answer· 6 ptsKernel Modules

    (6 נק') טומי לא מצא דרייבר עבור הכונן הספציפי במערכת ההפעלה שלו (לינוקס), וכתוכניתן אמיץ החליט לממש בעצמו מודול המאפשר למערכת ההפעלה להשתמש בכונן כהתקן תווים (chrdev). כפי שלמדתם, טומי נדרש לממש את אוסף הפעולות המוגדרות ב-struct file_operations (בקיצור, fops) עבור הכונן הספציפי שברשותו. מלאו את הטבלה הבאה וציינו עבור הפעולות הבאות של fops, האם הן יכולות לדרוש תנועה של הסרט המגנטי ולאיזה כיוון (קדימה/אחורה = לכתובות גבוהות/נמוכות יותר, בהתאמה). נמקו. שימו לב: ניתן לפתור את השאלה ביותר מדרך אחת.

    libc syscall wrapper caching pitfalls
  2. בגישה סדרתית לקבצים, TFS יכולה לשפר את הביצועים ביחס ל-VSFS. נכון / לא נכון

    System call trap and kernel entryPer-process file descriptor tableHard link vs symlink inode behavior
  3. בגישה אקראית לקבצים, TFS יכולה לשפר את הביצועים ביחס ל-VSFS. נכון / לא נכון

    System call trap and kernel entryPer-process file descriptor tableHard link vs symlink inode behavior
  4. עבור קבצים קטנים, TFS משתמשת בפחות metadata ביחס ל-VSFS. נכון / לא נכון

    System call trap and kernel entryPer-process file descriptor tableHard link vs symlink inode behavior
  5. עבור קבצים גדולים, TFS משתמשת בפחות metadata ביחס ל-VSFS. נכון / לא נכון

    System call trap and kernel entryPer-process file descriptor tableHard link vs symlink inode behavior
  6. קריאות מערכת read עלולות להיכשל ב- TFS (בניגוד ל-VSFS). נכון / לא נכון

    libc syscall wrapper caching pitfalls
  7. קריאות מערכת write עלולות להיכשל ב- TFS (בניגוד ל-VSFS). נכון / לא נכון

    libc syscall wrapper caching pitfalls
  8. ג.· short_answer· 8 ptsStorage & Filesystems

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

    Latency vs throughput process classificationlibc syscall wrapper caching pitfalls
  9. ד.· short_answer· 5 ptsStorage & Filesystems

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

    libc syscall wrapper caching pitfalls

The exam question — original PDF

pages 12, 13, 14, 15, 16

Exactly as it appears on the exam paper.

loading page 12
loading page 13
loading page 14
loading page 15
loading page 16

Built from these components

Ordered basic → advanced. Master the earlier ones first.

L2System call trap and kernel entryL2Latency vs throughput process classificationL3libc syscall wrapper caching pitfallsL3Per-process file descriptor tableL3Hard link vs symlink inode behavior

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 9POSIX file descriptors (FDs)

POSIX file descriptors (FDs) • A successful open<“file name”> of a file returns a FD rpt – A nonnegative integer – An index to a per-process array called the “file descriptor table” – Each entry in the array saves, e.g., the current offset – Threads share the array (and hence the offset) – C’s FILE structure encapsulates a FD • FD or filename? – Some file-related POSIX system calls operate on FDs • read, write, fchmod, fchown, fchdir, fstat, ftruncate… – Others operate on file names • chmod, chown, chdir, stat, truncate – Has security implications: FD versions are more secure in some sense • Because association of FD to underlying file is immutable – Once an FD exists, it will always point to the same file • Whereas association between file & its name is mutable – So they can lead to TOCTTOU (time of check to time of use) races OS (234123) - files 9

Lecture slide — text above is the material (no raster available).
Lecture 11–12slide 26Hard links – when is a file deleted?

Hard links – when is a file deleted? • Every file has a “reference count” associated with it – link()  ref_count++ – unlink()  ref_count-- • if( ref_count == 0 ) – The file has no more names – It isn’t pointed to from any node within the file hierarchy – So it can finally be deleted • What if an open file is deleted? (its ref_count==0) – Can we still access the file through the open FD(s)? • Yes – If >=1 processes have the file open when the last link is removed • The link shall be removed before unlink() returns • But the removal of the file contents shall be postponed until all references (file descriptors) to the file are close()-ed • Have you seen files names that begin with “.nfs”? OS (234123) - files 26

Lecture slide — text above is the material (no raster available).
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).
Tutorial 2slide 16קריאת המערכת waitpid()pid_t waitpid(pid_t pid, int *wstatus, int options);פעולה: המתנה לסיום בן ספציפי שמספרו pid

קריאת המערכת waitpid()pid_t waitpid(pid_t pid, int *wstatus, int options);פעולה: המתנה לסיום בן ספציפי שמספרו pid.wait(), waitpid() הן קריאות מערכת חוסמות.כלומר חוסמות את התקדמות התהליך עד להתרחשות תנאי מסוים.באנגלית: blocking system calls.הארגומנט options מאפשר לשנות את ההתנהגות של waitpid() לקריאת מערכת לא חוסמת.אם options==WNOHANG קריאת המערכת תחזור מיד, כאשר ערך חזרה 0 משמעותו שאף תהליך בן עוד לא סיים, ואילו ערך חזרה חיובי הוא ה-pid של תהליך בן שסיים ונמצא עדיין במצב zombie.מערכות הפעלה - תרגול 216

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 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

Tutorial 2slide 25אתחול תהליכים בלינוקסמשתמשים מתחברים לעבודה בלינוקס דרך מסופים (terminal)

אתחול תהליכים בלינוקסמשתמשים מתחברים לעבודה בלינוקס דרך מסופים (terminal).מסוף = מסך + מקלדת (מקומי או מרוחק).התהליך init יוצר תהליך בן עבור כל מסוף, אשר טוען ומבצע את המשימות הבאות לפי הסדר:איתחול של המסוף.התחברות של המשתמש עם שם משתמש וסיסמא באמצעות תכנית login.אם אושרה כניסת המשתמש: קריאה לתוכנית shell(כמו tcsh או bash) המאפשרת למשתמש להעביר פקודות למערכת ההפעלה.מערכות הפעלה - תרגול 225

Tutorial 2slide 26דוגמה לשימוש בתהליכים - shellממשק שורת פקודה (command line)

דוגמה לשימוש בתהליכים - shellממשק שורת פקודה (command line).ייעוד עיקרי: לקבל פקודות ולבצע אותן באופן סדרתי.ה-shell מייצר תהליך בן עבור כל פקודה על-מנת לבצע אותה.כל פקודה ניתן להריץ בחזית (foreground) או ברקע (background).הרצה בחזית: האב (shell) ממתין לסיום הבן לפני קריאת הפקודה הבאה.הרצה ברקע: האב (shell) עובר מיד לקריאת הפקודה הבאה.ייעוד נוסף: להציג קבצים ותיקיות על-מנת לסייר במערכת.דוגמה חיה:https://www.tutorialspoint.com/unix_terminal_online.phpמערכות הפעלה - תרגול 226

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 23נהוג לסווג תהליכים לשני סוגיםתהליך אינטראקטיבי I/O Boundמעוניין בזמן המתנה נמוך

נהוג לסווג תהליכים לשני סוגיםתהליך אינטראקטיבי I/O Boundמעוניין בזמן המתנה נמוך.latency sensitive.דוגמה: נגן סרטים שמחליף 60 פריימים בשנייה.בדרך-כלל מוותר על המעבד מרצונו אחרי פרק זמן קצר בגלל המתנה לפעולות I/O.תהליך חישוביCPU Boundמעוניין בזמן תגובה נמוך.throughput sensitive.דוגמה: סקריפט python שמנתח נתונים ע"י חישובים אלגבריים.בדרך-כלל לא מוותר על המעבד מרצונו אלא מופקע.מערכות הפעלה - תרגול 523

Tutorial 12slide 4הבעיה: התקני איחסון איטייםהתקני איחסון הם בעלי השהיה גבוהה יחסית לזיכרון

הבעיה: התקני איחסון איטייםהתקני איחסון הם בעלי השהיה גבוהה יחסית לזיכרון.זמני ההשהיה האופיינים (נכון לשנת 2020) בגישה אקראית*:זיכרון (DRAM) – 100 ns.כונן SSD – 16 us.כונן דיסק קשיח (HDD) – 2 ms.המרכיב הדומיננטי הוא זמן הזזת הראש הקורא (seek latency).*גישה אקראית מוגדרת כקריאה/כתיבה של 8B בכתובת כלשהי.מערכות הפעלה - תרגול 124

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
2017A_Winter_B · Q4 — 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.