Page Cache Flashcards

1
Q

מה היתרון והחסרון בwrite-back?

A

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

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

מה היתרונות והחסרונות של read-ahead?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

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

A
  1. קריאה/כתיבה באמצעות קריאות המערכת read()/write()

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

  1. מיפוי קובץ לזיכרון באמצעות קריאת המערכת mmap()

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

מהם שני אופני הפעולה של mmap?

A
  1. מגובה קובץ (file-backed)
    אזור הזיכרון מכיל מידע שמקורו בקובץ פתוח.
    לדוגמה: אזור הקוד, אשר מגבה את הקובץ הבינארי של התוכנית.
    קריאה/כתיבה לאזור זיכרון מגובה קובץ מתורגמת לקריאה/כתיבה למקום המתאים בתוך הקובץ.
  2. אנונימי (anonymous)
    אזור הזיכרון מכיל מידע שאינו קשור לשום קובץ, אלא לזיכרון הדינמי של התהליך.
    לדוגמה: אזורי הזיכרון של המחסנית והערימה.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

כמה מסגרות פיזיות יוקצו עבור קטע הקוד הבא:
int fd = open(“scene.dat”, O_RDONLY);
char* buffer = (char)malloc(3PAGE_SIZE);
read(fd, buffer, 3*PAGE_SIZE);

A

6
הקריאה מ-fd שהוא מגובה קובץ תביא 3 מסגרות למטמון הדפים מהדיסק.
אם מאלוק השתמשה בmmap אז buffer הוא איזור זיכרון אנונימי ולכן המסגרות של scene.dat ישוכפלו ויוצבעו מהערימה.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

מהם היתרונות של mmap?

A
  1. חיסכון בזמן – אין צורך להעתיק את המידע ממטמון הדפים לחוצצים של התהליך.
  2. חיסכון בזיכרון – אין חוצצים במרחב המשתמש ולכן אין שכפול מידע שכבר קיים במטמון הדפים.
    בנוסף, אם המיפוי משותף , אז כל התהליכים משתפים ביניהם את אותה מסגרת בזיכרון הפיזי.
  3. ממשק פשוט ונוח למתכנת – ניגשים לקובץ כפי שניגשים לזיכרון.
    קריאת מערכת אחת במקום הרבה קריאות מערכת read(),write().
  4. קריאה דחיינית – העתקת המידע נעשית רק בעקבות ניסיון גישה שיוצר חריגת דף.
    שימו לב: זה יכול להיות חיסרון של mmap(), למשל כאשר רוצים לקרוא רק כמה בתים מהקובץ, כי אז המחיר של חריגת דף יהיה משמעותי.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

מהם החסרונות של mmap?

A
  1. כדי למפות קובץ שלם יש למצוא אזור זיכרון פנוי ורציף במרחב הווירטואלי שהוא בגודל הקובץ.
  2. קריאת המערכת mmap() איטית יחסית ל-read().
    לכן read() עדיפה כאשר רוצים לקרוא רק כמה בתים מהקובץ.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

מה ההבדל בין MAP_SHARED לבין MAP_PRIVATE?

A

מיפוי משותף MAP_SHARED

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

מיפוי פרטי MAP_PRIVATE

מטמון הדפים מחזיק עותק יחיד של המידע, אבל הוא מוגן באמצעות copy-on-write.
בהתחלה, כל המיפויים מצביעים לעותק הזה.
כתיבות מצד תהליך כלשהו יגרמו לחריגת דף והעתקת המידע למסגרת חדשה.
כתיבות לא יגיעו חזרה לדיסק.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

מה גודל מטמון הדפים?

A

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

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

לאן PFRA (PFRA = Page Frame Reclamation Algorithm).

מפנה מסגרות?

