Download ppt - מערכות הפעלה

Transcript
Page 1: מערכות הפעלה

מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול

Page 2: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 2(c) 2004 אלינה נאימרק

תוכן התרגולVFS

מהוVFSמערכות קבצים מיוחדות

- מודל משותף לניהול קבציםCommon File Model אובייקטים שלVFS

superblock,inode, file object, dentryהרכבה/ניתוק מערכות קבצים

mount, unmount-פעולות בסיסיות בVFS

( איתור מסלולpathname)פתיחה וסגירה של קבציםקריאה וכתיבה לקובץ

Page 3: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 3(c) 2004 אלינה נאימרק

הצורך במערכת כללית לניהול קבצים

קיים מספר רב של מערכות קבצים, כשכל מערכתפועלת בצורה שונה ובעלת מבנה פיזי שונה מאחרות.

נרצה שמערכת הפעלה תוכל לחבר מערכות קבציםמסוגים שונים ותדע לעבוד איתן בצורה אחידה.

:הרעיון הוא להחזיק בגרעין מידע על מספר רב של מערכות קבצים

שיאפשר תמיכה בכל פעולות המוגדרות ע"י כל אחת ממערכות הקבצים הנתמכות.

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

Page 4: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 4(c) 2004 אלינה נאימרק

VFS( Virtual Filesystem Switch)היא שכבת תוכנה בגרעין, מערכת קבצים מדומה

המספקת ממשק אחיד לכל מערכות הקבצים הספציפיות.

VFS מאפשרת להרכיב מערכות קבצים מסוגים שונים ומספקת ממשק אחיד לגישה לקבצים

הנמצאים במערכות הקבצים השונות. VFS מתרגמת את קריאות המערכת הכלליות

לקריאות ספציפיות המתאימות לאותה מערכת קבצים בה נמצא הקובץ.

Page 5: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 5(c) 2004 אלינה נאימרק

VFSסוגי מערכות קבצים הנתמכות ב-

מערכות קבצים על הדיסק.1.-מערכות קבצים ייחודיות לLinux – Ext2, Ext3, ReiserFs מערכות קבצים שלUnix – SysV)System V(, UFS)BSD,

Solaris( מערכות קבצים שלDos/Windows – FAT, NTFSואחרות

מערכות קבצים מרוחקות, הנמצאות על מחשבים 2.NFS, AFS)אחרים, המחוברים דרך רשת תקשורת )

מערכות קבצים מיוחדות, שאינן מנהלות זיכרון 3.משני, אלא מאפשרות לנהל בצורה פשוטה מבני

נתונים השייכים לגרעין.

Page 6: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 6(c) 2004 אלינה נאימרק

מערכות קבצים מיוחדות מערכות קבצים מיוחדות משמשות לשתי מטרות

עיקריות: מאפשרות לתהליכי מערכת ואדמיניסטרטורים לבצע ניטור

ובקרה על פעולת הגרעין בצורה פשוטה. ,מאפשרות מימוש מנגנונים מיוחדים של מערכת ההפעלה

sockets ו-pipesכגון :מערכות קבצים מיוחדות הנפוצות ביותר הן

devfs מכילה קבצים עבור התקני המערכת, קבצים אלה – משמשים לעבודה עם ההתקנים

pipefs -מכילה את ה – pipes מאפשרת לגרעין לעבוד עם , כמו עם קבצים רגילים. pipesה-

shmמכילה אזורי זיכרון משותף – sockfs מכילה – socketsprocניטור ובקרה כלליים של פעולת הגרעין –

Page 7: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 7(c) 2004 אלינה נאימרק

מודל משותף לניהול קבצים Common File Model

VFS מגדירה מודל משותף לניהול קבצים עבור כל סוגי Linuxמערכות הקבצים הנתמכות ע"י

המודל תואם את המודל המקובל בכל מערכותUnix ( מצמצם את התקורה בניהול מערכת הקבצים הרגילהnative של )

Linux. כל מערכות הקבצים האחרות צריכות "לתרגם" את המבנה

.VFSשלהם למודל המוגדר ע“י לפי המודל שלVFS מדריך הוא קובץ המכיל רשימה של קבצים

ומדריכים אחרים. מערכת קבצים מסוגFAT מנהלת עץ מדריכים מיוחד והמדריכים הם

אינם קבצים. ,כדי להתאים למודל המשותףLinux מייצר קבצי מדריכים מהמבנים

