OS5_virtual_memory
Download
Report
Transcript OS5_virtual_memory
(יתכן שכדאי לעבור ל class19של )csapp
זיכרון וירטואלי
זיכרון וירטואלי
מבוסס על שקפים מ 'מערכות הפעלה' 234119
1
ניהול זיכרון ראשי
זיכרון המחשב מחולק בין מ”ה ובין התהליכים השונים.
בעבר כל מרחב הזיכרון של תהליך במצב ריצה היה בזיכרון הראשי
לפני תחילת הריצה.
כאשר נוצר תהליך חדש ,היה מוקצה לו שטח זיכרון פנוי שיכול להכיל
את כל מרחב הזיכרון שלו.
כאשר הסתיים התהליך ,שוחרר הזיכרון שהוקצה לו.
שטח זיכרון
פנוי
2
תהליך 3תהליך 2תהליך 1מ"ה
הבעיה
בד"כ הזיכרון הראשי במחשב לא גדול מספיק לספק את דרישת
הזיכרון של כל התהליכים הרצים ''בו-זמנית'' (או אפילו אחד!).
3
פתרונות ראשוניים:
לחסוך:
4
קוד התהליך בדרך כלל מנופח עכב כך שהוא מכיל ספריות שהתהליך לא
משתמש בהן בפועל.
האם אפשר לחסוך קִ ישּור עם קוד לא נדרש?
כן ,בעזרת קישור דינמי.
פתרונות ראשוניים:
לשתף:
במקרים רבים רצים תהליכים שיכולים לשתף ספריות.
בפועל ,קוד הספריות משוכפל בזיכרון.
האם אפשר להימנע מהשכפול?
פתרונות אפשריים :ספריות משותפות ,מנוהלות על ידי מ"ה.
5
זיכרון פיזי /לוגי
נפריד את הזיכרון הפיזי מהזיכרון הלוגי של התהליך
לצורך כך נדרש לתמיכת חומרה ,ומערכת ההפעלה.
החומרה מספקת מנגנון בשם MMUלתרגום בין הכתובת הלוגית
לפיזית
6
רכיב זה מנהל גם אספקטים אחרים של הזיכרון ,כגון כל מערכת ה .cache
Memory Management Unit = MMU
: נמצא במקום הבאMMU
User Program
Logical addr.
MMU
Physical Memory
Physical addr.
7
טבלת הדפים
נִצֹור אזורי זיכרון בגודל אחיד בשם דפים (.)pages
כל Xבתים (דף אחד) רציפים בזיכרון יקבלו מלת תרגום ב.MMU -
עתה ,נתאים דפים לוגיים לדפים פיזיים (מסגרות .)frames -
Physical address
offset
MMU
Logical address
offset
Frame
Page table
בעת החלפת הקשר ,טבלת
הדפים של התהליך עולה
למקום מוגדר מראש בזיכרון.
ה MMUפונה למקום זה.
8
Page
Page
מערכת ההפעלה ודפדוף
מבני נתונים של מערכת ההפעלה כוללים:
9
טבלת מסגרות :לכל מסגרת בזיכרון הפיזי :פנויה /מוקצת (ולמי).
טבלת דפים לכל תהליך.
המיפוי
כמות הזיכרון הדרוש :לדף זיכרון בגודל ,2bדרושים bביטים.
0
דוגמא :האות F
כתובת לוגית 00101 = 5
דף 001 :#
01 :Offset
תרגום:
דף 1מתרגם למסגרת 6
מסגרת 110 :#
01 :Offset
תוצאת התרגום:
כתובת פיזית 11001 = 25
10
I
J
K
L
4
M
N
O
P
8
12
16
A
B
C
D
20
E
F
G
H
24
A
B
C
D
Page Table
5
6
1
2
E
F
G
H
I
J
K
L
M
N
O
P
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
= Pagingדפדוף
מספרים:
גודל דף מקובל 0.5Kb :עד .8Kb
מספר הדפיםsizeof mem / size of page :
מעבד Intel 386הוא המעבד הראשון של Intelבסדרת הx86 -
שתמך בדפדוף.
11
swapping
חלק מהדיסק מוקדש ל ' -אחסון זמני' של דפים אשר כרגע אינם
נמצאים בשימוש.
זה מאפשר מצב בו גודל הזיכרון הפיזי גדול יותר מהזיכרון הלוגי.
12
swappingו paging
כשתהליך בביצוע מעלים את טבלת הדפים שלו לזיכרון.
לכל רשומה בטבלת הדפים יש דגל :בצענו swap inלדף או לא.
13
אם הדגל מורם ,הרי שניתן להמשיך בתרגום ולגשת לזיכרון.
אם לא ,מ"ה מבצעת ,swap inואולי גם swap outכדי לפנות מסגרת.
טבלת הדפים
Memory (RAM)
Valid
Virtual Page
Number
1
1
0
1
1
1
0
1
0
1
page table
Disk Storage
(physical page
or disk address)
14
כיצד זה עובד?
כשניגשים לדף שאינו נמצא בזיכרון הראשי ,נוצרת פסיקה בשם
.page fault
מערכת ההפעלה:
תופסת את הפסיקה,
מעבירה את התהליך למצב המתנה,
מבצעת ,swapping
מחזירה את התהליך לריצה.
מערכת זיכרון המממשת מודל זה נקראת ( virtual memoryזיכרון
מדומה)
15
הבהרות לגבי זיכרון מדומה
כל תהליך יכול להשתמש בזיכרון רציף של עד ( 4 GBאם המחשב
הוא 32סיביות).
כלומר שני תהליכים יכולים להתייחס לאותה כתובת לוגית ,xאך זה ימופה
לכתובות פיזיות שונות.
כמה מה RAMיכול להיות מוקדש לתהליך מסוים ברגע נתון ?
16
לכאורה .4GB
למעשה ,בחלונות למשל עד 2GBמוקדשים למ"ה 2GB .אלה נשארים בזיכרון
– לא עושים להם .swap-out
הבהרות לגבי זיכרון מדומה
מרחב הכתובות הפיזי יכול להיות גדול יותר מ .4GB
הכתובת נשמרת על ידי יותר מ 32סיביות (על ידי שימוש ב .(double-word
בגרסה מסוימת של ,linuxלמשל ,זה 36סיביות ולכן המגבלה של RAM +
swap spaceהיא .4 * 16 = 64GB
...אך התועלת בכך היא רק בסביבה מרובת תהליכים.
17
הבהרות לגבי זיכרון מדומה
האם יש טעם להרחיב את הזיכרון למעל ?4GB
18
לכאורה זה יכול לחסוך swappingכי מידע של מספר תהליכים יישמר בזיכרון.
בפועל זה לא יעבוד כי כל המערכת מוגבלת לשליחת כתובות ברוחב 32סיביות.
למשל לא ניתן לשלוח כתובת כזאת על ה .bus
מסקנה :רק במערכות 64סיביות.
)Translation Lookaside Buffer (TLB
TLBמשמש כזיכרון מטמון של תרגומים TLB .מכיל חומרה
שמחפשת במקביל אחר רשומות תרגומים קיימים.
(נשים לב שבהחלפת תהליכים ,ה TLBצריך להימחק!).
TLBמהיר יותר מזיכרון רגיל ,והחיפוש בו נעשה במחיר של גישה
אחת.
אחוז הפעמים שגישה לזיכרון נפתרת באמצעות ה TLBנקרא hit
.ratio
19
זמן גישה לזיכרון
נחשב את זמן הגישה לזיכרון הממוצע בדרך הבאה:
80% hit ratio
20 nanosec TLB search
100 nanosec mem access
מכאןeffective access time = 0.8*120 + 0.2*220 = 140 nanosec :
כלומר 40%האטה לעומת גישה בודדת.
( 100 = 220גישה לטבלה 100 ,לערך מהזיכרון 20 ,גישה לזיכרון-מטמון בו לא מצאנו)
אבל:
עבור 98% hit ratioנקבל:
effective access time = 0.98 * 120 + 0.02*220 = 122 nanosec
כלומר 22%האטה לעומת גישה אחת.
20
בעיות...
כמה דפים להביא כשנוצר page faultואילו?
אילו דפים להוציא (כשצריך לפנות מקום) ?
איך נמנע ממצב בו המעבד עסוק כל הזמן בהחלפת דפים והתהליכים
לא מתקדמים בריצתם ( ִדשְ דּוש ? )thrashing --
חידה :שני תהליכים שצורכים מעט זיכרון רצים בו זמנית.
21
האם יש חשש לדשדוש ?