תרגול vm Flashcards

1
Q

מהי פרגמנטציה חיצונית ופנימית

A

חיצונית
בזבוז בהסתכלות מבחוץ
על מקטעי הזכרון יש חורים

פנימית
לדוגמה קומפיילר מיישר את כל הבקשות לגודל של מכפלה מסויימת
ואז נוצר בזבוז פנימי בתוך כל בלוק

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

מהו
MMU

A

רכיב חומרה בתוך המעבד
אשר אחראי לתרגום כתובת וירטואלית לפיזית
Memory management unit

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

מה זה אומר מרחב זכרון של תהליך

A

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

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

מה זה
swapping

A

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

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

הסבר את היתרונות הבאים של זכרון וירטואלי
Demanded pagin
Deduplication
Cow

A

לא באמת מקצים את הזכרון עד לגישה הראשונה אליו
Lazy allocation בתכלס

אם יש כמה תהליכים אשר משתמשים באותו הזכרון לקריאה בלבד כמו libc אין צורך לשכפל את הזכרון

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

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

מה זה דף ומה זה מסגרת

A

דף בזכרון וירטואלי
מסגרת בפיזי

שניהם 4k
מסגרת ב32ביט

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

כמה דפים יכולים להיות לכל מרחב וירטואלי
בIA32

A

מליון בערך

המרחב שאפשר לגשת אליו הוא 2 בחזקת 32

גודל כל דף הוא 4 קילו שזה 2 בחזקת 12

זה חלקי זה נקבל מליון

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

כמה ביטים צריך בשביל לסמן את מספר הדף
בia32

A

אם יש מליון דפים
שזה 2 בחזקת 20 אז צריך 20 ביטים

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

איך עובד המיפוי ברמת הביטים
בין זכרון וירטואלי לפיזי
בia32

A

20 הביט העליונים יהיו לסימון מספר המסגרת
אמרנו שיש מליון לכן 20

ו12 הביטים התחתונים יסמנו את ההיסט בתוך המסגרת כי היא בגודל 4 קילו בייט לכן 12

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

איך ממופה ההיסט ומספר הדף למסגרת
בia32

A

ההיסט זהה לא צריך תרגום

המספר דף למסגרת בטבלת הדפים

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

למה אי אפשר
או לא פיזבילי
לעשות טבלת דפים לינארית
כלומר מערך אחד לאחד

A

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

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

הסבר את הרעיון הכללי של טבלת דפים הררכית

A

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

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

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

כמה כניסות לכל בלוק בטבלת דפים
Ia32

A

1024

בלוק הוא בעצמו מסגרת לכן בגודל 4 קילו
וזה חלקי 4 בייט של כל כניסה
לכן 1024

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

PGD ראשי תיבות

A

Page global directory

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

מהו pgd

A

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

אם לא אז יש במקום שלה null
אם כן יהיה מצביע לטבלת דפים בבלוק

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

PDE
PTE

A

Pde page directory entry

Pte page table entry
רשומות בטבלה ההיררכית שה pde מצביע עליה

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

רגיסטר
Cr3

A

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

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

איך מתבצע תרגום מכתובת וירטואלית לפיזית בטבלת דפים היררכית
Ia32

A

יש 32 ביט של כתובת
ה12 התחתונים הם הoffset שנשמר זהה

אנחנו יודעים להגיע לpgd בעזרת cr3
ה10 העליונים יסמנו את הכניסה בpgd
לפיהם נוכל לדעת מה הכתובת של הpage table של הבלוק הזה

כעת ניקח את ה10 ביטים הבאים והם יהיו
האינדקס בתוך הpage table

כעת הגענו למסגרת הפיזית ונשתמש בoffset

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

מה גודל של כל כניסה בטבלת הדפים
Ia32

A

32 ביט
20 לסימון המסגרת
12 לבקרה

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

מהו ביט 0 בכל PTE

A

זהו ביט הpresent
הוא מסמן האם הדף נמצא בזכרון הפיזי 1
או לא 0

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

מה זה אומר שביט
Present=0

A

אם כל הביטים הם 0 אז הדף לא ממופה כלל
אם לפחות אחד הביטים הוא לא 0 אז הדף דופדף לדיסק ובpte יהיה את הכתובת שלו בswap area

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

ביט בקרה
Accessed

