1 / 21

זיכרון וירטואלי

(יתכן שכדאי לעבור ל class19 של csapp ). זיכרון וירטואלי. זיכרון וירטואלי מבוסס על שקפים מ 'מערכות הפעלה' 234119. תהליך 1. תהליך 2. תהליך 3. שטח זיכרון פנוי. מ"ה. ניהול זיכרון ראשי. זיכרון המחשב מחולק בין מ ” ה ובין התהליכים השונים.

andren
Download Presentation

זיכרון וירטואלי

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. (יתכן שכדאי לעבור ל class19 של csapp) זיכרון וירטואלי זיכרון וירטואלי מבוסס על שקפים מ 'מערכות הפעלה' 234119

  2. תהליך 1 תהליך 2 תהליך 3 שטח זיכרון פנוי מ"ה ניהול זיכרון ראשי • זיכרון המחשב מחולק בין מ”ה ובין התהליכים השונים. • בעבר כל מרחב הזיכרון של תהליך במצב ריצה היה בזיכרון הראשי לפני תחילת הריצה. • כאשר נוצר תהליך חדש, היה מוקצה לו שטח זיכרון פנוי שיכול להכיל את כל מרחב הזיכרון שלו. • כאשר הסתיים התהליך, שוחרר הזיכרון שהוקצה לו.

  3. הבעיה • בד"כ הזיכרון הראשי במחשב לא גדול מספיק לספק את דרישת הזיכרון של כל התהליכים הרצים ''בו-זמנית'' (או אפילו אחד!).

  4. פתרונות ראשוניים: • לחסוך: • קוד התהליך בדרך כלל מנופח עכב כך שהוא מכיל ספריות שהתהליך לא משתמש בהן בפועל. • האם אפשר לחסוך קִישוּר עם קוד לא נדרש? • כן, בעזרת קישור דינמי.

  5. פתרונות ראשוניים: • לשתף: • במקרים רבים רצים תהליכים שיכולים לשתף ספריות. • בפועל, קוד הספריות משוכפל בזיכרון. • האם אפשר להימנע מהשכפול? • פתרונות אפשריים: ספריות משותפות, מנוהלות על ידי מ"ה.

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

  7. Physical Memory User Program MMU Logical addr. Physical addr. MMU = Memory Management Unit • MMU נמצא במקום הבא:

  8. טבלת הדפים • נִצוֹר אזורי זיכרון בגודל אחיד בשם דפים (pages). • כל X בתים (דף אחד) רציפים בזיכרון יקבלו מלת תרגום ב- MMU. • עתה, נתאים דפים לוגיים לדפים פיזיים (מסגרות - frames). בעת החלפת הקשר, טבלת הדפים של התהליך עולה למקום מוגדר מראש בזיכרון. ה MMU פונה למקום זה.

  9. מערכת ההפעלה ודפדוף • מבני נתונים של מערכת ההפעלה כוללים: • טבלת מסגרות: לכל מסגרת בזיכרון הפיזי: פנויה / מוקצת (ולמי). • טבלת דפים לכל תהליך.

  10. המיפוי • כמות הזיכרון הדרוש:לדף זיכרון בגודל 2b, דרושים b ביטים. דוגמא: האות F כתובת לוגית 5 = 00101 דף #: 001 Offset: 01 תרגום: דף 1 מתרגם למסגרת 6 מסגרת #: 110 Offset: 01 תוצאת התרגום: כתובת פיזית 25 = 11001

  11. Paging = דפדוף • מספרים: • גודל דף מקובל: 0.5Kb עד 8Kb. • מספר הדפים: sizeof mem / size of page • מעבד Intel 386 הוא המעבד הראשון של Intel בסדרת ה- x86 שתמך בדפדוף.

  12. swapping • חלק מהדיסק מוקדש ל - 'אחסון זמני' של דפים אשר כרגע אינם נמצאים בשימוש. • זה מאפשר מצב בו גודל הזיכרון הפיזי גדול יותר מהזיכרון הלוגי.

  13. swapping ו paging • כשתהליך בביצוע מעלים את טבלת הדפים שלו לזיכרון. • לכל רשומה בטבלת הדפים יש דגל: בצענו swap in לדף או לא. • אם הדגל מורם, הרי שניתן להמשיך בתרגום ולגשת לזיכרון. • אם לא, מ"ה מבצעת swap in, ואולי גם swap out כדי לפנות מסגרת.

  14. טבלת הדפים Memory (RAM) Valid Virtual Page Number 1 1 0 1 1 1 0 1 0 page table (physical page or disk address) 1 Disk Storage

  15. כיצד זה עובד? • כשניגשים לדף שאינו נמצא בזיכרון הראשי, נוצרת פסיקה בשם page fault. • מערכת ההפעלה: • תופסת את הפסיקה, • מעבירה את התהליך למצב המתנה, • מבצעת swapping, • מחזירה את התהליך לריצה. • מערכת זיכרון המממשת מודל זה נקראת virtual memory (זיכרון מדומה)

  16. הבהרות לגבי זיכרון מדומה • כל תהליך יכול להשתמש בזיכרון רציף של עד GB 4 (אם המחשב הוא 32 סיביות). • כלומר שני תהליכים יכולים להתייחס לאותה כתובת לוגית x, אך זה ימופה לכתובות פיזיות שונות. • כמה מה RAM יכול להיות מוקדש לתהליך מסוים ברגע נתון ? • לכאורה 4GB. • למעשה, בחלונות למשל עד 2GB מוקדשים למ"ה. 2GB אלה נשארים בזיכרון – לא עושים להם swap-out.

  17. הבהרות לגבי זיכרון מדומה • מרחב הכתובות הפיזי יכול להיות גדול יותר מ 4GB. • הכתובת נשמרת על ידי יותר מ 32 סיביות (על ידי שימוש ב (double-word. • בגרסה מסוימת של linux, למשל, זה 36 סיביות ולכן המגבלה של RAM + swap space היא 4 * 16 = 64GB. • ... אך התועלת בכך היא רק בסביבה מרובת תהליכים.

  18. הבהרות לגבי זיכרון מדומה • האם יש טעם להרחיב את הזיכרון למעל 4GB? • לכאורה זה יכול לחסוך swapping כי מידע של מספר תהליכים יישמר בזיכרון. • בפועל זה לא יעבוד כי כל המערכת מוגבלת לשליחת כתובות ברוחב 32 סיביות. למשל לא ניתן לשלוח כתובת כזאת על ה bus. • מסקנה: רק במערכות 64 סיביות.

  19. Translation Lookaside Buffer (TLB) • TLB משמש כזיכרון מטמון של תרגומים. TLB מכיל חומרה שמחפשת במקביל אחר רשומות תרגומים קיימים. • (נשים לב שבהחלפת תהליכים, ה TLB צריך להימחק!). • TLB מהיר יותר מזיכרון רגיל, והחיפוש בו נעשה במחיר של גישה אחת. • אחוז הפעמים שגישה לזיכרון נפתרת באמצעות ה TLB נקרא hit ratio.

  20. זמן גישה לזיכרון • נחשב את זמן הגישה לזיכרון הממוצע בדרך הבאה: 80% hit ratio 20 nanosec TLB search 100 nanosec mem access מכאן: effective access time = 0.8*120 + 0.2*220 = 140 nanosec כלומר 40% האטה לעומת גישה בודדת. (220 = 100 גישה לטבלה, 100 לערך מהזיכרון, 20 גישה לזיכרון-מטמון בו לא מצאנו) • אבל: עבור 98% hit ratio נקבל: effective access time = 0.98 * 120 + 0.02*220 = 122 nanosec כלומר 22% האטה לעומת גישה אחת.

  21. בעיות... • כמה דפים להביא כשנוצר page fault ואילו? • אילו דפים להוציא (כשצריך לפנות מקום) ? • איך נמנע ממצב בו המעבד עסוק כל הזמן בהחלפת דפים והתהליכים לא מתקדמים בריצתם (דִשְדוּש -- thrashing) ? • חידה: שני תהליכים שצורכים מעט זיכרון רצים בו זמנית. • האם יש חשש לדשדוש ?

More Related