6.5 מערכת הקבצים הוירטואלית תרגול
תרגול - מערכת הקבצים הוירטואלית - VFS¶
תרגיל 1 - בחינת inodes עם stat¶
השתמשו בפקודה stat כדי לבדוק את ה-inode של כמה קבצים:
א. מה מספר ה-inode של כל קובץ?
ב. איזה מידע מופיע ב-stat שלא מופיע ב-ls -l?
ג. הריצו ls -i /etc/passwd - מה ההבדל בין הפלט הזה לבין stat?
תרגיל 2 - קישורים קשיחים מול קישורים רכים - hard links vs soft links¶
א. צרו קובץ וקישור קשיח אליו:
הריצו ls -li /tmp/original.txt /tmp/hardlink.txt. מה מספר ה-inode של כל אחד? מה המשמעות?
ב. עכשיו צרו קישור רך (symbolic link):
הריצו ls -li /tmp/softlink.txt. מה מספר ה-inode שלו? האם הוא זהה ל-original?
ג. מחקו את הקובץ המקורי:
מה קורה כשמנסים לקרוא מ-hardlink.txt? ומה קורה כשמנסים לקרוא מ-softlink.txt? הסבירו את ההבדל באמצעות המושגים inode ו-dentry.
תרגיל 3 - חקירת נקודות mount¶
א. הריצו את הפקודה findmnt (או mount) ובחנו את הפלט. מצאו:
- באיזה סוג מערכת קבצים נמצא / (השורש)?
- האם /proc מותקן? מה סוג מערכת הקבצים?
- האם /sys מותקן? מה סוג מערכת הקבצים?
- האם /tmp מותקן בנפרד? אם כן, מה סוג מערכת הקבצים?
ב. הריצו:
מה ההבדל בין מערכות קבצים שמסומנות ב-nodev לבין אלו שלא?
תרגיל 4 - page cache בפעולה¶
נבדוק את ה-page cache בעבודה:
א. הריצו:
רשמו את הערכים.
ב. עכשיו קראו קובץ גדול (למשל קובץ בינארי של תוכנית):
ג. הריצו שוב את הפקודה מסעיף א. מה השתנה? למה Cached גדל?
ד. הסבירו: אם נקרא את אותו קובץ שוב, האם הוא ייקרא מהדיסק? למה?
תרגיל 5 - שאלה תיאורטית¶
תארו את הזרימה המלאה של מה שקורה בתוך הקרנל כשתהליך קורא ל:
התייחסו לשלבים הבאים:
- פתרון הנתיב (pathname resolution) - מה קורה בכל רכיב?
- בדיקת הרשאות
- יצירת struct file
- החזרת file descriptor
מה התפקיד של ה-dcache בתהליך? מה קורה אם הdentry לא נמצא בcache?