A

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

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

ביט בקרה dirty

A

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

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

ביט בקרה
Read/write

A

0 קריאה בלבד
1 קריאה וכתיבה

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

ביט בקרה
User/supervisor

A

0 גישה לקוד הגרעין בלבד
1 גישה לכל תהליך

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

Tlb ראשי תיבות

A

Translation lookaside buffer

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

איפה נשמר הtlb

A

בזכרון ייעודי ומהיר בתוך המעבדחלק מהmmu

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

למה צריך את הtlb

A

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

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

מה מכילה כל רשומה בtlb

A

מספר דף
מספר מסגרת
ביטי בקרה
Acecced,dirty…

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

מה קורה לתוכן הtlb בעת שינוי cr3

A

פסילה של כל תוכן הtlb
Tlb flush

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

איך מערכת ההפעלה שומרת על נכונות הtlb
מתי

A

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

בעת החלפת הקשר cr3 משתנה
אחרת התהליך החדש עלול לגשת למסגרות של התהליך הקודפ

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

מתי לינוקס לא תפסול את תוכן הtlb?
ולמה זה כדאי

A

כדי למנוע פגיעה בביצועים!

אם החלפת ההקשר היא בין שתי חוטים של אותו תהליך מרחב הזכרון נשאר כשהיה ואפשר לשמור אותו

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

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

מה החלק של מה בתרגום הדפים
מה החלק התוכנתי בכל התהליך

A

בעצם כל התהליך למעט page fualt הוא תהליך חומרתי
Tlb and page walk

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

בכמה ביטים משתמשים באמת מתוך ה64 בx64
ומה גודל מרחב הזכרון לכל תהליך

A

48 ביטים
256 טרה

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

מה גודל מרחב הזכרון הפיזי ב
X64
האם הוא שווה לגודל מרחב הזכרון הוירטואלי

A

52 ביטים
בעוד שהווירטואלי הוא רק 40

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

מה גודל כניסה בטבלת הדפים ב
X64

A

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

12 ביטים לדגלים
קיבלנו 52
אבל ליישור לחזקת 2 נקבל 64 ביטים
כלומר 8 בתים

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

כמה כניסות pte בכל מסגרת
ב64
כמה ביטים צריך בשביל לייצג אותו

A

512
כלומר 9 ביטים לייצוג

4 אלף חלקי 8 גודל כל כניסה
ולוג של גל זה יתן 9

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

גודל דף סטדנרטי ב
64

A

גם 4k

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

כמה רמות תרגום ב
X64
וכמה ב
32

A

ב32
יש 2 רמות תרגום

ב64
יש 4 רמות

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

איך ממופים הביטים שאיתם מתרגמים כתובת וירטואלית לפיזית ב
64

A

ה12 התחתונים הם offset בדומה ל32
ומשם למעלה יש 4 רמות של אינדוקס כשבכל אחד יש 9 ביטים לכל אינדקס כי אמרנו שיש 512 כניסות

נשארו ביטים 48 עד 63 שאינם בשימוש

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

מה זה דפים גדולים
האם גם ב32 וגם ב64

A

רק ב64
הרעיון הוא להשתמש בפחות רמות של תרגום ולנצל את זה בשביל להוסיף עוד לoffset
כך שבמקום 4k שמיוצג עי 12 ביטים נוכל להשתמש בביטים שהיו של התרגום

מסתבר שלפי ההרצאה אפשר גם ב32

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

מה היתרונות והחסרות של דפים גדולים

A

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

מגדילים את יעילות הtlb

מקצרים את הpage walk

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

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

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

מהו מנגנון
Read ahead

A

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

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

האם דפים גדולים חוסכים לנו את כמות שגיאות הדפים בגישה סדרתית?

A

לא
בגלל מנגנון read ahead אנחנו מקבלים זאת בכל מקרה

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

האם זהו יתרון שדפים גדולים מורידים את מספר חריגות הדפים

A

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

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

לאיזה 2 חלקים מפוצל מרחב הזכרון
ואיך הם מתחלקים בין תהליכים

A

החצי העליון
מרחב זכרון של הגרעין
נשאר זהה בין כל התהליכים

החצי התחתון
מרחב זכרון של המשתמש
משתנה כל פעם בין תהליכים

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

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

A

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

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

