28
הההההה ההההה ההההה13 – ההההה ההההההה-Linux : הההה

מערכות הפעלה

Embed Size (px)

DESCRIPTION

מערכות הפעלה. תרגול 13 – ניהול זיכרון ב- Linux : המשך. תוכן התרגול. טבלת המסגרות מטמון הדפים למה יש בו צורך? איך דפים מגיעים למטמון? שדות ומבנים במטמון הדפים דוגמה פינוי דפים דירוג פעילות של דפים בזיכרון פינוי בפועל של זיכרון פינוי דפים ממרחבי זיכרון. מטמון הדפים – למה יש בו צורך?. - PowerPoint PPT Presentation

Citation preview

Page 1: מערכות הפעלה

מערכות הפעלה

המשך : Linux- – ניהול זיכרון ב13תרגול

Page 2: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 2(c) 2003 ארז חדד

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

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

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

Page 3: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 3(c) 2003 ארז חדד

מטמון הדפים – למה יש בו צורך?:נסתכל על המצב האפשרי הבא

,השייך למרחב הזיכרון של תהליך מסוים, מפונה. דף.לפני שהפינוי הסתיים, התהליך מנסה לגשת לאותו דף

( ?מתי נסמן שהדף לא בזיכרוןpresent = 0)בטבלת הדפים אם לפני הפינוי בפועל, ואז 1.

כשמחליטים לפנות דף קודם כל מסמנים אותו ע“יpresent = 0. -התהליך מנסה לגשת לדף, מגלה שpresent = 0 ניגש לזיכרון המשני ,

לפי הכתובת במאגר הדפדוף. >= המערכת עוד לא הספיקה לכתוב את הדף למאגר הדפדוף נתונים לא מעודכנים ואף יתכן זבל(לא נכוןהדף שנקרא ע“י התהליך(

אם אחרי הפינוי בפועל, ואז2..מתחילים לפנות את הדף-התהליך ניגש לדף , הpresent = 1 .עדיין הדף פונה ודף אחר נטען לאותה מסגרת>= גישה לא חוקית ! התהליך ניגש למסגרת המצוינת בטבלת הדפים

Page 4: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 4(c) 2003 ארז חדד

מטמון הדפים נדרש מנגנון שינהל את פינוי והבאת הדפים

מ/לזיכרון הראשי! ( מטמון הדפיםPage Cache) הוא המנגנון המרכזי

.Linuxלטעינת ופינוי דפים בין הזיכרון לדיסק ב- דרך תמידכל דף של מרחב הזיכרון של תהליך מפונה

מטמון הדפים..מטמון הדפים ממומש כחלק מטבלת המסגרות

Page 5: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 5(c) 2003 ארז חדד

)Linux )1טבלת המסגרות ב- גרעיןLinux מחזיק מערך עם כניסה לכל מסגרת

בזיכרון הראשי של המחשב המערך נקראmem_map וכל כניסה היא מסוג struct

page קובץ גרעיןinclude/linux/mm.h

:מספר שדות חשובים בכל כניסהcount( מונה שימוש – reference counter :של הדף שבמסגרת )

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

flags:דגלים המתארים את מצב הדף שבמסגרת, כגון – PG_locked מציין שהמסגרת נעולה עקב פעולת פינוי/הבאת דף –

שעדיין לא הסתיימהPG_dirty"מציין שתוכן המסגרת "מלוכלך – :דגלים נוספים שנראה בהמשךPG_referenced, PG_active,

PG_lru .משמשים למנגנון פינוי הדפים –

Page 6: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 6(c) 2003 ארז חדד

)Linux )2טבלת המסגרות ב-mapping מצביע לאובייקט ניהול המכיל מידע -

