Storage & Filesystemssupporting
This topic covers how operating systems manage persistent storage through filesystems and optimize disk I/O using the page cache. You'll learn about the logical and physical structure of filesystems, including inodes and data blocks, and the mechanisms for caching disk data in memory. Understanding these concepts is crucial for comprehending data persistence, performance optimization, and consistency challenges in an OS. While optional, these topics are fundamental to how an OS interacts with hardware.
Where to learn it
How to study it
- Master the differences between write-through and write-back caching, including their implications for performance and data consistency (slides r12-page-cache_s048, s049).
- Thoroughly understand the structure of a typical Unix-like filesystem, focusing on inodes, data blocks, and directory entries (slide r13-filesystems_s034).
- Review page cache eviction policies (e.g., LRU) and their interaction with virtual memory management (slides r12-page-cache_s050, s051).
What the exam asks
Exam questions often involve comparing caching strategies, explaining filesystem components, or analyzing scenarios related to data consistency and performance in storage systems.
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.
Exam subsections in this stage (67 parts across 11 questions)
חלק 3 - מערכות קבצים
- 11· mcq· 5 pts
(5 נק') איזו פעולה על קובץ A תגרום בהכרח לעדכון ה-inode המתאים לקובץ A על הדיסק? a. יצירת קישור רך בשם B המצביע ל-A b. כתיבה של 1GB לסוף הקובץ A c. שינוי שם התיקייה המכילה את הקובץ d. שינוי מיקום מחוון הקובץ e. שינוי ההרשאות של תיקיית שורש מערכת הקבצים
libc syscall wrapper caching pitfallsHard link vs symlink inode behavior - נימוק· short_answerlibc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior
- 12· mcq· 5 pts
(5 נק') שליו החליט לכבוד פרישתו מתרגול הקורס לפנק את הסטודנטים. לשם כך כתב תוכנית המגרילה ח סטודנטים אקראיים ומשנה את הציון שלהם בקורס ל-100. הניחו שאין שימוש במטמון הדפים (page cache) ושה-inode objects הרלוונטים כבר נמצאים בזיכרון. הקיפו את ההיגד הנכון ביותר: a. בממוצע זמן ריצת התוכנית יהיה ארוך יותר ב GFS מאשר ב VSFS b. בממוצע זמן ריצת התוכנית יהיה ארוך יותר ב VSFS מאשר ב GFS c. בממוצע זמן ריצת התוכנית יהיה שווים בין VSFS ל GFS d. אם ב VSFS כל ציון (מתוך ח הציונים) שמור בקובץ נפרד אז תשובה a נכונה, אחרת תשובה c נכונה. e. אם בכל ח הפעמים מוגרלת אותה רשומה בדיוק אז תשובה b נכונה, אחרת תשובה a נכונה.
Hard link vs symlink inode behavior - נימוק· short_answerlibc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior
- 13· mcq· 5 pts
(5 נק') יהונתן שם לב שכאשר הוא מזין ציונים באמצעות GFS, אם מערכת ההפעלה קורסת פתאומיות, לעיתים חלק מהציונים אינם מעודכנים. עזרו ליהונתן להבין את מקור הבעיה ואולי תזכו בפקטור מכובד. a. יהונתן צריך להקטין את גודל החוצץ לגודלה של רשומה בודדת b. יהונתן צריך לקרוא את הלוג מסופו לתחילתו c. יהונתן צריך לקרוא מהחוצץ שבזיכרון ולא מהדיסק d. יהונתן צריך בכל פרק זמן מוגדר מראש (למשל כל 100 מילי שניות) לכתוב את תוכן החוצץ לדיסק על אף שהוא אינו מלא e. יהונתן צריך לשנות את קריאת המערכת exit כך שכאשר תהליך מסתיים החוצץ יכתב לדיסק f. אף תשובה אינה נכונה
libc syscall wrapper caching pitfalls - נימוק· short_answerlibc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior
- 14· mcq· 5 pts
(5 נק') עידן שם לב בשימוש ב-GFS טעינת קובץ הציונים לוקחת זמן רב. כיצד עידן יכול לשפר את זמן טעינת הקובץ? a. עידן צריך להקטין את גודל החוצץ לגודל של מגירה בדיסק (4KB) b. עידן צריך לקרוא את הלוג מתחילתו לסופו c. עידן צריך לקרוא אך ורק מהחוצץ שבזיכרון ולא מהדיסק d. עידן צריך בכל פרק זמן מוגדר מראש (למשל כל 100 מילי שניות) לעבור על הלוג ולנקות רשומות שאינן עדכניות e. עידן צריך לשנות את קריאת המערכת read כך שכאשר תהליך מסיים לקרוא רשומה החוצץ יכתב לדיסק f. אף תשובה אינה נכונה
libc syscall wrapper caching pitfalls - נימוק· short_answerlibc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior
- 15· mcq· 5 pts
(5 נק') עידו שם לב שבשימוש ב GFS קריאת ציון לוקחת זמן רב. לכן עידו ממליץ על האופטימיזציה הבאה: בנוסף למבני הנתונים שתוארו תישמר טבלה המכילה את העדכון האחרון של כל רשומה. סמנו את ההיגד הנכון והיעיל ביותר מבחינת זמן הקריאה של רשומה: a. בעת עליית מערכת ההפעלה תיווצר טבלה המכילה את כל הרשומות הקיימות. בעדכון רשומה תהיה גישה לדיסק בלבד ובמהלך קריאת רשומה תהיה גישה לזיכרון בלבד b. בעת עליית מערכת ההפעלה תיווצר טבלה המכילה את כל הרשומות הקיימות. בעדכון רשומה תהיה גישה לזיכרון בלבד ובמהלך קריאת רשומה תהיה גישה לדיסק בלבד c. בעת עליית מערכת ההפעלה תיווצר טבלה המכילה את כל הרשומות הקיימות. בעדכון רשומה תהיה גישה לזיכרון ולדיסק ובמהלך קריאת רשומה תהיה גישה לזיכרון בלבד d. רשומה תתווסף לטבלה רק בעת עדכון או קריאה שלה. בעדכון רשומה תהיה גישה לדיסק בלבד ובמהלך קריאת רשומה תהיה גישה לזיכרון בלבד e. רשומה תתווסף לטבלה רק בעת עדכון או קריאה שלה. בעדכון רשומה תהיה גישה לזיכרון בלבד ובמהלך קריאת רשומה תהיה גישה לדיסק בלבד f. רשומה תתווסף לטבלה רק בעת עדכון או קריאה שלה. בעדכון רשומה תהיה גישה לזיכרון ולדיסק ובמהלך קריאת רשומה תהיה גישה לזיכרון בלבד
libc syscall wrapper caching pitfalls - נימוק· short_answerlibc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior
מערכות קבצים
- 1· mcq· 3 pts
1. open("/a/b/orig.txt”, O_RDONLY | O_CREAT, 0666 /* read/write permissions for all*/); (3 נק') כמה תיקיות שונות נקראו במהלך ()open? a. תלוי b. 1 c. 2 d. 3 e. 4 f. 5 נימוק:
Hard link vs symlink inode behavior - 2· mcq· 3 pts
(3 נק') בהתחשב בהנחה החדשה, עני שוב על סעיף 1. a. תלוי b. 1 c. 2 d. 3 e. 4 f. 5 נימוק:
libc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior - 3· mcq· 3 pts
(3 נק') כמה תיקיות שונות נקראו במהלך ()open ? a. תלוי b. 1 c. 2 d. 3 e. 4 f. 5 נימוק:
libc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior - 4· mcq· 3 pts
(3 נק') האם קריאת המערכת ()open תצליח או תיכשל? אם תצליח, כמה תיקיות שונות היא תקרא? a. תלוי b. קריאת המערכת ()open תיכשל c. קריאת המערכת ()open תצליח ותקרא 1 תיקיות d. קריאת המערכת ()open תצליח ותקרא 2 תיקיות e. קריאת המערכת ()open תצליח ותקרא 3 תיקיות f. קריאת המערכת ()open תצליח ותקרא 4 תיקיות נימוק:
libc syscall wrapper caching pitfalls - 5· mcq· 3 pts
(3 נק') כמה תיקיות שונות נקראו במהלך ()open ? a. תלוי b. 1 c. 2 d. 3 e. 4 f. 5 נימוק:
libc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior - 6· mcq· 4 pts
(4 נק') כמה תיקיות שונות נקראו במהלך ()open? a. תלוי b. 1 c. 2 d. 3 e. 4 f. 5 נימוק:
libc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior - 7· mcq· 4 pts
(4 נק') האם קריאת המערכת ()open תצליח או תיכשל? אם היא תצליח, כמה תיקיות שונות היא תקרא? a. תלוי b. קריאת המערכת ()open תיכשל c. קריאת המערכת ()open תצליח ותקרא 1 תיקיות d. קריאת המערכת ()open תצליח ותקרא 2 תיקיות e. קריאת המערכת ()open תצליח ותקרא 3 תיקיות f. קריאת המערכת ()open תצליח ותקרא 4 תיקיות נימוק:
libc syscall wrapper caching pitfalls - 8· short_answer· 4 pts
(4 נק') כמה נתיבים שונים במערכת הקבצים יכולים להתייחס לקובץ x/y/other.txt/? נימוק:
libc syscall wrapper caching pitfalls
מערכות קבצים
- 1.· mcq· 1 pts
בגישה סדרתית לקבצים, TFS יכולה לשפר את הביצועים ביחס ל-VSFS. נכון / לא נכון
System call trap and kernel entryPer-process file descriptor tableHard link vs symlink inode behavior - 2.· mcq· 1 pts
בגישה אקראית לקבצים, TFS יכולה לשפר את הביצועים ביחס ל-VSFS. נכון / לא נכון
System call trap and kernel entryPer-process file descriptor tableHard link vs symlink inode behavior - 3.· mcq· 1 pts
עבור קבצים קטנים, TFS משתמשת בפחות metadata ביחס ל-VSFS. נכון / לא נכון
System call trap and kernel entryPer-process file descriptor tableHard link vs symlink inode behavior - 4.· mcq· 1 pts
עבור קבצים גדולים, TFS משתמשת בפחות metadata ביחס ל-VSFS. נכון / לא נכון
System call trap and kernel entryPer-process file descriptor tableHard link vs symlink inode behavior - 5.· mcq· 1 pts
קריאות מערכת read עלולות להיכשל ב- TFS (בניגוד ל-VSFS). נכון / לא נכון
libc syscall wrapper caching pitfalls - 6.· mcq· 1 pts
קריאות מערכת write עלולות להיכשל ב- TFS (בניגוד ל-VSFS). נכון / לא נכון
libc syscall wrapper caching pitfalls - ג.· short_answer· 8 pts
(8 נק') לבסוף, טומי החליט להשתמש במערכת הקבצים VSFS עבור הכונן שברשותו. לצערו, טומי גילה כי לאחר זמן מה של שימוש, התפוקה (throughput) של קריאה מהסרט המגנטי ירדה משמעותית. טומי בדק ומצא שבקריאה רציפה של קובץ גדול מספיק (למשל קריאה של נתונים מקובץ גדול מתחילתו ועד סופו), כונן הסרטים רץ קדימה ואחורה מספר רב של פעמים כדי לגשת לכל חלקי הקובץ. כיצד טומי יכול לשפר את תפוקת הקריאה של קבצים שהתוכן שלהם התפזר על-גבי הסרט (כלומר אינם נמצאים יותר כרצף יחיד)? הסבירו בפירוט את הצעתכם: נסו לתאר בקווים כלליים אלגוריתם יעיל לקריאה רציפה של קובץ. הניחו כי הקבצים שאותם טומי קורא קטנים מגודל הזיכרון הפיזי במערכת שלו.
Latency vs throughput process classificationlibc syscall wrapper caching pitfalls - ד.· short_answer· 5 pts
(5 נק') האם הפתרון שהצעתם מתאים גם עבור קבצים גדולים מגודל הזיכרון הפיזי במערכת? אם כן, הסבירו. אם לא, תארו בקצרה כיצד ניתן להתאים את האלגוריתם שלכם לשיפור תפוקת הקריאה של קבצים גדולים מגודל הזיכרון הפיזי במערכת.
libc syscall wrapper caching pitfalls
מערכות קבצים
- א· diagram· 6 pts
(6 נק') השלם את החיצים (הקישורים) החסרים בדיאגרמה. כלומר, לאילו אובייקטים כל אובייקט מתקשר ישירות, והסבר מדוע הקישור נחוץ ומה תפקידו.
libc syscall wrapper caching pitfallsPipe IPC semanticsHard link vs symlink inode behavior - ב.2· short_answer· 2 pts
(2 נק') אם inode object נגיש לשני תהליכים, או שהם חוטים, או שיש ביניהם קשר משפחתי.
Pipe IPC semanticsHard link vs symlink inode behavior - ב.3· short_answer· 2 pts
(2 נק') אם dentry object נגיש לשני תהליכים, או שהם חוטים, או שיש ביניהם קשר משפחתי.
Pipe IPC semantics - ב.4· short_answer· 2 pts
(2 נק') עדכון dentry object דורש עדכון האובייקט המתאים על הדיסק.
libc syscall wrapper caching pitfallsPipe IPC semanticsHard link vs symlink inode behavior - ב.5· short_answer· 2 pts
(2 נק') לכל מערכת קבצים מורכבת (mounted) יש superblock object.
libc syscall wrapper caching pitfalls - ב.6· short_answer· 2 pts
(2 נק') מותר לבצע קישור רך soft (symbolic) link למדריך (directory).
libc syscall wrapper caching pitfallsPipe IPC semanticsHard link vs symlink inode behavior - ב.7· short_answer· 3 pts
(3 נק') הוספת קישור קשה (hard link) מעדכנת את ה-inode שאליו מקשרים.
Hard link vs symlink inode behavior - ב.8· short_answer· 3 pts
(3 נק') לא ניתן להרכיב מערכת קבצים על מדריך (directory) שאינו ריק.
libc syscall wrapper caching pitfalls
שאלה 4 - מערכת קבצים
- 1· short_answer· 2 pts
(2 נק') הגורם המגביל את מספר הקבצים במערכת הוא מספר ה-data blocks נכון \ לא נכון נימוק:
libc syscall wrapper caching pitfalls - 2· short_answer· 2 pts
(2 נק') בהנחה שיש למשתמש הרשאות קריאה\כתיבה לקובץ מסוים, הוא יכול לשנות את שמו. נכון \ לא נכון נימוק:
fork/exec address-space semanticslibc syscall wrapper caching pitfallsHard link vs symlink inode behavior - 3· short_answer· 2 pts
(2 נק') נתון שאם נריץ את הפקודה: cat /foo/bar נקבל את הפלט: Hello אם נבצע את הפקודות: sudo mount /dev/disk-on-key /foo cat /foo/bar האם יתכן שנקבל את הפלט הבא? Hello נכון \ לא נכון נימוק:
fork/exec address-space semanticslibc syscall wrapper caching pitfallsHard link vs symlink inode behavior - 4· trace· 5 pts
(5 נק') נתון הקוד הבא: ```c 1. void f() { 2. Int fd2 = open("/tmp/a.txt", O_WRONLY); 3. write(fd2, "never", 5); 4. close(fd2); //line 2 5. } 6. 7. void main() { 8. int fd1 = open("/tmp/org.txt”, O_WRONLY); 9. write(fd1, "hello", 5); 10. system("cp /tmp/org.txt /tmp/dir/a.txt"); 11. link("/tmp/org.txt", "/tmp/a.txt"); 12. write(fd1, "world", 5); 13. close(fd1); //line 1 14. if(fork() == 0){ 15. f(); 16. } else { 17. wait(); 18. int fd2 = open("/tmp/dir/a.txt”, O_WRONLY); 19. write(fd2, “again”, 5); 20. close(fd2); //line 3 21. } 22. } ``` הנחיות: • התיקייה tmp/dir/ קיימת במערכת, ולתהליך יש הרשאות גישה לכל הקבצים איתם הוא מתעסק • בהתחלה tmp/org.txt/ ריק • קריאת המערכת system(...) פשוט מבצעת את הפקודה שהיא מקבלת כלומר מבצעת cp שמעתיקה את הקובץ שהועבר כפרמטר הראשון לקובץ שהועבר שני. • הפקודה link יוצרת hardlink כמו שנלמד בתרגולים. ציינו את תוכן שלושת הקבצים tmp/org.txt, tmp/a.txt, tmp/dir/a.txt, בכל אחת מהשורות המסומנות בהערות line1,2,3 ונמקו: שם הקובץ / שורה line 1 line 2 line 3 /tmp/org.txt /tmp/dir/a.txt /tmp/a.txt נימוק:
fork/exec address-space semanticslibc syscall wrapper caching pitfallsHard link vs symlink inode behavior - 5· short_answer· 3 pts
(3 נק') דני ובני, שני מפתחים של מערכת הקבצים VSFS, קיבלו משימה מאתגרת לכתוב את המימוש של קישורים רכים (symbolic links) במערכת VSFS. דני טען שכדאי לשמור את המסלול שהקישור הרך מצביע עליו בתוך ה- data block של הקישור, לעומת זאת, בני טען שכדאי לשמור את המסלול בתוך ה- inode. מה היתרון והחיסרון של כל הצעה? נימוק:
libc syscall wrapper caching pitfallsHard link vs symlink inode behavior - 6· short_answer· 3 pts
(3 נק') דני ובני ניגשו לרני, המנהלת של שניהם, כדי שתחליט על איזה הצעה לקבל ולממש. רני החליטה שהיא תאמץ את שתי ההצעות של דני ובני, כך שאם תנאי מסוים מתקיים אז המסלול יישמר ב data block ואם לא אז המסלול יישמר ב- inode. תארו מה התנאי הזה שיקבע מתי לשמור את המסלול ב- data block ומתי ב- inode? נא לציין בהסבר שלכם איפה נשמור את המסלול ב- inode מבלי לשנות את המבנה הקיים שלו (כלומר, מבלי להוסיף שדות חדשים)? נימוק:
Hard link vs symlink inode behavior - 7· trace· 8 pts
(8 נק) נתון הקוד הבא: ```c char buffer[4096] = {0}; open("/foo/bar", O_CREAT | O_WRONLY | O_TRUNC); symlink("/foo/bar", "/foo/B"); int fd = open("/foo/B", O_CREAT | O_WRONLY | O_TRUNC); write(fd, "A", 1); write(fd, "B", 1); write(fd, buffer, 4096); ``` נתון ש: מערכת הקבצים VSFS מורכבת וכי הסופרבלוק כבר נמצא בזיכרון, שאר הנתונים (קבצים, תיקיות, inodes, ...) עדיין בדיסק. הקובץ /foo/bar אינו קיים לפני שמתחילים להריץ תוכנית זו (symlink(target, linkpath הינה קריאת מערכת שיוצרת קישור רך לקובץ שנתון כפרמטר ראשון במסלול שנתון כפרמטר שני המסלול של קישור רך נשמר בתוך ה- inode כמה פעמים ניגש הקוד הזה לדיסק? השלימו את החסר בטבלה הבאה כפי שראינו בתרגולים (כלומר רשמו read/write בתא המתאים לפי הפעולות המתבצעות בכל תא, ולא להתייחס למטמונים השונים): data bitmap inode bitmap root inode foo indode bar inode B inode create (/foo/bar) write(fd, "A", 1) write(fd, "B", 1) write(fd, buffer, 4096)
libc syscall wrapper caching pitfallsHard link vs symlink inode behavior
מערכות קבצים
- 1· short_answer· 4 pts
(4 נק') נסמן ב- N את מספר המצביעים שבלוק מסוג indirect יכול להכיל. מהו ערך ה- N המקסימלי?
libc syscall wrapper caching pitfallsHard link vs symlink inode behaviorSRT / preemptive Gantt construction - 2· calculation· 4 pts
(4 נק') מה הגודל המקסימלי של קובץ במערכת הקבצים הנ"ל כפונקציה של N? (מדובר על גודל הנתונים, ללא מטה-נתונים (meta-data). נדרש ביטוי פשוט ככל האפשר.)
libc syscall wrapper caching pitfalls - 3· calculation· 4 pts
(4 נק') מהו תחום ההיסטים בקובץ שנגישים דרך [13]node.arr ?? (על התשובה להיות "מ- K עד P", בבתים. הביטוי יכול להיות תלוי ב-N שהוגדר לעיל.)
SRT / preemptive Gantt construction - 4· short_answer· 3 pts
(3 נק') נתון קובץ בגודל 16KB. בכמה בלוקים בדיסק קיימים מטה-נתונים אודות הקובץ?
libc syscall wrapper caching pitfallsHard link vs symlink inode behaviorSRT / preemptive Gantt construction - 5· mcq· 3 pts
(3 נק') בהשוואה ל-inode.arr מתחילת השאלה, האם תשתנה ההשהייה (latency) בקריאה מקובץ בגודל ?16KB הקיפו: תגדל / תקטן / תישאר ללא שינוי
Latency vs throughput process classificationHard link vs symlink inode behaviorSRT / preemptive Gantt construction - 6· trace· 4 pts
(4 נק') מה מספר הגישות לדיסק בעת ביצוע open? תארו את רצף הגישות בטבלה (כמו בתרגול).
libc syscall wrapper caching pitfallsHard link vs symlink inode behaviorSRT / preemptive Gantt construction - 7· trace· 3 pts
(3 נק') מה מספר הגישות לדיסק בעת ביצוע read? תארו את רצף הגישות בטבלה (כמו בתרגול).
libc syscall wrapper caching pitfallsHard link vs symlink inode behaviorSRT / preemptive Gantt construction
מערכות קבצים
- 1· short_answer· 2 pts
מה הוא מספר הכניסות בטבלת ה-File Allocation Table (ה-FAT)? בטאו את תשובתכם בעזרת y.
libc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior - 2· short_answer· 2 pts
כמה ביטים נדרש לכל כניסה בטבלת ה-File Allocation Table (ה-FAT)? בטאו את תשובתכם בעזרת y.
libc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior - 3· short_answer· 2 pts
בהנחה שלא מעגלים למעלה (כלפי החזקה השלמה הקרובה של 2) את גודל הכניסה בטבלת ה-FAT, מה יהיה גודל הטבלה (בבתים)? בטאו את תשובתכם בעזרת y.
libc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior - 4· calculation· 5 pts
מיכאל, מהנדס מחשבים בחברת Fandisk, נדרש לתכנן מערכת קבצים לדיסק-און-קי החדש של החברה. המנהל של מיכאל דרש ניצולת של לפחות 99.9% במערכת. כלומר, החלק של הדיסק השמור לנתוני הקבצים והתיקיות (Data Region) צריך להיות לפחות 99.9% מנפח הדיסק הכולל. מיכאל בחר להשתמש במערכת FAT. מהו נפח הדיסק המקסימלי האפשרי (בבתים) תחת דרישה זו במערכת FAT? ניתן להתעלם מה-superblock בחישובים שלכם. תזכורת: מספר הבלוקים הכולל y צריך להיות חזקה שלמה של 2.
libc syscall wrapper caching pitfalls - 5· short_answer· 4 pts
מרים, שותפה של מיכאל לפרויקט, הציעה את השינוי הבא למערכת הקבצים FAT: בכל כניסה בטבלת ה-FAT, נשמור 2 מצביעים: אחד לבלוק הבא, והשני לבלוק הבא אחריו. כלומר בכל כניסה בטבלת ה-FAT, נשמור מצביעים ל-2 הבלוקים העוקבים לבלוק הנוכחי. תארו יתרון אחד להצעה של מרים.
libc syscall wrapper caching pitfalls - 6· calculation· 4 pts
בהנחה שמיישמים את ההצעה של מרים, כיצד תשתנה תשובתכם לסעיף 3? כלומר, מה יהיה נפח הדיסק המקסימלי האפשרי (בבתים) תחת דרישת ניצולת מינימלית של 99.9% במערכת FAT עם ההצעה של מרים? ניתן להתעלם מה-superblock בחישובים שלכם. תזכורת: מספר הבלוקים הכולל y צריך להיות חזקה שלמה של 2.
libc syscall wrapper caching pitfalls - 7· short_answer· 4 pts
הסבירו את המושג קישורים קשיחים (Hard links). האם מערכת הקבצים FAT תומכת בריבוי של קישורים קשיחים לאותו קובץ? נמקו.
libc syscall wrapper caching pitfallsHard link vs symlink inode behavior
מערכות קבצים
- 1· short_answer· 4 pts
(4 נק') מני יתרון אחד וחסרון אחד של מערכת הקבצים FAT לעומת VSFS.
libc syscall wrapper caching pitfalls - 2· short_answer· 3 pts
(3 נק') האם מערכת הקבצים FAT תומכת בלינקים קשים? במידה וכן, הסבירי כיצד. במידה ולא, הסבירי מדוע.
libc syscall wrapper caching pitfalls - 3a· trace· 7 pts
(7 נק') סעיף א: מה יהיה פלט הקוד? נמקי. 1. echo "Hello World!" > /a/b 2. In /a/b c 4. cat c ו. הקוד יצליח, הפלט יהיה ריק. ii. הקוד יצליח, הפלט יהיה "Hello World" iii. הקוד יצליח, הפלט יהיה "!Goodbye World" iv. הקוד ייכשל, תהיה שגיאה. כמה פעמים ניגש הקוד לדיסק? השלימי את הטבלה הבאה (שורות ועמודות חסרות) ונמקי.
libc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior - 3b· trace· 8 pts
(8 נק') סעיף ב: מה יהיה פלט הקוד? נמקי. In -s /a/b /d/e echo "Goodbye World!" > /d/e cat c ו. הקוד יצליח, הפלט יהיה ריק. ii. הקוד יצליח, הפלט יהיה "Hello World" iii. הקוד יצליח, הפלט יהיה "!Goodbye World" iv. הקוד ייכשל, תהיה שגיאה. כמה פעמים ניגש הקוד לדיסק? השלימי את הטבלה הבאה (שורות ועמודות חסרות) ונמקי.
libc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior - 3c· trace· 3 pts
(3 נק') סעיף ג: מה יהיה פלט הקוד? נמקי. rm /a/b cat /d/e ו. הקוד יצליח, הפלט יהיה ריק. ii. הקוד יצליח, הפלט יהיה "Hello World!". iii. הקוד יצליח, הפלט יהיה "!Goodbye World" iv. הקוד ייכשל, תהיה שגיאה.
libc syscall wrapper caching pitfallsPer-process file descriptor tableHard link vs symlink inode behavior
מערכות קבצים
- 1· calculation· 4 pts
(4 נק') מה מספר הקבצים המקסימלי במערכת הקבצים AFS?
libc syscall wrapper caching pitfalls - 2· short_answer· 4 pts
(4 נק') למרבה הצער, מערכת הקבצים המעודכנת אינה מתאימה לדיסק בנפח 16MB. מדוע?
libc syscall wrapper caching pitfalls - 3· short_answer· 4 pts
(4 נק') הציעו לאבי שינוי במבנה מערכת הקבצים כך שתתאים לדיסק בנפח 16MB.
libc syscall wrapper caching pitfalls - 4· short_answer· 4 pts
(4 נק') הסבירו בפירוט כיצד ניתן לממש את השיטה של נעמי. היכן בדיוק בתוך ה-inode יישמר התוכן של קובץ קטן? נימוק:
Hard link vs symlink inode behavior - 5· short_answer· 4 pts
(4 נק') הביאו דוגמה לפעולה על קובץ אשר תהיה מהירה יותר בשיטה של נעמי. הסבירו במפורט מדוע השיטה של נעמי מהירה יותר לעומת מערכת הקבצים המקורית AFS.
libc syscall wrapper caching pitfalls
סקריפט וקריאות מערכת (Shell Script and System Calls)