מה זה אומר שמרחב הזכרון של הגרעין נשאר זהה בין כל התהליכים

A

הכתובות הווירטואליות של כל אובייקט בגרעין נשארת קבועה בין כל התהליכים

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

מהו memory descriptor
איך קוראים למבנה שמייצג אותו

A

מתאר הזכרון של התהליך
מיוצג על ידי מבנה mm_struct

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

איפה שמור מתאר מרחב הזכרון

A

בpcb
תחת שדה
mm

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

מה אפשר להגיד על חוטים ומתאר memeory descriptor

A

זהה בין החוטים

52
Q

מה יהי ערך מתאר הזכרון של חוט גרעין

A

Null

53
Q

בכמה מילים מה זה חוט גרעין

A

חוט שרץ בהרשאה 0
נגיש רק למרחב הגרעין מהתהליך שרץ לפניו
רגיסטר הcr3 נשאר כשהיה בתהליך שרץ לפניו

54
Q

הסבר כל שדות במרחב הזכרון של התהליך

A

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

mm_count כמה תהליכי משתמש וחוטי גרעין חולקים את מרחב הזכרון - כל תהליכי המשתמש נספרים כאחד ביחד
כאשר מגיע ל0 מערכת ההפעלה מפנה את כל מרחב הזכרון - גם את טבלת הדפים כי גם אין חוטי גרעין שמשתמשים בו

Mmlist
מצביע לרשימה גלובלית לרשימה של כל מרחבי הזיכרון

Pgd כתובת של טבלת הדפים
זה גם מה שיטען לcr3 בעת זימון התהליך

Mmap

Rss מספר המסגרות בשימוש

Total_vm מספר הדפים המוקצים

55
Q

בשדות מתאר מרחב הזכרון
מה אפשר להגיד על היחס בין
Rss total_vm

A

Rss
קטן או שווה ל
Total_vm

בגלל
Deamand pagin

56
Q

מה זה איזור זכרון
איך נקרא באנגלית
איך מגיעים אליו

A

Virtual memory regions

מתאר את האיזורים בזכרון כמה מחסנים ערימה text וכו

אפשר להגיע אליו דרך שדה הmmap בתוך בmm בpcb
יוביל אותנו לרשימה מקושרת של vm_area_struct שיכילו את המידע על האיזורים

57
Q

איזה שדות יש בvm_area_struct

A

vm_start and end
התחלה ואחת אחרי אחרונה של איזור הזכרון

Vm_next
מצביע לערל הבא ברשימה של המבנים

Vm_mm
מצביע בחזרה לmm בpcb

Vm_page_prot
ערכי ביטים שונים שנכניס לכניסות של הדפים השייכים לאיזור זה

Vm_flag
מכיל דגלים בשביל שהגרעין ידע מה חוקי לעשות עם אותו איזור זכרון
Vm_ read/write/exec
Vm_may read/write… האם מותר להדליק
Vm_shared האם לשתף עם תהליך הבן
Vm_locked אסור לעשות לזה swap

58
Q

איך מייצרים איזור זכרון חדש?

A

קריאת מערכת
Mmap

59
Q

איזה איזורי זכרון יש לכל תהליך

A

איזור לקוד code/text
נתונים סטטים data
Heap
Stack

60
Q

מה קורה אם לmalloc אין מספיק זכרון פנוי בערימה

A

היא פונה לקראית מערכת brk

בתכלס מאחורה
היא משתמשת ב
Sbrk להקצאות קטנות
וmmap להקצאות גדולות
לפי הקבוע MMAP_THreshould

61
Q

באיזה קריאות מערכת free משתמשת כדי לעשות מניפולציות לגודל הערימה

A

Brk and munmap

62
Q

הסבר על קריאת המערכת sbrk
מה מקבלת מה מחזירה ומה מטרתה

A

מגדילה ומקטינה את הערימה

אם מקבלת 0 מחזירה את ראש הערימה הנוכחית

63
Q

איזה סוגים של איזור זכרון יש?
2

A

מגובה קובץ
איזור שמכיל מידע שמקורו בקובץ
כתיבה וקריאה אליו תדרוש קריאה וכתיבה מהקובץ

אנונימי
איזור זכרון שלא קשור לקובץ אלא לזיכרון הדינאמי של התהליך

64
Q