ופונקציות לטיפול בדף שבמסגרת )פינוי וטעינה( לפי סוג המיפוי שלו )ממופה לקובץ, או ממופה אנונימי(

indexמציין את המיקום הפיזי של הדף במאגר בדיסק - ( עבור מידע מקובץ, את ההיסט מתחילת הקובץoffset)עבור דף מזיכרון תהליך, את מזהה המגירה

:שדות נוספים שנראה בהמשך lru, next_hash, pprev_hash

Page 7: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 7(c) 2003 ארז חדד

מספר מסגרת

countflagslrunext_hash

pprev_hash

mappingindex

..

1295--RDNULLNULLNULL

..

54394ALD

..

112340--NULLNULL

..

454421LDRNULLNULL

..

934212LR

..

swap1מאגר דפדוף דיסקים swap2מאגר דפדוף

bin/ls/קובץ home/eli/file1/קובץ

מטמוןהדפדוף

טבלת המסגרות

מסגרתגרעין

אוביקטניהולקובץ

flags:R - PG_referencedD - PG_dirtyA - PG_activeL - PG_lru

Page 8: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 8(c) 2003 ארז חדד

hash tableמטמון הדפים – מטמון הדפים מכילhash table( המתרגם צירוף של mapping+index )

של indexלכתובת מסגרת )אם יש כזו( המכילה את הדף במיקום .mappingהאובייקט

כל המסגרות שמתאימות לאותוhash מקושרות ברשימה כפולה ברשומת המסגרת.pprev_hash ו-next_hashמעגלית דרך השדות

-לhash tableיש תפקיד מרכזי במנגנון הדפדוף, כפי שנראה בהמשך הפונקציות/מאקרו הבאות, המוגדרות בקבצי הגרעיןmm/filemap.c

:hash table, קשורות ל-include/linux/pagemap.hו-page_hash)(-פונקצית ה – hashfind_get_page)( מקבלת – mapping+index ומחזירה מצביע למסגרת

אם אין(NULLהמכילה את הדף המתאים )או add_to_page_cache)( )הוספת מסגרת + מיקום בדיסק )במגירה או בקובץ –

hash-tableלמטמון וכך גם ל-

Page 9: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 9(c) 2003 ארז חדד

מטמון הדפים – מוני שימוש בדומה למסגרת, לכל מגירה במאגר הדפדוף יש מונה

, הסופר כמה מרחבי זכרון swap_mapשימוש בשם מצביעים לדף המאוחסן במגירה.

שדה( מבחינת מונה השימוש של מסגרתcount או )(, מטמון הדפים נחשב כמרחב swap_mapמגירה )

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

מבוצעת עם ניתוק 1. הקטנת המונה ב-1המונה ב-המסגרת או המגירה מהמטמון

-המטרה: למנוע שיבוש במיפוי הhash-table באמצעות הקצאה מחדש של המסגרת/מגירה עד להוצאת הדף

מהמטמון

Page 10: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 10(c) 2003 ארז חדד

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

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

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

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

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

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

את קיום הקשר(כאשר הקשר ניתק, המסגרת מוצאת ממטמון הדפים

)וגם המגירה )מונה השיתוף של המגירה מוקטן..

Page 11: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 11(c) 2003 ארז חדד

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

(1 של המסגרת מוגדל ב- countנמצא הדף )ה- מוקצית מגירה במאגר הדפדוף, אליה יעבור הדף

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

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

Page 12: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 12(c) 2003 ארז חדד

(1מטמון הדפים – דוגמה) הרלוונטיות של מטמון הדפים גדלה עוד יותר כאשר קיים

שיתוף של דף ע“י מספר תהליכים.להלן דוגמה לתהליך פינוי דף ממופה אנונימי למסגרת

S1-ו S2 הם שני מרחבי זיכרון שלהם דף משותף P המצוי בתחילה ,במסגרת בזיכרון.

2

S1

S2

PC

מאגר דפדוף

זיכרון ראשי 1P

מטמון הדפים

(countמונה השיתוף )

Page 13: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 13(c) 2003 ארז חדד

(2מטמון הדפים – דוגמה) במסגרת פינוי דפים, מבוצע מעבר על הטבלאות שלS1 והגרעין