.FATהמוגדרים במערכת קבצים מסוג

Page 8: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 8(c) 2004 אלינה נאימרק

מבני הנתונים של המודל המשותףVFS משתמש במספר סוגי אובייקטים לניהול העבודה

עם מערכות הקבצים, מדריכים וקבצים: superblock object מכיל מידע כללי על מערכת קבצים -

מסוימת.inode object-מכיל מידע על קובץ מסוים. מספר ה – inode

מזהה בצורה חד-משמעית את הקובץ במערכת הקבצים.file object.מכיל מידע על קובץ שנפתח ע"י תהליך כלשהו – dentry object מכיל מידע לגבי כניסה במדריך )שיכולה להיות –

מדריך או קובץ(.

הנ"ל נמצאים בזיכרון הראשי, לחלק כל האובייקטים מהם קיימים אובייקטים תואמים הנמצאים על הדיסק.

Page 9: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 9(c) 2004 אלינה נאימרק

- דוגמהVFSהאובייקטים של בשקף הבא מופיע שרטוט המתאר את האינטרקציה בין

VFSתהליכים לאובייקטים של מוצגים שלושה תהליכים, שפתחו את אותו הקובץ הפיזי על

הדיסק לכל תהליך ישfile objectמשלו עבור הקובץ הפתוח כלfile object מקושר ל dentryמתאים 2 ו- 1תהליכים( ניגשים לקובץ דרך אותו קישור hard link דרך – )

dentryאותו ניגש לקובץ דרך מסלול גישה שונה )דרך קישור שונה(3תהליך -הdentries של הקבצים של כל תהליכים מצביעים לאותו inode

Page 10: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 10(c) 2004 אלינה נאימרק

process 1

process 2

process 3

file object

file object

file object

dentryobject

dentryobject

inode objectSuperblock

object

disk file

dentry cache

fdf_dentryd_inodei_sb

Page 11: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 11(c) 2004 אלינה נאימרק

To link or not to link בLinux בדומה ל( UNIX יש )סוגים של 2 links:hard link נוצר ע"י – ln src dst

יוצרlink כניסה במדריך( נוסף ל( inode של קובץ srcrm f1-מקטינה את מונה ה - hard links של ה inode הקובץ ימחק מהדיסק רק כאשר כל הhard linksאליו יבוטלו

soft )symbolic( link נוצר ע"י – ln –s src dst יוצר הצבעה בלבד, בדומה לalias אפשר ליצורsymbolic linkגם לקובץ שלא קיים כתיבה לsymbolic linkכותבת לקובץ rm f1 כאשר ה( f1 הוא soft linkתמחוק את ה ) link ולא את הקובץ המוצבע

בWindows קובץ .lnkפשוט מכיל את המסלול אל הקובץ המוצבע כתיבה ל.lnk משנה את קובץ .lnkולא נוגעת כלל בקובץ המוצבע רק הקשה על העכבר מתורגמת ע"יwindowsלגישה לקובץ המוצבע

Page 12: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 12(c) 2004 אלינה נאימרק

Superblock object לכל מערכת קבצים קיים אובייקט מיוחד המכיל מידע

.superblockעל המערכת הנ"ל – -הsuperblock מכיל מידע על ההתקן עליו מאוחסנת

מערכת הקבצים, סוג מערכת הקבצים וכו'.-בנוסף הsuperblock כולל מבנה המכיל פונקציות

טיפול המוגדרות עבור מערכת הקבצים הנתונה. פונקציות הטיפול מממשות את הממשק המשותף של

, עבור מערכת הקבצים הנוכחית. VFSה- עבור כל מערכת קבצים מוגדר אוסף זהה של פונקציות

טיפול, אבל רק חלק מהן ממומש )על-פי סוג מערכת הקבצים(

:דוגמאות לפונקציות הטיפולread_inode)(, put_super)(, remount_fs )(...

Page 13: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 13(c) 2004 אלינה נאימרק

inode Object לכל קובץ במערכת קבצים רגילה ישinode על הדיסק המכיל

מידע על הקובץ.inodeמזהה את הקובץ בצורה חד-ערכית –

.שם הקובץ הוא תווית שיכולה להשתנות ולא משמשת לזיהוי הקובץinode object הוא אובייקט בזיכרון אשר מאותחל עם המידע

התואם על הדיסק.inodeהנמצא ב--אם ערך השדות בobject inode משתנה, יש צורך לעדכן גם

התואם על הדיסק. inodeאת ה--המידע בinode object כולל תכונות שונות של הקובץ, כגון

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

למערכת הקבצים בה הקובץ נמצא(. גם לכל מדריך ישinode משלו, כי ב VFSמדריך הוא קובץ

Page 14: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 14(c) 2004 אלינה נאימרק

File Objectfile object מתאר קובץ שנפתח ע"י תהליך כלשהו, ומשמש

לאינטרקציה בין התהליך לקובץ. Linux מחזירה לתהליך file descriptor-שמצביע ל file object.זה

file object מוגדר רק עבור קובץ פתוח ואין לו מבנה תואם על הדיסק

-בשונה מהinode-הfile object-מצביע ל dentry המקושר לקובץ, דגלים שהוגדרו

בפתיחת הקובץ )קריאה, כתיבה,...(, מחוון הקובץ, וכו'.-הfile object מכיל גם מבנה המצביע לפונקציות הטיפול

בקובץ שנפתח.-מבנה זה מאותחל מהinode object.של הקובץ : רשימת הפונקציות כוללתread)(, write)(, llseek)(ואחרות .

Page 15: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 15(c) 2004 אלינה נאימרק

dentry Object הגרעין יוצרdentry עבור כל כניסה במדריך, המופיעה בתוך

מסלול גישה לקובץ או לתת-מדריך. : לדוגמה: אם מסלול הגישה הוא /tmp/test אזי יווצרוdentries

עבור: /)המדריך הראשי( tmp "/"-כניסה ב - test "-כניסה ב -/tmp"

!שימו לבdentry קיים רק בזיכרון הראשי, אין מבנה תואם על הדיסק.

-הdentry-מכיל מצביע ל inode של הקובץ או המדריך אליו הכניסה מתייחסת.

-כמו-כן, אם הdentry הוא של כניסה של תת-מדריך, אז הוא מצביע לרשימה של הבנים של אותו תת-מדריך.

Page 16: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 16(c) 2004 אלינה נאימרק

dentriesמטמון ה- בהרבה מקרים תהליכים ניגשים לאותו קובץ בפרק

זמן קצר. לדוגמה תהליך שמעדכן קובץ ומיד אחריו תהליך שמהדר אותו.

קריאת מידע המתאר מדריך מסוים מהדיסק ובנייתdentry .מתאים הן פעולות יקרות המצריכות זמן רב

מטמון שלdentries מאפשר לצמצם את הזמן בזיכרון.dentries הדרוש ע"י שמירה של

Page 17: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 17(c) 2004 אלינה נאימרק

Mounting הרכבה של מערכת קבצים --ניתן להוסיף מערכות קבצים נוספות לתוך הVFS. הפעולה של הוספת מערכת קבצים נקראת הרכבה

(Mounting.) הרכבת מערכת הקבצים החדשה נעשית לתוך מדריך קיים

במערכת הקבצים הקיימת. ( מדריך זה נקרא נקודת הרכבהmount point.)

( לכל מערכת קבצים פיזית מוגדר מדריך שורשroot directory.)-מערכת הקבצים שמורכבת לתוך השורש של הVFS נקראת

(.root filesystemמערכת הקבצים הראשית ) הרכבת מערכת קבצים נעשית באמצעות קריאת המערכת

mount)( הרכבה וניתוק של מערכת קבצים תצליח רק במקרה ולנותן

ההוראה יש את ההרשאות המתאימות.

Page 18: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 18(c) 2004 אלינה נאימרק

(2הרכבה של מערכת קבצים )( לאחר שמרכיבים למדריך מסויםmount

point מערכת קבצים חדשה, לא ניתן )לגשת לקבצים ולמדריכים שהיו תחת

מדריך זה לפני ביצוע ההרכבה. לאחר ההרכבה ניתן לגשת לקבצים

במערכת הקבצים שהוספה באמצעות שרשור המסלול מהשורש לנקודת

ההרכבה, יחד עם המסלול משורש המערכת המורכבת אל הקובץ המבוקש.

:גישה ל- למשל/usr/src-בLinux ניתן להרכיב למערכת הקבצים

הכללית את אותה מערכת קבצים פיזית מספר פעמים בנקודות הרכבה שונות.

מאפשר להגיע לאותה מערכת קבצים(.pathבמסלולי גישה שונים )

bin etc usr

include src bin

root filesystem

/dev/dsk1 filesystem

Page 19: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 19(c) 2004 אלינה נאימרק

ניתוק של מערכת קבצים-ניתן לנתק מערכת קבצים מהVFS ע"י שימוש

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

קבצים אחרות, גם הן יתנתקו. לאחר הניתוק ניתן יהיה שוב לגשת לקבצים שהיו

תחת נקודת ההרכבה לפני ההרכבה.

Page 20: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 20(c) 2004 אלינה נאימרק

להרכבה/ניתוק מערכות shellפקודות קבצים

קיימות פקודותshell המאפשרות למשתמש להרכיב ולנתק ,מערכות קבצים.

פקודתmount מרכיבה מערכת קבצים )מעטפת לקריאת – (.)(mountהמערכת

פקודתmount ללא פרמטרים נותנת את רשימת ההרכבות הקיימת במערכת.

mount –t type device dir typeסוג מערכת קבצים – device מסלול למערכת קבצים – dirנקודת הרכבה –

פקודת umount מנתקת מערכת קבצים )מעטפת לקריאת – (.)(unmountהמערכת

umount dirDir .נקודת ההרכבה –

Page 21: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 21(c) 2004 אלינה נאימרק

(pathnameאיתור מסלול )-השאלה: בהינתן מסלול לקובץ, כיצד מגיעים לinode

המתאים? .באופן כללי – שבירת המסלול לסדרת שמות קבצים

.כל שמות הקבצים פרט לאחרון מייצגים מדריכים-שימוש במטמון הdentryיכול להאיץ את החיפוש

-מעדכנים את מטמון הdentryתוך כדי החיפוש :נקודות בעייתיות

יש לוודא שהתהליך מורשה לגשת לכל אחד מהמדריכים בדרךשם קובץ יכול להיות קישור סימבולי שמתייחס למסלול אחר כל כניסה בדרך עשויה להיות נקודת הרכבה של מערכת

קבצים אחרת )החיפוש עשוי להתפרש על פני מספר מערכות קבצים(.

Page 22: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 22(c) 2004 אלינה נאימרק

(1ביצוע חיפוש במסלול ) נראה נקודות מרכזיות באלגוריתם, ללא התייחסות

למקרי קצה:במהלך האלגוריתם משתמשים בשני שדות עיקריים

dentry-כתובת אובייקט ה – dentryשל המדריך הנוכחי mnt-מצביע ל – superblock של מערכת הקבצים של

המדריך הנוכחי אתחול: קובעים אתdentry-ו mnt בהתאם למדריך

ההתחלתי-מסלול מוחלט(, החיפוש מתחיל במדריך /אם שם המסלול מתחיל ב(

( current->fs->rootהראשי של התהליך )גישה דרך אחרת )מסלול יחסי( מאותחל לפי הגדרת מדריך העבודה של

(current->fs->pwdהתהליך הנוכחי. )גישה דרך

Page 23: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 23(c) 2004 אלינה נאימרק

(2ביצוע חיפוש במסלול ):הליכה במסלול

-לוקחים את אובייקט הinode המוצבע ע"י dentry-בודקים שלתהליך הנוכחי יש הרשאת גישה לinodeמסתכלים על שם הקובץ הבא במסלול

אם . )נקודה(, מתעלמים ועוברים לשם הקובץ הבא ). מציינתמדריך נוכחי(

אם .. )שתי נקודות(, מנסים לעלות למדריך האב המוצבע מתוך.dentryה-

אחרת מחפשים את שם הקובץ במטמוןdentry ,אם לא מצאנו . חדש.dentryנדרשת גישה לדיסק ויצירת

-בודקים אם הdentry החדש מהווה נקודת הרכבה למערכת קבצים להצביע למערכת קבצים זו, ואת mntכלשהי. במידה וכן, נעדכן את

dentry.להצביע למדריך הראשי שלה

Page 24: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 24(c) 2004 אלינה נאימרק

(3ביצוע איתור במסלול )-בודקים האם הinode-של ה dentry החדש מייצג קישור

סימבולי-משתמשים בפונקציית החיפוש במסלול כדי למצוא את הdentry

אליו מצביע הקישור הסימבולי )קריאה רקורסיבית(.-בודקים שdentry החדש מצביע למדריך. אחרת )מצביע

לקובץ( – שגיאה. )יש באמצע המסלול שם של קובץ(. מעדכנים אתdentry החדש להיות dentry הנוכחי, ועוברים

למרכיב הבא. ,נמשיך עד שנגיע לשם הקובץ האחרון במסלול

האחרון הוא זה שחיפשנו.dentry של ה-inodeוה-

Page 25: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 25(c) 2004 אלינה נאימרק

פתיחת קובץ מבוצעת ע"י קריאת המערכתopen)( שתפעיל את ,sys_open)(.

פרמטרים: מסלולfilename]לפתיחה, דגלי גישה לקובץ, ]סט הרשאות במסגרת sys_open)( ,מתבצעות קריאות לפונקציות נוספות

ויתבצעו הפעולות הבאות:( קוראים את המסלול לקובץpathname.מזיכרון תהליך המשתמש ) מוצאים את המקום הפנוי הראשוןfd-ב PDT.של התהליך

Process Descriptor Tableראו תרגול ק/פ – -משתמשים באלגוריתם שראינו קודם לאיתור ה inode.המתאים למסלול

אם צריך, יווצרinode.חדש בדיסק יוצריםfile object .חדש, ומעדכנים את השדות שלו בהתאם לפרמטרים

-בפרט נאתחל גם את הפעולות לביצוע על הקובץ בהתאם לinode :של הקובץ כל הפעולות העתידיות על הקובץ יבוצעו דרך שדה זה.

מאתחלים אתf_flagsלפי דגלי הגישה שהועברו כפרמטר מפעיל את פונקציתopen-של ה file object.החדש, במידה ומוגדרת -קובע את תוכן התא הfd-ב PDT-להצביע ל file object.החדש

Page 26: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 26(c) 2004 אלינה נאימרק

סגירת קובץ מבוצעת ע"י קריאת המערכתclose)( שתפעיל את ,

sys_close)( .-הפרמטר של קריאת המערכת הוא הfile descriptor של הקובץ

לסגירה. במסגרתsys_close)( ,מתבצעות קריאות לפונקציות נוספות

ויתבצעו הפעולות הבאות:-מוצאים את הfile object-ב PDT של התהליך, בתא

.fdשהאינדקס שלו -קובעים את ערך התא הנ"ל לNULL. מפעילים את פונקציתflush-של ה file object.אם מוגדרת ,

מבצע כתיבה של חוצצי הקובץ בחזרה לדיסק-משחררים את הfile object. מחזירים את קוד השגיאה של פונקציתflush (0 )בד"כ

Page 27: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 27(c) 2004 אלינה נאימרק

קריאה וכתיבה לקובץ מבוצעות ע"י קריאות המערכתread)(-ו write)( שיפעילו את ,

sys_read)(-ו sys_write)(.בהתאמה -הפרמטרים של קריאות המערכת הם הfile descriptor של הקובץ

הרלוונטי, כתובת של חוצץ, ומספר הבתים שצריך להעביר.:בשני המקרים יבוצעו פעולות דומות

-מוצאים את הfile object-באמצעות ה fd.הנתון -בודקים האם הדגלים בfile object מאפשרים את הפעולה

המבוקשת )קריאה או כתיבה(.-מפעילים את פונקציית הקריאה או הכתיבה של הfile

object כדי להעביר את המידע מ/אל החוצץ. שתי הפונקציות יחזירו את מספר הבתים שהועברו בפועל.

.כתופעת לואי, מחוון הקובץ יקודם בהתאם.ערך החזרה הוא מספר הבתים שהועברו בפועל

Page 28: מערכות הפעלה

Linux- – מערכת קבצים ב14תרגול 28(c) 2004 אלינה נאימרק

נעילת קבציםLinuxתומכת בהרבה אפשרויות מגוונות לנעילה קבצים :

Advisory locking תהליך צריך לנעול קובץ בצורה מפורשת )כמו קטע – קריטי(

Mandatory locking אם הקובץ נעול – כל תהליך שמבצע – read, write, openיינעל, גם אם לא ביצע נעילה מפורשת

אפשר לנעול קובץ שלם או חלקים מהקובץ leases אם תהליך שנעל את הקובץ לא משחרר אותו ולא מאריך את ה –

leaseתוך פרק זמן נתון – המנעול משתחרר חשוב במקרה שתהליך שנעל את הקובץ נפל

:שני טיפוסי מנעוליםFL_LOCK ע"י הפונקציה flock)(FL_POSIX ע"י הפונקציה fcntl)(


Recommended