האם אפשר לפנות איזורי זכרון אנונימים לדיסק

A

כן

65
Q

מה סוג איזורי הזכרון
ערימה
מחסנית
קוד

A

קוד הוא מגובה קובץ
כי מתאים לקובץ הבינארי של התוכנית
אי אפשר לכתוב אליו לכן לא יהיה dirty

מחסנית וערימה אנונימים

66
Q

איך קריאות המערכת
Clone
Execv
משפיעות על מרחב הזכרון

A

Clone
מייצרת עוד חוט
מגדילה את mm_users ב1

Execv
טוענת תהליך חדש ולכן משחררת את מרחב הזכרון הקודם (מקטינה את המונים)

67
Q

הסבר בקצרה על cow

A

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

68
Q

Cow הסבר באופן מפורט

A

אחרי fork
כל pte שהצביע על מסגרת
יורד מהרשאות r\w 1
ל0
עכשיו 2 התהליכים מצביעים על אותם מסגרות עם r/w0
ומספר ההצבעות על המסגרת (המונה) עלה ל2

התהליך הראשון מבין שניהם שירצה לכתוב יקבל שגיאת דף
והמסגרת תועתק
כעת בשתי המסגרות המונה הצבעות הוא 1
ועכשיו לתהליך הראשון שניסה לכתוב r/w=1
לשני הוא עדיין 0
כשהוא ירצה לכתוב הוא גם יקבל שגיאת דף ורק ישתנה הערך מ0 ל1 בלי העתקות

69
Q

האם cow תמיד עדיף לנו

A

לא
אם עשינו פורק ואז execv אז כמובן

אבל אם שתי התהליכים משתמשים בכל הזכרון סתם עלה לנו הרבה זמן יקר של שגיאות דפים ועדכון הpte בתהליך האב לrw=0

70
Q

במנגנוןcow
אחרי שתהליך מנסה לכתוב לאיזור מוגן שrw=0
איך מערכת ההפעלה יודעת שזה cow ולא סתם מקום שאסור לכתוב אליו?

A

בודק שהדף שייך לאיזור זכרון מותר לכתיבה
לפי VM_WRITE
במתאר האיזור

71
Q

איך עובד מנגנון
Demanedpaging
כאשר משתמש קןרא ל
Mmap

A

רק רשימת האיזורים מתעדכנת תחילה
מסמנים בpte present=0
כי עדיין לא מצביע למסגרת אמיתית

רק בנסיון הגישה הראשון נקבל page fault

אם זה זכרון מגובה קובץ הקובץ יטען מהדיסק

אם אנונימי
וקריאה את מצביעים כל הzeropage
אם כתיבה אז מקצים מסגרת ומאפסים אותה

72
Q

Minor and majoe page fault

A

Minor
לא ניגש לדיסק
לגן לא חוסמת
רלוונטי לזכרון ממופה אנונימי

Major
חוסמת כי צריך לטעון מהדיסק
רלוונטי למגובה קובץ

73
Q

הסבר על
Zero page

A

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

74
Q

מה קורה לאחר איפול בחריגת
הדף

ואיך קוראים לפונק הטיפול בשגרה

A

Do_page_fault()

הפקודה מבוצעת
מחדש
אם הטיפול לא הרג את התהליך

75
Q

מהם 2 הסיבות לקבל page fault

A

גישה לדף שאינו נמצא בזכרון
Present ==0

גישה לא חוקית
שאינה לפי ההרשאות בpage table
לדוג כתיבה לדף של קריאה בלבד

76
Q

מתי page fault
היא שגיאה

מתי באחד מהם יש החרגה קלה

A

כשמשתמש מנסה לגשת לזכרון של הגרעין

הפעולה לא מורשית לפי הרשאות האיזור כמו כתיבה לאיזור הקוד

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

77
Q

איך החומרה מעבירה לגרעין את הכתובת הוירטואלית שגרמה לחריגת דף

A

רגיסטר cr2

78
Q

מה קורה אם חריגת דף היא שגיאה
במצב משתמש ובמצב גרעין

A

מצב משתמש נקבל
Sigsegv

אם בגרעין נקבל אופססס ונקווה שלא יקרוס כלום

79
Q

מהי לוקאליות בזמן
ובמרחב

A

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

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

80
Q

