Professional Documents
Culture Documents
מערכות הפעלה הרצאה 12
מערכות הפעלה הרצאה 12
(aתנאי הכרחי ל DeadLockזה ,Hold & Waitאם אף אחד לא מחזיק כלום ,תנאי זה לא מתקיים
ומכיוון שזהו תנאי הכרחי ,לא מתקיים DeadLock
האלגוריתם הבנקאי:
האלגוריתם החיצוני
.1התהליך מבקש הקצאת משאב מהמערכת.
.2המערכת מסמלצת את ההקצאה.
.3המערכת בודקת האם המצב הנוצר בטוח -בעזרת האלגוריתם הפנימי.
.4אם כן ,ההקצאה מאושרת .אם לא ,לא.
האלגוריתם הפנימי
.1בחר תהליך מסויים שיכול לסיים .תן לו את כל המשאבים הדרושים
.2ברגע שמסיים -שחרר את כל המשאבים שלו.
.3סמן את התהליך כמי שסיים.
.4אם כולם סיימו אז המצב הוא בטוח
.5אם תהליך לא יכול לסיים ,המצב לא בטוח.
משאבים מרובים:
בדומה לאלגוריתם הפנימי (באמצעות וקטורים ומטריצות)
שחזור ( )Recovery
- preemtionלא ישים.
rollback
kill process
שורה תחתונה -קשה לשחזר מצב של ,deadlockעדיף להמנע.
Swapping
-לקחת את כל התהליך ולהוריד/להעלות אותו לזיכרון.
-זמן ההעברה גדול! הזמן פרופורציונלי לכמות הזכרון לו עושים swap
-יוצר חורים בזיכרון
-אין צורך להקצות swap spaceל deamons
-לא בשימוש יותר.
כדי למנוע חורים בזיכרון (שתהליך קטן נכנס למקום של תהליך גדול),
קיים תור בו מחפשים את התהליך הגדול ביותר בתור המתאים למקום שהתפנה.
הבעיה :יכול לגרום להרעבה של תהליכים קטנים.
פתרון" :קופה מהירה בסופר" נקצה זיכרון שמיועד לתהליכים קטנים.
- bitmapפשוט יותר אבל צריך להחזיק ביט עבור כל תא בזיכרון ,חיפוש מהיר יותר ,ויכולת
להחזיק יותר מידע
Dynamic Linking
שמירת פונקציות שמשתמשים בהם הרבה למשל כמו ,printfשאין צורך להרבה עותקים,
מחזיקים משהו קטן ,stubשמצביע על המיקום שלו בדיסק לשימוש חוזר .ככה אנחנו חוסכים
מקום עבור משהו שידוע שישתמשו בו הרבה.
אסטרטגיות
first fit -המקום הראשון שמצאתי.
next fit -במקום להתחיל כל פעם מהתחלה (יכול לקחת הרבה זמן עד שנמצא את הראשון),
נתחיל לחפש מהמקום האחרון.
best fit -נעבור על הכל ,ונחפש את המקום הכי קטן שמתאים.
חסרון - :עוברים על הכל
-יווצרו המון חורים קטנים שלא מתאימים לכלום (הכנסנו 3למקום של
)4
worst fit -כמו best fitרק גרוע יותר.
quick fit -מספר תורים המחזיקים אינדקסים לחורים בגדלים שונים .הבעיה :לוקח זיכרון ,מבנה
נתונים מסובך לאתחול.
Fragmentation
- External Fragmentationנוצרו לנו חורים ,קיים זיכרון לקיים את הבקשה ,אבל הוא לא רציף.
- Internal Fragmentationהקצנו יותר מידי לתהליך ולא משתמשים בכל הזכרון.
פתרונות:
-הזזת בלוקים
Compaction -
מחלקים את הזכרון לחלקים של .2עד שמוצאים חלק מספיק קטן שיכול לקיים את הבקשה.
ה 2שהתפצלו הם אלה שיתאחדו אחר כך מחדש כשיתפנו.
paging
שני סוגים:
-חלוקה לפי גדלים קבועים paging -
-חלוקה לפי נושאים -סגמנטים
page table