os - file system Flashcards
לכל קובץ ישנם המאפיינים הבאים (במערכת UNIX)
הרשאות הקובץ (protection)- אופן הגישה לקובץ וזהות בעלי הרשאות הגישה. מוגדים שלושה אופנים של גישה: לקריאה, לכתיבה ולביצוע (RWX). זהות בעלי הרשאות הגישה מתוארת באמצעות הסיווג של מערכת ההפעלה ל-3 קטגוריות: 1. בעל הקובץ בלבד. 2. המשתמשים הנמנים עם הקבוצה שאליה שייך בעל הקובץ. 3. שאר משתמשי המערכת. לכל אחת משלוש הקטגוריות מוגדר אופן גישה לקובץ.
בעל הקובץ (owner) וקבוצת בעלי הקובץ (group).
זמן הגישה האחרונה לקובץ (last access time) וזמן העדכון האחרון שלו (last modification time).
גודל הקובץ (file size).
מספר ההצבעות לקובץ (number of links)- כמות הספריות/התהליכים המשתמשים בקובץ. קישור קובץ אחד לכמה מקורות נקרא קישור מכונה (hard link), כך שכל יצירת קישור כזה מגדילה את המונה של מספר ההצבעות. הבלוק אינו ישוחרר עד אשר המונה יגיע ל-0. קישור סימבולי (symbolic link) הוא סוג של קובץ המשמש הפנייה לקובץ אחר. בשיטה זו המונה אינו גדל, ואין צורך שהקובץ יהיה קיים בזמן ההצבעה עליו.
מספר ה-i-node- האינדקס של הטבלה המכילה אינפורמציה על הבלוקים המרכיבים את הקובץ.
במערכת קבצים מאורגנת במבנה היררכי של ספריות, ניתן להתייחס לקובץ באחד משני אופנים
תיב מלא (absolute path): נתיב מלא המציין את המסלול משורת
העץ אל הקובץ.
מסלול יחסי (relative path): נתיב מלא המציין את המסלול לקובץ החל מספריית העבודה הנוכחית (הספרייה שבה נמצאים התהליך או המשתמש ברגע הפנייה לקובץ).
מה הן מחיצות partitions
מחיצות (partitions) מהוות חלוקה של הדיסק למספר דיסקים מדומים
מרכיבי המחיצה במערכת UNIX
בלוק אתחול (boot block).
סופר בלוק (super block): מכיל אינפורמציה על מערכת הקבצים השוכנת במחיצה. עבודה מול מערכת קבצים מצריכה שהסופר בלוק יהיה טעון בזיכרון הראשי כיוון שבו נמצא המידע על ארגון מערכת הקבצים הממוקמת במחיצה.
בלוקים של דיסק המכילים מבני נתונים המשמשים לניהול שטחים פנויים במחיצה.
בלוקים של דיסקים המכילים טבלאות i-node.
בלוקים של ספריית השורש: הם מכילים רשומות המציינות את הקבצים ואת הספריות שספריית השורש מכילה.
4 שיטות ליישום קבצים (הקצאת תוכן הקובץ לבלוקים בדיסק)
הקצאה רצופה
שיטת ה-linked list
File Allocation Table (FAT)
I-node
הקצאה רצופה בדיסק
מניחים את הקבצים אחד אחרי השני באופן רציף בזיכרון ההתקן. יתרונות: מימוש פשוט, הקובץ נמצא ברצף בזיכרון וגודלו ידוע מראש. חסרונות: ריסוק חיצוני בעת מחיקת הקובץ או הקטנתו, אין אפשרות להגדלת הקובץ.
linked list הקצאת בלוקים בדיסק
בתחילת בלוק יש מצביע לבלוק הבא של הקובץ. יתרונות: לא דורש רציפות ולכן לא ייווצר ריסוק חיצוני. חסרונות: זמן חיפוש בקובץ ארוך מאוד, כיוון שיש לעבור על כל הקובץ כדי להגיע לחלק מסוים בו.
File Allocation Table (FAT)
מחזיקים ב-RAM טבלה, שבכל תא בה יש מצביע לבלוק ואת המיקום של הבלוק הבא של הקובץ. הגישה מהירה יותר כיוון שה-FAT נמצאת ב-RAM וכי לא צריך לעבור על כל הקובץ אלא רק על המצביעים כדי להגיע לבלוק מסוים. יתרונות: נשמר ב-RAM ולכן הגישה היא מהירה. חסרונות: תופס הרבה מקום ב-RAM כיוון שגודל ה-FAT תלוי בגודל הדיסק ולא בגודל ה-RAM. בשיטה זו משתמשים במדריכים שהם אוסף רשומות שמכילות את כל המידע הרלוונטי.
I-node
הו מבנה נתונים שמכיל את תכונות הקובץ (עבור כל קובץ בפני עצמו), את המצביעים לבלוקים שמכילים את תוכן הקובץ ואינפורמציה על הקובץ ועל הקצאת הבלוקים של הדיסק לקובץ. טבלת i-node מכילה שדות direct המכילים ישירות את קובץ הבלוק, שדה indirect המכיל כתובת של לוק פנימי של מערכת הקבצים במשמש לאחסון הכתובות של בלוקים נוספים אל הקובץ. שדה double-indirect המכיל כתובת של שני בלוקים מסוג indirect. שדה triple-indirect המכיל שני בלוקים מסוג double-indirect. חסרון: גישה לקבצים גדולים דורשת כמות גדולה של פניות לדיסק, מכיוון שצריך להביא לזיכרון בלוקים פנימיים שמכילים כתובות של בלוקים אחרים. כדי לחסוך בכמות הגישות לדיסק, משתמשים גם בהטמנה. בשיטה זו משתמשים במדריכים שכל רשומה שלהם מפנה ל-i-node.
שטח הדיסק מחולק לבלוקים - שיקולים בגדול הבלוק
ככל שהבלוקים גדלים, כך גדל קצב העברת הנתונים, אך עלולים לגרום לריסוק פנימי גדול יותר.
ניהול בלוקים פנויים
ניתן לנהל בלוקים פנויים באמצעות מפת סיביות, או באמצעות רשימה מקושרת של בלוקים המכילים את רשימת הבלוקים הפנויים
עקביות מערכת הקבצים: במערכת קבצים עקבית, בלוק יכול להיות או פנוי או תפוס, אך לא שניהם. ניתן לדעת האם בלוק הוא פנוי או לא על ידי שיטות הממפות בלוקים פנויים
נמנה את המצבים שבהם קיים חוסר עקביות של מערכת קבצים טיפוסית במערכת UNIX
בלוק המסומן כלא תפוס ולא פנוי. כנראה שלא סומן במפת הסיביות או ברשימה המקושרת ויש להוסיפו לשם כדי לפתור את הבעיה.
בלוק המסומן פעמיים כפנוי. נשים לב שבאג זה לא יכול לקרות במפת סיביות. לאחר שבלוק נתפס פעם אחת, הוא עדיין מסומן כפנוי ברשימה. הקבצים שמשתמשים בבלוק זה משבשים אחד את השני. בלוק המסומן פעמיים כתפוס ובלוק שהוא גם חופשי וגם מוקצה הם אותו מקרה בווריאציה אחרת של המקרה הזה.
ישנן שתי צורות מימוש של זיכרון המטמון לבלוקים
-Write-Through Cache: מימוש שבו כל בלוק ששונה בזיכרון נכתב מיד אל הדיסק. -Not-Write-Through Cache: מימוש שבו הבלוקים לא נשמרים בדיסק מיד אחרי השינוי, אלא רק באחד המקרים הבאים: כאשר בלוק מפונה מזיכרון המטמון, כאשר המשתמש מבקש זאת במפורש או כאשר תהליך מיוחד הפועל ברקע כל פרק זמן שומר את הבלוקים ששונו בזיכרון המטמון.
גיבוי ברמה הפיזית של הדיסק (dump physical
הגיבוי ברמה הפיזית עובר על הבלוקים של הדיסק ומבצע גיבוי של הנתונים שהשתנו
ללא כל התייחסות למבנה של הנתונים, כלומר ההתייחסות היא לרצף בתים גולמי
מערכת קבצים בצורת יומן )log-structured(
ניתן להתמודד עם הבעיה על ידי ביצוע של עדכונים בצורת יומן ולא לפי ההתייחסות לנתוני המקור שאליהם מתייחסים העדכונים. במקרה זה, מערכת הקבצים פשוט רושמת את כל העדכונים בצורה של זרם לדיסק. ברקע רץ תהליך שקורא את log השינויים שנוצר ומבצע עדכונים של הנתונים. חלק זה של היומן נמחק לאחר ביצוע העדכון של הנתונים הרלוונטיים וכך מתבצע פינוי של מקום לרישום של עדכונים חדשים
הממשיכים להגיע.