מתי נכתב לדיסק באמת המידע בלינוקס
Write back

A

בלינוקס המידע יכתב

כאשר הזכרון ישוחרר
עם קריאת מערכת munmap

או בעת קריאת מערכת מפורשת
msync

81
Q

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

A

Write back

82
Q

למה לינוקס משתמשת בעקרון הwrite back

A

בתקווה לחסוך כתיבה של ערכי בניים
לא בטוח שיהיו

83
Q

מה החיסרון של write back

A

אין אמינות לכתיבת המידע
המידע בזכרון יכול ללכת לאיבוד והמידע לא באמת יכתב לדיסק

84
Q

לאיפה readhead קורא את הדפים
מה החסרונות של read ahead

A

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

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

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

85
Q

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

A

למסגרות ממופות קובץ הגרעין יפנה אותן לקובץ שהן הגיעו ממנו

למסגרות אנונימיות הגרעין יפנה לswap area

86
Q

מהי טבלת המסגרות
איזה שדות יש בכל רשומה
באיזה שדה משתמש cow

A

מערך עם כניסה לכל מסגרת בזיכרון הפזי
לכל כניסה יש מספר שדות
Refcount - כמה מרחבי זיכרון מצביעים אל המסגרת
Cow משתמש בשדה זה

Mapping
מצביע לinode אם זה קובץ
Null אם אנונימי

Index
היסט מתחילת הקובץ אם זה מגובה קובץ
Null אם אנונימי

Flags
דגלים כמו dirty
וactive, refrenced שמיוצגים עי 2 ביטים

Nexthash prevHash קודמים והבאים ברשימת ההתנגשות ברשימת הערבול

87
Q

האם לינוקס תפנה מיד מסגרת שבטלת המסגרות שלה
Refcount==0

A

לא
לינוקס לא ממהרת לפנות ותפנה רק כאשר יהיה חייב כי אין מקום

88
Q

מי ממומש תוכנתי ומי חומרתי

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

A

שניהם תוכנתי

89
Q

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

A

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

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

90
Q

בקצרה מה מטרת
טבלת המסגרות
וטבלת ערבול הדפעם

A

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

ערבול דפים
כדי לחפש מה המסגרת של דף מסויים

91
Q

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

A

אחת זה
Read write sys calls
מביאה את המידע למטמון הדפים
מעתיקה את המידע הרלוונטי לחוצץ של
המשתמש

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

92
Q

בפקודה mmap
איך מייצרים אנונימי
ואיך מגובה קובץ

A

מגובה קובץ
fd=fd of an open file

אנונימי
fd=-1

93
Q

מה ההבדל בין
Mmap
ל
Read
מבחינת חריגות דף

A

Read
מקצה פעם אחת מקום לחוצץ של המשתמש ואז יכולה להשתמש בו שוב ושוב

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

ולכן בקבצים גדולים כמות חריגות הדף בread היא זניחה

94
Q

מהי מגבלת גודל קובץ ב64
שצריך להטען בmmap

A

לפי גודל מרחב הזכרון של המשתמש
128 טרה

95
Q

מתי עדיף להתשמש בread על פני mmap

A

כשאר קוראים מספר קטן של בתים מקובץ עדיף להשתמש בread

96
Q

יתרונות בשימוש
Mmap
בקריאת קובץ

A

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

אינטואיטיבי למתכנת כי מתנהג כמו קובץ

חוסך בזמן וזיכרון

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

97
Q

איזה סוגי מיפויים יש לmmap מבחינת מי רשאי לגשת

A

זכרון פרטי
MAP_private

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

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

98
Q

PFRA
מה ראשי תיבות

A

Page frame reclamation

99
Q

איזה תהליכים יעדיפו מטמון דפים גדול ואיזה קטן

A

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

ותוכניות חישביות יעדיפו קטן

100
Q

מה עלול לקרות במצב קיצון של מטמון דפים קטן
איך נקרא המצב

A

Trashing
המערכת מבלה את רוב הזמן שלה במענה לחריגות דף

101
Q

מה מגבלת הגודל למטמון הדפים

A

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

102
Q

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

A

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

מסגרות אנונימיות יעברו לswap area
תפונה גם אם נקיה וגם אם מלוכלכת כי בשימוש של תהליך

103
Q

