(C) Yohai Devir January מבנה מחשבים ספרתיים זכרון וירטואלי מבוסס על תרגול של מורן גביש
(C) Yohai Devir January הבעייה ישנה כמות נתונה ומוגבלת של זיכרון פיזי. איך נחלק אותו בין התהליכים השונים ? CPU תהליך 2 תהליך 1 תהליך 3 זיכרון פיזי
(C) Yohai Devir January פתרון ראשון : חלוקה שווה של הזיכרון בין התהליכים השונים. הבעייתיות בפתרון : 1. תהליכים שדורשים הרבה זיכרון מצריכים הגדלת הבלוק ( שמגביל מספר התהליכים האפשרי ) 2. תהליכים שדורשים מעט זיכרון מבזבזים את רוב הבלוק הגדול שהוקצה עבורם ( שברור פנימי ) 3. הקצאת הזיכרון לא ניתנת לשינוי בזמן ריצת התהליכים
(C) Yohai Devir January פתרון שני הקצאת זיכרון תיעשה בקטעים, על פי בקשות התהליכים. (דוגמה: Windows 3.x) הבעייתיות בפתרון : 1. עקב הקצאה ושחרור קטעים בגדלים שונים, הזיכרון שבין הקטעים מתבזבז ( שברור חיצוני ) 2. ניצול יעיל של זיכרון מצריך הזזת קטעים ושיטות מיעון מסובכות
(C) Yohai Devir January פתרון שלישי - זיכרון וירטואלי נפריד בין הזכרון שהתכנית רואה – "המרחב הלוגי" (הווירטואלי) לבין המרחב הפיזי (הזיכרון בפועל של המחשב). בפתרון זה בד"כ גם מקצים מקום בזיכרון המשני (הדיסק הקשיח) שישמש כהרחבה לזיכרון הפיזי הקיים במחשב.(swapping)
(C) Yohai Devir January מושגים מסגרת – הזיכרון הפיזי מחולק ליחידות שוות שנקראות מסגרות. PFN (physical frame number) – מספר מסגרת במרחב הפיזי. דף (page) – הזיכרון הלוגי של כל תהליך מחולק ליחידות שוות בגודל למסגרות. כל יחידה נקראת דף. VPN (virtual page number) – מספר דף במרחב הלוגי. זיכרון פיזי – הזיכרון של המחשב. זיכרון וירטואלי – מרחב זיכרון מדומה אליו ניגש תהליך. swapping – ניצול הזיכרון המשני להרחבת מרחב הזכרון שבשימוש; מבטל את החובה כי כל תהליך ישהה בזיכרון הפיזי במהלך כל הריצה, ובפרט מאפשר להריץ תהליכים גדולים מגודל הזיכרון הפיזי.
(C) Yohai Devir January יתרונות הזיכרון הווירטואלי 1. אפשרות להגדיל את הזיכרון השמיש מעבר לגודל הזיכרון הפיזי, בעזרת swapping. 2. אין צורך ב -relocation – לכל תוכנית מרחב זיכרון וירטואלי נפרד ( מתחילה מכתובת 0 בזיכרון ). 3. שיתוף זיכרון קל – יכולים להחזיק דף אחד בזיכרון הפיזי שאליו יצביעו רשומות PTE של תהליכים שונים. מקרה פרטי: תמיכה יעילה בריבוי תהליכים (fork). 4. הגנה ( הפרדה ) – בין מרחבי זיכרון של תהליכים שונים.
(C) Yohai Devir January מבנה הזיכרון הווירטואלי CPU 0x00000
(C) Yohai Devir January מבנה הזיכרון הפיזי הזיכרון הפיזי מחולק ל -2 חלקים : 1." החלק העליון " מכיל טבלאות תרגום עבור המרחבים הווירטואליים של כל התהליכים. 2."החלק התחתון" מכיל את המסגרות המכילות דפי הזיכרון של התהליכים. כל מסגרת יכולה להכיל דף כלשהו, ללא סדר מסוים. גודל מסגרת בזיכרון הפיזי = גודל דף בזיכרון הווירטואלי.
(C) Yohai Devir January מבנה הזיכרון הפיזי זיכרון משני ( דיסק ) PTE PT זיכרון ראשי PTBR 2
(C) Yohai Devir January מהלך גישה לכתובת וירטואלית ה -CPU ממען רק לפי הכתובות הווירטואליות של התהליך, ולכן כדי לגשת לנתון בזיכרון הפיזי יש צורך לתרגם את הכתובת הווירטואלית לכתובת פיזית. OffsetVPN VPN (Virtual Page Number) הוא מספר דף וירטואלי במרחב של התהליך. Offset – היסט מתחילת הדף לבית אליו רוצים לגשת. ניגשים למסגרת הנכונה בחלק התחתון עפ"י טבלת התרגום.
(C) Yohai Devir January מבנה טבלת תרגום PTE.... כל כניסה נקראת PTE (Page Table Entry) עבור כל דף וירטואלי במרחב התהליך יש כניסה אחת בטבלת התרגום של אותו תהליך. כלומר, לפי ה-VPN בכתובת הווירטואלית מוצאים את כניסת ה-PTE המתאימה בטבלת התרגום.
(C) Yohai Devir January מבנה טבלת תרגום PTE במערכת יש כמה תהליכים, אך בכל רגע נתון יש רק תהליך אחד (נקרא "התהליך הפעיל") שרץ כרגע במעבד. לתחילת טבלת התרגום של התהליך הפעיל מצביע ה-PTBR (Page Table Base Register). במקרה של החלפת תהליכים, יש לשנות את ה-PTBR להצביע על תחילת טבלת התרגום של התהליך החדש. PTE PTBR
(C) Yohai Devir January חישוב כתובת ( פיסית ) הכניסה המתאימה בטבלת התרגום : PTE_Address = [PTBR] + VPN*(Size Of One PTE)
(C) Yohai Devir January מבנה כניסה בטבלת התרגום VMPFN שדה PFN - זהו מספר המסגרת בה יושב הדף בזיכרון הפיזי.
(C) Yohai Devir January מבנה כניסה בטבלת התרגום VMPFN סיבית Valid – מציינת האם הדף נמצא בזיכרון הפיזי. (אם לא, ייתכן שהדף נמצא בזכרון המשני, או שהכתובת לא חוקית.) מדיניות הבאת הדפים היא Paging on Demand, כלומר רק כשיש דרישה מביאים את הדף המתאים לזיכרון הפיזי. אם הדף לא קיים בזיכרון הפיזי, בפנייה אליו תקרה פסיקת Page Fault (פנייה לכתובת וירטואלית שאין עבורה מיפוי לכתובת פיזית). הפסיקה מטופלת ע"י מערכת ההפעלה. אם הדף המבוקש נמצא בדיסק, המערכת צריכה לטעון אותו לאחת המסגרות הפנויות בזיכרון הפיזי. אם אין מסגרת פנויה אז יש לפנות את אחד הדפים, לעדכן את הדף שהוצא בזיכרון המשני, ולהכניס את הדף החדש למסגרת. הפינוי נעשה לפי מדיניות LRU.
(C) Yohai Devir January מבנה כניסה בטבלת התרגום VMPFN סיבית Modified – לפי מדיניות כתיבה Write-Back מעדכנים את תוכן הדף בזיכרון המשני רק כאשר מפנים אותו מהזיכרון הפיזי. הסיבית M מציינת האם הדף עודכן אחרי הטעינה. אם כן, בפינוי הדף נעדכן את תוכנו בדיסק.
(C) Yohai Devir January תרגום כתובת וירטואלית לפיזית שדה PFN – זהו מספר המסגרת בה יושב הדף בזיכרון הפיזי. שדה offset – אותו שדה ה - offset של הכתובת הוירטואלית. בסך הכל ישנן 2 גישות לזיכרון הפיזי – אחת לטבלת התרגום, ואחת לנתון עצמו. במידה ויש גם זיכרון מטמון, לאחר מציאת הכתובת הפיזית נחלק אותה לשדות tag, set, disp, ונחפש את הנתון במטמון כרגיל, כלומר, נחסוך את הגישה השניה. VPNoffset PFNoffset טבלת תרגום
(C) Yohai Devir January דוגמא של מכונה עם זיכרון מדומה הנחות : למכונה אין cache טבלת הדפים נמצאת בזיכרון הראשי כתובת בסיס של טבלת הדפים נתונה ברגיסטר PTBR=0x1000 תוכן הכתובת הוא C0. כתובת וירטואלית באורך 30 ביטים כתובת פיזית באורך 32 ביטים כניסה בטבלת הדפים מכילה את המידע הבא (PTE): PFNUnusedModifiedProtectionValid תזכורת : האינדקס בטבלת התרגום הנו מספר הדף המדומה.
(C) Yohai Devir January דוגמא : תוכנית קוראת משתנה מסוג DW (4 בתים ) הנמצא בכתובת מדומה x100100A מה היא הכתובת הפיזית של המשתנה ? 2. כמה גישות לזיכרון דרוש כדי לקרוא את הערך של המשתנה ? 1.מציאת הכתובת הפיזית של המשתנה: א- תרגום הכתובת לבינארי : A
(C) Yohai Devir January דוגמא : תוכנית קוראת משתנה מסוג DW (4 בתים ) הנמצא בכתובת מדומה x100100A מה היא הכתובת הפיזית של המשתנה ? 2. כמה גישות לזיכרון דרוש כדי לקרוא את הערך של המשתנה ? 1.מציאת הכתובת הפיזית של המשתנה: א- תרגום הכתובת לבינארי : A גודלו של שדה ה -PFN הוא 23 סיביות. גודלה של כתובת פיזית הינו 32 סיביות, והיא מחולקת ל -PFN ו -offest. לכן גודלו של שדה ה -offset הוא #offset=32-23=9 bit offsetVPN
(C) Yohai Devir January מציאת כתובת ה- PTE: + PTBR =PTE =0x VPN*
(C) Yohai Devir January גישה ראשונה לזיכרון לכתובת של ה PTE. תוכן הכתובת הוא C0 (נתון) זיכרון משני דיסק PTE C0 PT זיכרון ראשי PTBR
(C) Yohai Devir January מציאת ה - PFN: תרגום תוכן ה -PTE, C0 לבינארי 0C PFNUnusedModifiedProtectionValid
(C) Yohai Devir January היות ו - V=1 הדף נמצא בזכרון הפיזי, וניתן לגשת אליו. כתובת הדף בזכרון הפיזי היא : PFN (מתוך ה- PTE) Offset ( מהכתובת הוירטואלית )
(C) Yohai Devir January גישה שניה לזיכרון לכתובת A0 – להבאת הנתון זיכרון משני דיסק PTE C0 PT זיכרון ראשי PTBR A0
(C) Yohai Devir January שאלה 1 נתון מחשב עם זיכרון פיזי, זיכרון מדומה ומטמון. מרחב הכתובות המדומה בגודל 2 n. גודל הזיכרון הפיזי 2 m בתים. לכל בית יש כתובת. גודל דף בזיכרון המדומה הוא 2 q בתים. גודל בלוק של המטמון הוא 2 b בתים. המטמון יכול להכיל 2 c בלוקים. שיטת העבודה של המטמון - Direct mapped.
(C) Yohai Devir January א. תאר כיצד נראית כתובת מדומה במחשב זה. ב. תאר כיצד נראית כתובת פיזית במחשב זה. ג. איזה שיפור במהירות המחשב ניתן להשיג אם מתכנן המחשב ידאג לכך שיתקיים q≥b+c ? פתרון : א + ב, מרחב הכתובת המדומה בגודל 2 n, לכן אורך הכתובת הוירטואלית הוא n ביטים. גודל הזכרון הפיסי הוא 2 m ובכל כתובת יש בית, לכן אורך הכתובת הפיסית הוא m ביטים. גודל דף בזכרון המדומה הוא 2 q בתים, לכן אורך שדה ה - offset גם בכתובת המדומה וגם בכתובת הפיסית ( כי ה - offset המדומה שווה ל -offset הפיסי ) הוא q ביטים.
(C) Yohai Devir January PFNOffset m-qq כתובת פיזית VPNoffset n-qq כתובת מדומה ( וירטואלית )
(C) Yohai Devir January גודל בלוק במטמון הוא 2 b בתים, לכן אורך שדה ה - displacement בכתובת פיסית הוא b ביטים. המטמון יכול להכיל 2 c בלוקים ופועל בשיטת Direct mapped. לכן אורך שדה ה -set בכתובת פיסית הוא c ביטים. חלוקת הכתובת לשדות היא : tagsetdisp m-b-ccb
(C) Yohai Devir January ג. אם מתקיים אי שוויון q≥b+c אז ה -offset ( שדה q) מכיל בתוכו את השדות set ו - disp (b+c): יתכן ביצוע של שני תהליכים במקביל : תרגום כתובת מדומה לפיזית וחיפוש נתון במטמון. יתקבל מצב בו נידע את מיקומו של הנתון המבוקש במטמון עוד לפני תרגום מלא של כתובתו הוירטואלית לפיזית. ניתן יהיה להשתמש בנתון שהוצא מהמטמון עוד לפני סיום תרגום כתובתו המדומה ( שיפור מהירות המחשב ). הבעיה שעלולה להיווצר : לא ניתן לדעת אם הנתון שייך לכתובת הפיסית שתתקבל לאחר התרגום של הכתובת המדומה או לכתובת פיסית אחרת עקב קבלת tag- ים שונים.
(C) Yohai Devir January שאלה 2 1.במחשב מסוים יש זיכרון מדומה של 2 32 כתובות. 2.גודל דף של הזיכרון המדומה 2 13 בתים. 3.מבנה הכניסה בטבלת הדפים: 1 bit 2 bit12 bit MVUnusedPFN
(C) Yohai Devir January מהו גודל הזיכרון הפיזי ( לכל היותר )? מהו גודל טבלת הדפים ? גודל שדה ה -PFN הוא 12 ביטים ולכן כמות המסגרות בזיכרון הראשי היא לכל היותר הגודל של כל דף וירטואלי ( ולכן גם של מסגרת ) הוא 2 13 בתים, לכן מתקבל שגודל הזיכרון הפיסי הוא לכל היותר 2 12 *2 13 =2 25 בתים. גודל מרחב הזיכרון המדומה הוא 2 32 כתובות ( בית בכל כתובת ) וגודל הדף הינו ישנם 2 32 /2 13 =2 19 דפים וירטואליים ולכן אותה כמות כניסות בטבלת הדפים. למציאת אורך הכניסה בטבלת הדפים ( אורך כל PTE) נסכום את אורך השדות : =16 סיביות, כלומר 2 בתים. גודל טבלת הדפים הוא 2*2 19 =2 20 בתים.
(C) Yohai Devir January כמה תהליכים יכולים לרוץ בו זמנית על גבי המעבד? מספר התהליכים שיכולים לרוץ בזיכרון בו זמנית הוא לכל היותר כמספר טבלאות התרגום פחות אחד ( כדי שיהיה גם מקום בזיכרון לדפים ). לכל היותר 31 תהליכים יכולים לרוץ במקביל.
(C) Yohai Devir January בניסיון לחסוך זיכרון פיזי הנדרש ע"י ה-PT הוחלט להחזיק טבלה בה יש כניסה לכל מסגרת פיזית. אילו שדות צריכה להכיל טבלה כזו? נחזיק טבלת תרגום הפוכה, כלומר לכל מסגרת בזיכרון הפיזי נחזיק את השדות: VPN, Valid, Modified. כמו כן נחזיק מזהה תהליך (PID) כי דף מספר 2 (למשל) יכול להיות שייך לתהליך א' או לתהליך ב'.
(C) Yohai Devir January בהנחה שגודל כניסה חייב להיות חזקה של 2, כמה דפים פיזיים נצטרך כדי להחזיק את כל הטבלה ? ( של הסעיף הקודם ) ישנם 2 19 דפים ווירטואליים לכל תהליך, כלומר דרושים 19 ביטים לשדה VPN, ביט אחד ל - Valid, ביט אחד ל - Modified ובכדי להשלים לחזקה שלמה של 2 נחזיק 11 ביטים עבור מזהה התהליך. גודל הכניסה בטבלה החדשה יהיה 32 ביטים = 4 בתים. 1 bit 19 bit11 bit VMVPNProcess id מספר הכניסות הוא כמספר המסגרות הפיזיות. יש 2 12 מסגרות פיזיות, גודל כל כניסה 4 בתים ולכן גודל הטבלה החדשה 4*2 12 =2 14 בתים.
(C) Yohai Devir January מה היתרונות ואילו בעיות צפויות עם מימוש זה ? היתרון בטבלה החדשה הוא חסכון במקום. גודל כל דף וירטואלי הוא 2 13 בתים, גודל הטבלה החדשה הוא 2 14 ולכן הטבלה תתפוס רק 2 14 /2 13 =2 מסגרות בזיכרון. הבעיה הצפויה בשימוש בטבלה החדשה היא חיפוש של PFN בהינתן VPN. אם בטבלה הישנה VPN שימש כאינדקס כניסה, בטבלה החדשה נצטרך לסרוק את כל הכניסות, לבדוק את מזהה התהליך ואת ה -VPN הנתון ואז אינדקס הכניסה שמצאנו יהיה ה -PFN הדרוש. כלומר חסכנו מקום ופגענו ביעילות.
(C) Yohai Devir January backups
(C) Yohai Devir January רשימת ראשי תיבות PFN (Physical Frame Number) - אחת המסגרות בזיכרון הפיזי, שיכולה להכיל דף וירטואלי. VPN (Virtual Page Number ) - מספר הדף הוירטואלי של תהליך מסוים. Offset - כמה צריך לקפוץ מתחילת הדף עד המקום המסוים אליו רוצים לגשת בדף. PT (page table) – טבלה שמקשרת בין מספר דף וירטואלי (VPN) לבין הסטטוס והמיקום שלו. PTE (page table entry) – שורה ב - PT PTBR (Page Table Base Register) – רגיסטר שמצביע על טבלת הדפים של התהליך שרץ כרגע
(C) Yohai Devir January זיכרון וירטואלי עם מטמון