A
  1. מסגרות של מטמון הדפים – יפונו חזרה לקבצים המתאימים בדיסק.
    רק במידה והמסגרות מסומנות כ-dirty, כלומר אם נכתב אליהן מידע חדש.
  2. מסגרות אנונימיות (לדוגמה מסגרות המכילות את המחסנית או הערימה של תהליכי משתמש) – יפונו לאיזור מיוחד בדיסק הנקרא מאגר דפדוף או swap area.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

האם PFRA יכול לפנות מגרות ששייכות לגרעין?

A

לא

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

מהו מאגר דפדוף?

A

מאגר דפדוף (swap area) הוא אזור מיוחד בדיסק אליו מפונים דפים מהזיכרון.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

מה היתרון של מספר מאגרי דפדוף שונים?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

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

למה עדיף ברצף?

A

: כדי לשפר את זמן הגישה לדיסק (גישה סדרתית היא מהירה יותר – מפחית סיבובים של הזרוע המגנטית, משפר את ה-seek latency).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

מהו המבנה של מאגר דפדוף?

A

כל מאגר דפדוף הוא שטח דיסק המחולק למגירות (slots).
כל מגירה היא בדיוק בגודל דף / מסגרת (4KB).
המגירה הראשונה מכילה מידע ניהולי על המאגר: גודל, גרסה, וכו’.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

מה עושה חוט הגרעין kswapd? מדוע הוא חיוני?

A

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

kswapd הרץ מקבילית חיוני – כי בהקשרים מסוימים (למשל, במהלך שגרת טיפול בפסיקת חומרה) לא ניתן לצאת להמתנה ולכן לא ניתן לקרוא ל-PFRA ישירות.

17
Q

מדוע מוגדר סף מינימום עבור PFRA?

A

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

18
Q

מדוע מוגדר סף תחתון עבור PFRA?

A

הקטנת זמן הטיפול בחריגת דף: אין צורך לפנות מסגרות לדיסק.

19
Q

מדוע מוגדר סף עליון עבור PFRA?

A

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

כדי לא לבצע עבודה מיותרת.

20
Q

מהם מבני הנתונים שבהם משתמש מטמון הדפים?

A
  1. מסגרות בזכרון
  2. מגירות בדיסק

טבלת המסגרות ממפה מסגרות למגירות
טבלת ערבול הדפים ממפה ממגירות למסגרות.

21
Q

מהי טבלת המסגרות ומה הכניסות שלה?

A

מערך עם כניסה לכל מסגרת בזיכרון (RAM).
כל כניסה במערך היא מסוג struct page ומכילה מספר שדות:
1. count - – מונה שימוש (reference counter) של הדף שבמסגרת
2. flags – דגלים המתארים את מצב הדף שבמסגרת
3. מצביע לאובייקט ניהול הדף שבמסגרת (פינוי וטעינה) לפי סוג המיפוי שלו (מגובה קובץ או אנונימי).
4. מציין את את ההיסט מתחילת הקובץ (offset) עבור מסגרת של מטמון הדפים ואת מזהה המגירה עבור מסגרת אנונימית.

22
Q

מהי טבלת ערבול הדפים?

A

טבלת ערבול הדפים מספקת מיפוי מהזוג (mapping,index) לכתובת מסגרת (אם יש כזו) המכילה את הדף במיקום index של האובייקט mapping.

כל המסגרות שמתאימות לאותו hash value מקושרות ברשימה כפולה מעגלית דרך השדות next_hash, pprev_hash ברשומת המסגרת.

23
Q

איך נראות רשימות ה-active ו-inactive שמשמות את PFRA?

A

שקף 42 בתרגול

24
Q

כיצד PFRA בוחר את מי לפנות?

A

ע”י סריקה של המסגרות ברשימת ה-inactive מהסוף להתחלה.
אם המסגרת מסומנת כ-referenced, PFRA יעביר אותה לתחילת הרשימה ולא יפנה אותה.
אחרת, המסגרת תפונה מהזיכרון.

25
Q

כיצד PFRA מפנה מסגרות משותפות?

A

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