לדיסק:Pמחליט לפנות את הדףP שדה( אינו במטמון הדפים mapping במסגרת מצביע על NULL:ולכן )

מוקצית מגירה עבורP המסגרת והמגירה שלP מקושרות למטמון הדפים )עדכון מוני השיתוף, עדכון

mapping-ו index)במסגרת -הטבלה בS1 עוברת להצביע על

)מזהה המגירה Pהמגירה של מוצב בטבלה, עדכון מוני השיתוף(

P!2 עדיין לא מפונה פיזית מהזיכרון

S1

S2

PC

מאגר דפדוף

זיכרון ראשי 2P

2

P

(swap_mapמונה השיתוף )

Page 14: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 14(c) 2003 ארז חדד

(3מטמון הדפים – דוגמה) בהמשך, מבוצע מעבר גם על הטבלאות שלS2 ושוב

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

)ומעדכנים מוני P עוברת להצביע על המגירה של S2הטבלה ב-1.שיתוף(

P!עדיין לא מפונה פיזית מהזיכרון

1

S1

S2

PC

מאגר דפדוף

זיכרון ראשי 3P

3

P

Page 15: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 15(c) 2003 ארז חדד

(4מטמון הדפים – דוגמה) מאוחר יותר, מתבצע פינוי פיזי של הדףP לאחר ,

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

mapping)מונה השיתוף ,המגירה מוצאת אף היא ממטמון הדפים )עדכון מונה השיתוף(3.

S1

S2

PC

מאגר דפדוף

זיכרון ראשי 4

2

P

Page 16: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 16(c) 2003 ארז חדד

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

של פינוי דף, ממרחב זיכרון אחד בכל פעם, תוך שמירה על תיאום בין מרחבי הזיכרון המשתמשים בדף.

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

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

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

()(find_get_pageהדפים )ע"י שימוש בפונקציה מצב זה נקראMinor Page Fault בדוגמה(2,3. )אפשרי בשלבים

הדף מפונה פיזית פעם אחת, ולמקום אחד בדיסק

Page 17: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 17(c) 2003 ארז חדד

מטמון הדפים – טעינת דף ,בטעינת דף מתבצעות הפעולות בסדר הפוך בקירוב

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

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

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

הדף נטען פעם אחת בלבד ולמסגרת אחת בלבד

Page 18: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 18(c) 2003 ארז חדד

Linuxפינוי דפים ב-:פינוי דפים מהזיכרון לדיסק הינו מנגנון בעל שלושה מרכיבים

דירוג דינמי של רמת הפעילות של כל דף במסגרת בזיכרון)שאינו שייך לגרעין(

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

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

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

משתמש: כאשר מאותרת כניסה השייכת לאזור זיכרון ומצביעה למסגרת הניתנת לפינוי ובעלת פעילות "נמוכה",

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

Page 19: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 19(c) 2003 ארז חדד

(1דירוג פעילות של דפים בזיכרון ) הגרעין מחזיק שתי רשימות מקושרות כפולות מעגליות

של רשומות מסגרות במטמון הדפים: active_list רשימת מסגרות הדפים ה"פעילים", כלומר –

דפים שניגשו אליהם "לאחרונה"inactive_list ,"רשימת מסגרות הדפים ה"לא-פעילים –

כלומר דפים שלא ניגשו אליהם "זמן מה"active_list, inactive_list הם שמות המשתנים הגלובליים המצביעים

mm/page_alloc.cלראשי הרשימות, המוגדרים בקובץ הגרעין הרשימות לא-חופפות, ורשומת כל מסגרת הניתנת לפינוי

מקושרת לאחת הרשימות מסגרות )הרשומות שלהן( מועברות בין הרשימות כפי שנראה

בהמשךמסגרת מוספת לרשימה דרך ראש הרשימה

Page 20: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 20(c) 2003 ארז חדד

(2דירוג פעילות של דפים בזיכרון )

הדגלPG_lru דולק ברשומת מסגרת הנמצאת באחת מהרשימות )לא מסגרת השייכת לגרעין, למשל(

הקישור של מסגרת לאחת הרשימות הוא באמצעות השדהlru ברשומת המסגרת

הדגלPG_active דולק רק בכל רשומת מסגרת השייכת active_listלרשימה

הדגלPG_referenced ברשומת מסגרת מציין שבוצעה גישה לדף במסגרת זו.

למסגרת להישאר ב-שתי הזדמנויותדגל זה משמש ליצירת active_list מתוך active_list למסגרת על-מנת להיכנס ל-שתי מדרגותאבל גם

.inactive_listה-

Page 21: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 21(c) 2003 ארז חדד

(3דירוג פעילות של דפים בזיכרון ) הפונקציהmark_page_accessed)(, מופעלת לציון גישה

למסגרת-מבצעת כדלקמן: אם המסגרת ב active_list או PG_referenced ,כבוי

PG_referenced. אחרת, מכבה את PG_referencedמדליקה את active_listומכניסה את המסגרת מחדש ל-

קובץ גרעיןmm/filemap.c

הפונקציהrefill_inactive)(, רק במקרה שיש צורך המופעלתinactive_list , מעדכנת את לפנות דפים

-עוברת על כל המסגרות ב active_list מסוף הרשימה )מסגרות ותיקות דלוק, מכבה אותו ומכניסה את המסגרת PG_referencedביותר(: אם

עם דגל inactive_list. אחרת, מעבירה את המסגרת ל-active_listמחדש ל-PG_referencedדולק

קובץ גרעיןmm/vmscan.c

Page 22: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 22(c) 2003 ארז חדד

(4דירוג פעילות של דפים בזיכרון )

-פינוי בפועל של דפים ממסגרות מבוצע החל מסוף רשימת הinactive_list "המסגרות הכי "לא פעילות

הפונקציהmark_page_accessed)(:מופעלת עבור דף כלשהו במקרים הבאים בכל פעם שהדף נטען מהדיסק בכל פעם שהגרעין סורק את טבלאות הדפים כדי לפנות דפים ומגלה שביט

accessed אז גם הביט( של הדף בטבלת הדפים דלוק accessed)מכובה הפונקציהrefill_inactive)( מופעלת כאשר יש צורך לפנות דפים, כפי שנראה

בהמשך-האלגוריתם המתקבל הוא קירוב לLFU: 3 הזדמנויות + ניהול מחסנית

PG_referenced=1PG_active=0

PG_referenced=0PG_active=1

PG_referenced=1PG_active=1

add_to_page_cache)(

refill_inactive)(

mark_page_accessed)(

PG_referenced=0PG_active=0

Page 23: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 23(c) 2003 ארז חדד

(1פינוי בפועל של זיכרון )-כפי שכבר הוזכר קודם, פינוי בפועל של מסגרות בLinux

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

"מוגדר סף "קריטיותthreshold) של כמות מינימלית של )מסגרות שחייבת להישאר פנויה.

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

