Smart-World Surf

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

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

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

מבוא לקבצים ותכונותיהם

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

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

תכונות קובץ נפוצות:

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

שיטות גישה לקבצים

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

גישה סדרתית (Sequential Access)

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

גישה ישירה (Direct Access / Relative Access)

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

גישה באמצעות אינדקס (Indexed Access)

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

מבנה ספריות

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

ספרייה: קובץ מיוחד המכיל רשימה של שמות קבצים וספריות אחרות, יחד עם מצביעים למיקומם הפיזי או ל-i-nodes שלהם.

סוגי מבני ספריות נפוצים:

  • מבנה ספרייה יחיד (Single-Level Directory): כל הקבצים נמצאים בספרייה אחת. פשוט אך לא מתאים למערכות גדולות עקב בעיות שמות וקושי בארגון.
  • מבנה ספרייה דו-שכבתי (Two-Level Directory): לכל משתמש יש ספריית משתמש ראשית משלו, ובה הוא מאחסן את קבציו. פותר בעיות שמות בין משתמשים אך לא מאפשר ארגון היררכי בתוך ספריית המשתמש.
  • מבנה עץ (Tree-Structured Directory): המבנה הנפוץ ביותר כיום. ספרייה ראשית (root) וממנה מתפצלות ספריות משנה, היוצרות מבנה היררכי דמוי עץ. מאפשר ארגון נוח וניהול הרשאות מפורט.
  • גרף א-ציקלי (Acyclic-Graph Directory): הרחבה של מבנה העץ, המאפשרת לקובץ או ספרייה להופיע במספר מקומות שונים במבנה הספריות (באמצעות קישורים קשיחים או סימבוליים), אך ללא לולאות.

הקצאת מקום בדיסק וניהול מקום פנוי

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

שיטות הקצאת מקום בדיסק:

הקצאה רציפה (Contiguous Allocation)

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

הקצאה מקושרת (Linked Allocation)

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

הקצאה מבוססת אינדקס (Indexed Allocation)

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

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

ניהול מקום פנוי:

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

  • וקטור סיביות (Bit Vector / Bit Map): מערך של סיביות, כאשר כל סיבית מייצגת בלוק אחד בדיסק. 0 מציין בלוק פנוי, 1 מציין בלוק תפוס. פשוט ויעיל לאיתור בלוקים פנויים, אך דורש מקום בזיכרון עבור המפה.
  • רשימה מקושרת (Linked List): כל בלוק פנוי מכיל מצביע לבלוק הפנוי הבא. פשוט ליישום, אך גישה לבלוק פנוי ספציפי דורשת סריקה סדרתית של הרשימה.
  • קיבוץ (Grouping): הבלוק הפנוי הראשון מכיל מצביעים ל-n בלוקים פנויים הבאים. אחד מבלוקים אלו מכיל מצביעים ל-n בלוקים נוספים, וכן הלאה. משפר את מהירות איתור בלוקים פנויים לעומת רשימה מקושרת פשוטה.
  • ספירה (Counting): במקום לרשום כל בלוק פנוי בנפרד, שומרים רשימה של "בלוק התחלה" ו"מספר בלוקים רציפים פנויים" מאותו בלוק. יעיל כאשר יש רצפים ארוכים של בלוקים פנויים.

שאלות לדיון

  • השוו בין שיטות הקצאת מקום בדיסק (רציפה, מקושרת, מבוססת אינדקס) בהיבטים של יעילות גישה, ניצול מקום וגמישות בשינוי גודל קובץ.
  • הסבירו מהי פרגמנטציה חיצונית ופנימית, וכיצד כל אחת מהן משפיעה על ביצועי מערכת הקבצים. אילו משיטות הקצאת המקום סובלות יותר מכל סוג פרגמנטציה?
  • תארו את מבנה הספריות מסוג "עץ" והסבירו מדוע הוא נפוץ כל כך במערכות הפעלה מודרניות. אילו יתרונות הוא מציע על פני מבני ספריות פשוטים יותר?
  • כיצד שיטות ניהול מקום פנוי (וקטור סיביות, רשימה מקושרת) תומכות בשיטות הקצאת מקום בדיסק? תנו דוגמה ליתרון וחיסרון של כל שיטה.

נקודות לתשובת מודל

  • השוואת שיטות הקצאה: יש להתייחס לזמני גישה (סדרתית וישירה), התמודדות עם פרגמנטציה (חיצונית/פנימית), קלות שינוי גודל קובץ, וצורך במטא-דאטה נוסף (מצביעים, i-nodes).
  • פרגמנטציה: הגדרה ברורה של כל סוג. פרגמנטציה חיצונית קשורה בעיקר להקצאה רציפה, פרגמנטציה פנימית לכל שיטה המקצה בלוקים בגודל קבוע. השפעה על ביצועים: האטת גישה, צורך באיחוי דיסק.
  • מבנה עץ: הסבר על ההיררכיה, שורש, ספריות משנה. יתרונות: ארגון לוגי ברור, מניעת התנגשויות שמות, קלות ניהול הרשאות, תמיכה במשתמשים מרובים.
  • ניהול מקום פנוי: תיאור מנגנון כל שיטה (וקטור סיביות: מערך 0/1; רשימה מקושרת: מצביעים). יתרונות: וקטור סיביות - מהיר למציאת K בלוקים רציפים; רשימה מקושרת - חסכוני במקום כאשר הדיסק כמעט מלא. חסרונות: וקטור סיביות - דורש מקום רב בזיכרון עבור דיסקים גדולים; רשימה מקושרת - איטית לגישה ישירה. יש לקשר לשיטות הקצאה: למשל, וקטור סיביות יעיל למציאת מקום להקצאה רציפה.
מצאתם טעות או שחסר משהו?
→ הקודמת
זיכרון וירטואלי
הבאה ←
מערכות קלט/פלט