Pfra מפנה מסגרת של תהליך משתמש וגם של הגרעין?

A

רק של משתמש

104
Q

כמה מאגרי דפדוף יש?
ולמה

A

יש הרבה
כך אפשר לכתוב באופן מקבילי לדיסק לכמה מאגרי דפדוף במקביל

105
Q

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

A

כן
אפשר לכבות ולהדליק מאגרי דפדוף תוך כדי ריצה

106
Q

איך בנויים מאגרי דפדוף

A

כל מאגר דפדוף מחולק למגירות slots
כל מגירה בגול מסגרת 4k
המגירה הראשונה מכילה מטהדאטה כל המאגר

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

107
Q

מה זה seek latency

A

הדילאיי שלוקח עד שהזרוע המגנטית של הדיסק זזה למידע

108
Q

מתי pfra מתחיל לפעול

A

יש כמות מוגדרת של מסגרות פנויות
Min low high

מתחיל לעבוד low ברקע
בmin בחזית
בhigh מפסיק לעבוד

109
Q

מה זה אומר pfra רץ ברקע ובחזית
איפה ברקע יעיל בדכ

A

יעיל בעיקר במרובות מעבדים
ברקע זה אומר אסינכרוני
הגרעין מעיר חוט מיוחד בשם
kswapd
שמריץ את
Pfra
אם הוא לא מספיק מהיר אז נריץ ישירות את pfra כלומר בחזית

110
Q

למה מוגדר רף min

A

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

111
Q

איזה עקרונות מרכזיים
Pfra
מממש
מה הוא מעדיף

A

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

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

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

112
Q

האם יכול להיות מסגרת אנונימית לא מוצבעת

A

כי מסגרת אנונימית לא מוצבעת זה אומר שהתהליך שהתשמש בה נסגר ואז היא הייתה אמורה להמחק

113
Q

מתי לדוגמה עדיף לשחרר לדפדף מסגרת אנונימית על פני מסגרת לא מוצבעת

A

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

114
Q

איך נקבעת רמת הפעילות של מסגרת

A

AR
00
10
01
11

בבינארי
A active bit
R is the frame refrenced

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

115
Q

מהי inactive list
And
Inactive list

A

לא פעילות
כל המסגרות עם רמת פעילות
0 או 1

פעילות
2 או 3

Pfra תפנה קודם לא פעילות

116
Q

האם הקצאת משתנים לוקאלים על המחסנית היא עצלה?

A

בקורס לא

117
Q

מה מטרת מטמון הדפים

A

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

118
Q

אם פתחתי קובץ עם mmap private
ואז עשיתי לקובץ write
האם נראה את זה עכשיו באיזור של הmmap

A

לא מוגדר טוב בלינקוס

119
Q

מה כודלו
Tlb l1
Tlb l2
Tlb l3

A

32/64/128
~1500
Not exists

120
Q

Page reclamation algorithms
איזה יש מה כל אחד עושה

A

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

Lru least reaet used
עוד אלגוריתם לא פרקטי במציאות
משתמש בעקרון הלוקאליות אבל דורש עדכון לא פרקטי של מבני הנתונים של מערכת. הפעלה בכל גישה

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

Nru not recently used
Lru מתוכחם
מעדיף לשמור דפים שrefrenced
מעדיף דפים מלוכלכים כי כבד להוציא אותם
סדר ההוצאה שלו
Refrenced זה הכי חשוב
ואז חשוב האם מלולכך או לא

121
Q

מה יש כיום בtlb מודרנים?

A

אפשר גם לשמור pid לכל רשומה
אבל גם הכמות שלהם מוגבלת
ככה לא צריך למחוק הכל כל פעם

122
Q

האם יש לכל היותר tlb אחד לכל המערכת?

A

יש אחד לכל ליבה

123
Q

מה זה
Tlb shootdown

A

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

124
Q

Pte prefetching

A

Cpu קורא מידע מה
זכרון
בגודל של 8 כתובות בכל פעם
32 או 64 בתים
ולכן הוא כבר שומר את
התרגומים של 7 הכותבות הבאות במטמון l2 או l3

נסיון של ניחוש לפי עקרון הלוקאליות שנצטרך בtlb כבר את הרשומות הבאות

125
Q

מה גודל כניסה pte
ב32
ו64

A

4 בתים
8 בתים