פנויות.-כמו כן, זה מקטין את זמן הטיפול בpage fault שמצריך טעינת דף

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

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

thrashing.

Page 24: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 24(c) 2003 ארז חדד

(2פינוי בפועל של זיכרון ) מחזור מסגרותמנגנון הפינוי, הקרוי מנגנון( Page Frame

Reclaiming מופעל בקריאה לפונקציה ,)try_to_free_pages)( כל פונקציות פינוי המסגרות מוגדרות בקובץ הגרעיןmm/vmscan.c

הפעלת הפונקציהtry_to_free_pages)(:מבוצעת במקרים הבאים במקרה שחוט גרעין מיוחד, הקרויkswapd מגלה שכמות המסגרות הפנויות ,

קטנה/שווה לסף הנמוך. מאפשר לנצל זמן עם פעילות תהליכים נמוכה לפעולות פינוי הזיכרון, מה

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

kswapdמתבצעת הפעלה ישירה של הפונקציה או שמעירים את

הפונקציהtry_to_free_pages)( מנסה לפנות SWAP_CLUSTER_MAX )32(.מסגרות בזיכרון

Page 25: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 25(c) 2003 ארז חדד

(3פינוי בפועל של זיכרון ):הטקטיקה לשחרור מסגרות היא כדלקמן

מבוצעות מספר איטרציות של ניסיונות שחרור מסגרות:בכל איטרציה

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

-קוראים לrefill_inactive)( על-מנת להגדיל את inactive_listה-

-מבצעים סריקה של הinactive_list מהסוף )קריאה ( ובה:)(shrink_cacheל-

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

( mapping != NULL, count == 1) מסגרת המכילה דף מלוכלך, כלומר שעבר עדכון )דגל

