410 likes | 680 Views
מבנה מחשבים ספרתיים 234267. זכרון וירטואלי מבוסס על תרגול של מורן גביש. זיכרון פיזי. תהליך 1. CPU. תהליך 2. תהליך 3. הבעייה. ישנה כמות נתונה ומוגבלת של זיכרון פיזי. איך נחלק אותו בין התהליכים השונים?. פתרון ראשון:. חלוקה שווה של הזיכרון בין התהליכים השונים. הבעייתיות בפתרון:
E N D
מבנה מחשבים ספרתיים234267 זכרון וירטואלי מבוסס על תרגול של מורן גביש 234267 - January 2006
זיכרון פיזי תהליך 1 CPU תהליך 2 תהליך 3 הבעייה • ישנה כמות נתונה ומוגבלת של זיכרון פיזי. איך נחלק אותו בין התהליכים השונים? 234267 - January 2006
פתרון ראשון: • חלוקה שווה של הזיכרון בין התהליכים השונים. • הבעייתיותבפתרון: • תהליכים שדורשים הרבה זיכרון מצריכים הגדלת הבלוק (שמגביל מספר התהליכים האפשרי) • תהליכיםשדורשיםמעטזיכרוןמבזבזים את רוב הבלוק הגדול שהוקצה עבורם (שברור פנימי) • הקצאתהזיכרוןלאניתנתלשינויבזמןריצת התהליכים 234267 - January 2006
פתרון שני • הקצאת זיכרון תיעשה בקטעים, על פי בקשות התהליכים. • (דוגמה: Windows 3.x) • הבעייתיותבפתרון: • עקב הקצאה ושחרור קטעים בגדלים שונים, הזיכרון שבין הקטעים מתבזבז (שברור חיצוני) • ניצול יעיל של זיכרון מצריך הזזת קטעים ושיטות מיעון מסובכות 234267 - January 2006
פתרון שלישי - זיכרון וירטואלי • נפריד ביןהזכרון שהתכנית רואה – "המרחבהלוגי" (הווירטואלי)לבין המרחבהפיזי (הזיכרוןבפועלשלהמחשב). • בפתרוןזהבד"כ גם מקציםמקוםבזיכרוןהמשני (הדיסקהקשיח)שישמשכהרחבהלזיכרון הפיזיהקייםבמחשב.(swapping) 234267 - January 2006
מושגים זיכרון פיזי – הזיכרון של המחשב. • מסגרת – הזיכרון הפיזי מחולק ליחידות שוותשנקראות מסגרות. • PFN(physical frame number) – מספר מסגרת במרחב הפיזי. • דף (page) – הזיכרון הלוגי של כל תהליך מחולק ליחידות שוות בגודל למסגרות. כל יחידה נקראת דף. • VPN(virtual page number) – מספר דף במרחב הלוגי. זיכרון וירטואלי – מרחב זיכרון מדומה אליו ניגש תהליך. swapping – ניצול הזיכרון המשני להרחבת מרחב הזכרון שבשימוש; מבטל את החובה כי כל תהליך ישהה בזיכרון הפיזי במהלך כל הריצה, ובפרט מאפשר להריץ תהליכים גדולים מגודל הזיכרון הפיזי. 234267 - January 2006
יתרונות הזיכרון הווירטואלי • אפשרות להגדיל את הזיכרון השמיש מעבר לגודל הזיכרון הפיזי, בעזרת swapping. • אין צורך ב-relocation – לכל תוכנית מרחב זיכרון וירטואלי נפרד (מתחילה מכתובת 0 בזיכרון). • שיתוף זיכרון קל – יכולים להחזיק דף אחד בזיכרון הפיזי שאליו יצביעו רשומות PTE של תהליכים שונים. • מקרה פרטי: תמיכה יעילה בריבוי תהליכים (fork). • הגנה (הפרדה) – בין מרחבי זיכרון של תהליכים שונים. 234267 - January 2006
מבנה הזיכרון הווירטואלי 0x00000 CPU 234267 - January 2006
מבנה הזיכרון הפיזי • הזיכרוןהפיזימחולק ל-2 חלקים: • "החלקהעליון" מכילטבלאותתרגוםעבורהמרחביםהווירטואלייםשל כלהתהליכים. • "החלקהתחתון" מכיל אתהמסגרותהמכילותדפי הזיכרוןשל התהליכים. • כלמסגרתיכולהלהכילדףכלשהו, ללאסדרמסוים. • גודלמסגרתבזיכרוןהפיזי = גודלדףבזיכרוןהווירטואלי. 234267 - January 2006
PTE PTE PTE מבנה הזיכרון הפיזי זיכרון משני (דיסק) זיכרון ראשי PT 1 2 PT PTBR 3 1 1 2 1 2 2 3 3 2 3 234267 - January 2006
מהלך גישה לכתובת וירטואלית • ה-CPUממען רק לפי הכתובות הווירטואליות של התהליך, ולכן כדי לגשת לנתון בזיכרון הפיזי יש צורך לתרגם את הכתובת הווירטואלית לכתובת פיזית. VPN (Virtual Page Number) הוא מספרדףוירטואליבמרחב שלהתהליך. Offset – היסט מתחילתהדףלביתאליורוציםלגשת. ניגשיםלמסגרתהנכונהבחלקהתחתוןעפ"יטבלתהתרגום. 234267 - January 2006
מבנה טבלת תרגום כלכניסהנקראת PTE (Page Table Entry) עבורכלדףוירטואליבמרחבהתהליך ישכניסהאחתבטבלתהתרגוםשלאותו תהליך. כלומר, לפי ה-VPN בכתובת הווירטואלית מוצאים אתכניסת ה-PTE המתאימה בטבלת התרגום. 234267 - January 2006
מבנה טבלת תרגום PTBR במערכת יש כמה תהליכים, אך בכל רגע נתון יש רק תהליך אחד (נקרא "התהליך הפעיל") שרץ כרגע במעבד. לתחילת טבלת התרגום של התהליך הפעיל מצביע ה-PTBR (Page Table Base Register).במקרה של החלפת תהליכים, יש לשנות את ה-PTBR להצביע על תחילת טבלת התרגום של התהליך החדש. 234267 - January 2006
חישוב כתובת (פיסית) הכניסה המתאימה בטבלת התרגום: PTE_Address = [PTBR] + VPN*(Size Of One PTE) 234267 - January 2006
מבנה כניסה בטבלת התרגום שדה PFN - זהומספרהמסגרתבהיושבהדףבזיכרוןהפיזי. 234267 - January 2006
מבנה כניסה בטבלת התרגום סיבית Valid – מציינת האם הדף נמצא בזיכרון הפיזי. (אם לא, ייתכן שהדף נמצא בזכרון המשני, או שהכתובת לא חוקית.) מדיניות הבאת הדפים היא Paging on Demand, כלומר רק כשיש דרישה מביאים את הדף המתאים לזיכרון הפיזי. אם הדף לא קיים בזיכרון הפיזי, בפנייה אליו תקרה פסיקת Page Fault (פנייה לכתובת וירטואלית שאין עבורה מיפוי לכתובת פיזית). הפסיקה מטופלת ע"י מערכת ההפעלה. אם הדף המבוקש נמצא בדיסק, המערכת צריכה לטעון אותו לאחת המסגרות הפנויות בזיכרון הפיזי. אם אין מסגרת פנויה אז יש לפנות את אחד הדפים, לעדכן את הדף שהוצא בזיכרון המשני, ולהכניס את הדף החדש למסגרת. הפינוי נעשה לפי מדיניות LRU. 234267 - January 2006
מבנה כניסה בטבלת התרגום סיבית Modified – לפי מדיניות כתיבה Write-Back מעדכנים את תוכן הדף בזיכרון המשני רק כאשר מפנים אותו מהזיכרון הפיזי. הסיבית M מציינת האם הדף עודכן אחרי הטעינה. אם כן, בפינוי הדף נעדכן את תוכנו בדיסק. 234267 - January 2006
תרגום כתובת וירטואלית לפיזית • שדה PFN – זהו מספרהמסגרתבהיושבהדףבזיכרוןהפיזי. • שדה offset – אותו שדהה- offset שלהכתובתהוירטואלית. • בסךהכלישנן 2גישותלזיכרוןהפיזי – אחת לטבלתהתרגום, ואחת לנתוןעצמו. • במידהוישגםזיכרוןמטמון, לאחרמציאתהכתובתהפיזיתנחלקאותהלשדות • tag, set, disp, ונחפשאתהנתוןבמטמוןכרגיל, כלומר, נחסוךאתהגישההשניה. 234267 - January 2006
דוגמא של מכונה עם זיכרון מדומה • הנחות : • • למכונה אין cache • • טבלת הדפים נמצאת בזיכרון הראשי • • כתובת בסיס של טבלת הדפים נתונה ברגיסטר PTBR=0x1000 • • תוכן הכתובת 00201200 הוא 940001C0. • • כתובת וירטואלית באורך 30 ביטים • • כתובת פיזית באורך 32 ביטים • • כניסה בטבלת הדפים מכילה את המידע הבא (PTE): תזכורת: האינדקס בטבלת התרגום הנו מספר הדף המדומה. 234267 - January 2006
דוגמא: • תוכנית קוראת משתנה מסוג DW (4 בתים)הנמצא בכתובת מדומה x100100A00. • 1. מה היא הכתובת הפיזית של המשתנה ? • 2. כמה גישות לזיכרון דרוש כדי לקרוא את הערך של המשתנה ? • מציאתהכתובתהפיזיתשלהמשתנה: • תרגום הכתובת לבינארי: 234267 - January 2006
דוגמא: • תוכנית קוראת משתנה מסוג DW (4 בתים)הנמצא בכתובת מדומה x100100A00. • 1. מה היא הכתובת הפיזית של המשתנה ? • 2. כמה גישות לזיכרון דרוש כדי לקרוא את הערך של המשתנה ? • מציאתהכתובתהפיזיתשלהמשתנה: • תרגום הכתובת לבינארי: VPN offset גודלושלשדהה-PFN הוא 23סיביות. גודלה של כתובת פיזית הינו 32 סיביות, והיא מחולקת ל-PFN ו-offest. לכן גודלו של שדה ה-offset הוא #offset=32-23=9 bit 234267 - January 2006
מציאת כתובת ה- PTE: 234267 - January 2006
PT PT PTE PTE 940001C0 1 2 2 גישהראשונהלזיכרוןלכתובתשל ה PTE. תוכן הכתובת 00201200הוא 940001C0 (נתון). זיכרון ראשי זיכרון משני דיסק 1 2 PTBR 3 1 00201200 1 2 2 3 3 234267 - January 2006
מציאת ה- PFN:תרגום תוכן ה-PTE, 940001C0 לבינארי 234267 - January 2006
היות ו- V=1 הדף נמצא בזכרון הפיזי, וניתן לגשת אליו.כתובת הדף בזכרון הפיזי היא: 234267 - January 2006
PT PT PTE PTE 940001C0 1 2 2 גישה שניה לזיכרון לכתובת 000380A0 – להבאת הנתון זיכרון ראשי זיכרון משני דיסק 1 2 PTBR 3 1 00201200 1 2 2 3 3 000380A0 234267 - January 2006
שאלה 1 • נתוןמחשבעםזיכרוןפיזי, זיכרוןמדומהומטמון. • מרחבהכתובותהמדומהבגודל 2n. • גודל הזיכרון הפיזי 2m בתים. לכל בית יש כתובת. • גודל דף בזיכרון המדומה הוא 2q בתים. • גודל בלוק של המטמון הוא 2bבתים. • המטמון יכול להכיל 2c בלוקים. • שיטת העבודה של המטמון - Direct mapped. 234267 - January 2006
א. תארכיצדנראיתכתובתמדומהבמחשבזה.ב. תארכיצדנראיתכתובתפיזיתבמחשבזה.ג. איזה שיפור במהירות המחשב ניתן להשיג אם מתכנן המחשב ידאג לכך שיתקיים q≥b+c ? • פתרון: • א+ב, מרחב הכתובת המדומה בגודל 2n, לכן אורך הכתובת הוירטואלית הוא n ביטים. • גודל הזכרון הפיסי הוא 2m ובכל כתובת יש בית, לכן אורך הכתובת הפיסית הוא m ביטים. • גודל דף בזכרון המדומה הוא 2q בתים, לכן אורך שדה ה-offsetגם בכתובת המדומה וגם בכתובת הפיסית (כי ה-offset המדומה שווה ל-offset הפיסי) הוא q ביטים. 234267 - January 2006
גודל בלוק במטמון הוא 2b בתים, לכן אורך שדה ה-displacement בכתובת פיסית הוא b ביטים. המטמון יכול להכיל 2c בלוקים ופועל בשיטת Direct mapped. לכן אורך שדה ה-set בכתובת פיסית הוא c ביטים. • חלוקת הכתובת לשדות היא: 234267 - January 2006
ג. אם מתקיים אי שוויון q≥b+c אז ה-offset (שדה q) מכיל בתוכו את השדות set ו- disp (b+c): • יתכן ביצוע של שני תהליכים במקביל: תרגום כתובת מדומה לפיזית וחיפוש נתון במטמון. • יתקבלמצבבונידעאתמיקומושלהנתוןהמבוקשבמטמוןעודלפניתרגוםמלאשלכתובתו הוירטואליתלפיזית. • ניתןיהיהלהשתמשבנתוןשהוצאמהמטמוןעודלפניסיוםתרגוםכתובתוהמדומה (שיפור מהירותהמחשב). • הבעיה שעלולה להיווצר: לא ניתן לדעת אם הנתון שייך לכתובת הפיסית שתתקבל לאחר התרגום של הכתובת המדומה או לכתובת פיסית אחרת עקב קבלת tag-ים שונים. 234267 - January 2006
שאלה 2 • במחשב מסוים יש זיכרון מדומה של 232 כתובות. • גודל דף של הזיכרון המדומה 213 בתים. • מבנה הכניסה בטבלת הדפים: 234267 - January 2006
מהוגודלהזיכרוןהפיזי (לכלהיותר)?מהוגודלטבלתהדפים? • גודל שדה ה-PFN הוא 12 ביטים ולכן כמות המסגרות בזיכרון הראשי היא לכל היותר 212. הגודל של כל דף וירטואלי (ולכן גם של מסגרת) הוא 213 בתים, לכן מתקבל שגודל הזיכרון הפיסי הוא לכל היותר 212*213=225 בתים. • גודל מרחב הזיכרון המדומה הוא 232 כתובות (בית בכל כתובת) וגודל הדף הינו 213. ישנם 232/213=219 דפים וירטואליים ולכן אותה כמות כניסות בטבלת הדפים. • למציאת אורך הכניסה בטבלת הדפים (אורך כל PTE) נסכום את אורך השדות: 1+1+2+12=16 סיביות, כלומר 2 בתים. גודל טבלת הדפים הוא 2*219=220 בתים. 234267 - January 2006
כמהתהליכיםיכוליםלרוץבוזמניתעלגביהמעבד?כמהתהליכיםיכוליםלרוץבוזמניתעלגביהמעבד? • מספר התהליכים שיכולים לרוץ בזיכרון בו זמנית הוא לכל היותר כמספר טבלאות התרגום פחות אחד (כדי שיהיה גם מקום בזיכרון לדפים). לכל היותר 31 תהליכים יכולים לרוץ במקביל. 234267 - January 2006
בניסיון לחסוך זיכרון פיזי הנדרש ע"י ה-PTהוחלט להחזיק טבלה בה יש כניסה לכל מסגרת פיזית. אילו שדות צריכה להכיל טבלה כזו? • נחזיק טבלת תרגום הפוכה, כלומר לכל מסגרת בזיכרון הפיזי נחזיק את השדות: VPN, Valid, Modified. כמו כן נחזיק מזהה תהליך (PID) כי דף מספר 2 (למשל) יכול להיות שייך לתהליך א' או לתהליך ב'. 234267 - January 2006
בהנחה שגודל כניסה חייב להיות חזקה של 2, כמה דפים פיזיים נצטרך כדי להחזיק את כל הטבלה ? (של הסעיף הקודם) • ישנם 219 דפים ווירטואליים לכל תהליך, כלומר דרושים 19 ביטים לשדה VPN, ביט אחד ל- Valid, ביט אחד ל- Modified ובכדי להשלים לחזקה שלמה של 2 נחזיק 11 ביטים עבור מזהה התהליך. גודל הכניסה בטבלה החדשה יהיה 32 ביטים = 4 בתים. מספר הכניסות הוא כמספר המסגרות הפיזיות.יש 212 מסגרות פיזיות, גודל כל כניסה 4 בתים ולכן גודל הטבלה החדשה 4*212=214בתים. 234267 - January 2006
מה היתרונות ואילו בעיות צפויות עם מימוש זה? היתרון בטבלה החדשה הוא חסכון במקום. גודל כל דף וירטואלי הוא 213 בתים, גודל הטבלה החדשה הוא 214 ולכן הטבלה תתפוס רק 214/213=2 מסגרות בזיכרון. הבעיה הצפויה בשימוש בטבלה החדשה היא חיפוש של PFN בהינתן VPN. אם בטבלה הישנה VPN שימש כאינדקס כניסה, בטבלה החדשה נצטרך לסרוק את כל הכניסות, לבדוק את מזהה התהליך ואת ה-VPN הנתון ואז אינדקס הכניסה שמצאנו יהיה ה-PFN הדרוש. כלומר חסכנו מקום ופגענו ביעילות. 234267 - January 2006
backups 234267 - January 2006
רשימת ראשי תיבות • PFN(Physical Frame Number) - אחת המסגרות בזיכרון הפיזי, שיכולה להכיל דף וירטואלי. • VPN (Virtual Page Number)- מספר הדףהוירטואלישלתהליךמסוים. • Offset - כמהצריךלקפוץ מתחילתהדףעדהמקוםהמסויםאליורוציםלגשתבדף. • PT (page table) – טבלה שמקשרת בין מספר דף וירטואלי (VPN) לבין הסטטוס והמיקום שלו. • PTE (page table entry) – שורה ב- PT • PTBR (Page Table Base Register) – רגיסטר שמצביע על טבלת הדפים של התהליך שרץ כרגע 234267 - January 2006
זיכרון וירטואלי עם מטמון 234267 - January 2006