PG_dirty.דולק(, נכתבת לדיסק לפני פינויה

Page 26: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 26(c) 2003 ארז חדד

(1פינוי דפים ממרחבי זיכרון )-אם במהלך סריקת המסגרות בinactive_list נספרות "יותר

מדי" )מעבר לסף מוגדר( מסגרות המסומנות בשימוש ע"י ( ו/או שאינן במטמון הדפים count > 1תהליכים )

(mapping == NULL מופסקת הסריקה ומופעלת הפונקציה ,)swap_out)(.לפינוי דפים ממרחבי זיכרון

הפונקציהswap_out)( מנסה לפנות דפים ממרחבי זיכרון הטעונים למסגרות.

:המטרה( להביא את המסגרות למצב פנוי count == 0 או )! count == 1, mappingשהן בשימוש מטמון הדפים בלבד )

= NULL"מסגרות "לפני שחרור – ) הפונקציה מסיימת אם היא מצליחה להביא

SWAP_CLUSTER_MAX מסגרות למצב הרצוי או אם היא סרקה מתארי זיכרון בכמות שהייתה כשהתחילה לרוץ.

Page 27: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 27(c) 2003 ארז חדד

(2פינוי דפים ממרחבי זיכרון )פעולת הפונקציה swap_out)( טבלאות היא לסרוק את כל

הממפות את כל אזורי הזיכרון בכל מרחבי הזיכרון הדפיםבמערכת )עד לכמות הנסרקת(, ולכל כניסה המצביעה

למסגרת בזיכרון, מבוצעות הפעולות הבאות )המוגדרות (:)(try_to_swap_outבפונקציה

אם הביטaccessed בכניסה בטבלה דלוק, קוראת עבור המסגרת, מכבה את )(mark_page_accessedל-

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

הבאים: אזור הזיכרון המכיל את הדף ניתן לפינוי )דגלVM_LOCKED

במתאר אזור הזיכרון כבוי(-המסגרת לא בactive_list דגל( PG_active)כבוי

Page 28: מערכות הפעלה

: Linux- – ניהול זיכרון ב13תרגול המשך 28(c) 2003 ארז חדד

(3פינוי דפים ממרחבי זיכרון ):אם הדף ניתן לפינוי, מתבצע כדלקמן

בכניסה בטבלת הדפים דלוק, מודלק דגל dirtyאם הדגל 1.PG_dirty ברשומת המסגרת לציון דף "מלוכלך" )מעודכן( שיש

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

)כפי שהוסבר קודם(: דלוק(, הדף צריך להתפנות לדיסק:PG_dirtyאם הדף "מלוכלך" )1.

:אם הדף לא במטמון הדפים, הוא מוכנס למטמון הדפים mapping, indexהקצאת מגירה אם ממופה אנונימי, עדכון

עדכון מוני שיתוף במסגרת ו)אם צריך( במגירה2.

NULLעדכון הכניסה בטבלת הדפים: מזהה מגירה למיפוי אנונימי, 3.למיפוי לקובץ

כבוי( ולכן PG_dirtyדף מיפוי אנונימי "קר" לא עודכן מעולם )2. לכניסה NULLמכיל אפסים בלבד. עבור דף כזה, מוכנס

בטבלת הדפים. כשדף זה יידרש שוב, יוחזר דף עם אפסים.