במאמר זה נבין בפירוט את ניהול הזיכרון.
למה אתה מתכוון בניהול זיכרון?
זיכרון הוא החלק החשוב במחשב המשמש לאחסון הנתונים. ניהולו הוא קריטי למערכת המחשב מכיוון שכמות הזיכרון הראשי הזמינה במערכת מחשב מוגבלת מאוד. בכל עת, תהליכים רבים מתחרים על זה. יתרה מכך, כדי להגביר את הביצועים, מספר תהליכים מבוצעים בו זמנית. לשם כך עלינו לשמור מספר תהליכים בזיכרון הראשי, ולכן חשוב אפילו יותר לנהל אותם בצורה יעילה.
תפקיד ניהול זיכרון
להלן התפקידים החשובים של ניהול זיכרון במערכת מחשב:
- מנהל הזיכרון משמש למעקב אחר מצב מיקומי הזיכרון, בין אם הוא פנוי או מוקצה. היא נותנת מענה לזיכרון ראשוני על ידי אספקת הפשטות כך שתוכנה תופסת שמוקצה לה זיכרון גדול.
- מנהל הזיכרון מאפשר למחשבים עם כמות קטנה של זיכרון ראשי להפעיל תוכניות גדולות מהגודל או הכמות של הזיכרון הזמין. הוא עושה זאת על ידי הזזת מידע קדימה ואחורה בין זיכרון ראשוני לזיכרון משני על ידי שימוש במושג החלפה.
- מנהל הזיכרון אחראי על הגנה על הזיכרון שהוקצה לכל תהליך מפני פגיעה בתהליך אחר. אם זה לא מובטח, המערכת עלולה להפגין התנהגות בלתי צפויה.
- מנהלי זיכרון צריכים לאפשר שיתוף של שטח זיכרון בין תהליכים. לפיכך, שתי תוכניות יכולות לשהות באותו מיקום זיכרון אם כי בזמנים שונים.
טכניקות ניהול זיכרון:
ניתן לסווג את טכניקות ניהול הזיכרון לקטגוריות עיקריות הבאות:
- תוכניות ניהול זיכרון רציפות
- תוכניות ניהול זיכרון לא רציפות
תוכניות ניהול זיכרון רציפות:
בסכימת ניהול זיכרון רציף, כל תוכנית תופסת בלוק רציף אחד של מיקומי אחסון, כלומר קבוצה של מיקומי זיכרון עם כתובות עוקבות.
ערכות ניהול זיכרון רציף בודדות:
ערכת ניהול הזיכרון הרציף האחת היא ערכת ניהול הזיכרון הפשוטה ביותר בשימוש בדור המוקדם ביותר של מערכות מחשב. בתכנית זו, הזיכרון הראשי מחולק לשני אזורים או מחיצות רציפים. מערכות ההפעלה שוכנות באופן קבוע במחיצה אחת, בדרך כלל בזיכרון התחתון, ותהליך המשתמש נטען למחיצה השנייה.
היתרונות של סכימות ניהול זיכרון רציף יחיד:
- פשוט ליישום.
- קל לניהול ועיצוב.
- בסכימת ניהול זיכרון רציף יחיד, ברגע שתהליך נטען, ניתן לו זמן מלא של המעבד, ואף מעבד אחר לא יפריע לו.
החסרונות של סכימות ניהול זיכרון רציף יחיד:
- בזבוז של שטח זיכרון עקב זיכרון שלא נעשה בו שימוש, מכיוון שהתהליך לא ישתמש בכל שטח הזיכרון הפנוי.
- ה-CPU נשאר פעיל, ממתין שהדיסק יטען את התמונה הבינארית לזיכרון הראשי.
- לא ניתן להפעיל אותו אם התוכנית גדולה מדי כדי להתאים לכל שטח הזיכרון הראשי הזמין.
- זה לא תומך בריבוי תכנות, כלומר, הוא לא יכול לטפל במספר תוכניות בו זמנית.
חלוקה מרובה:
סכימת ניהול הזיכרון הרציף הבודדת אינה יעילה מכיוון שהיא מגבילה מחשבים להפעיל רק תוכנית אחת בכל פעם וכתוצאה מכך לבזבוז בשטח הזיכרון ובזמן המעבד. ניתן להתגבר על הבעיה של שימוש לא יעיל במעבד באמצעות ריבוי תכנות המאפשר ליותר מתוכנית אחת לפעול במקביל. כדי לעבור בין שני תהליכים, מערכות ההפעלה צריכות לטעון את שני התהליכים לזיכרון הראשי. מערכת ההפעלה צריכה לחלק את הזיכרון הראשי הזמין למספר חלקים כדי לטעון מספר תהליכים לזיכרון הראשי. לפיכך מספר תהליכים יכולים להתגורר בזיכרון הראשי בו זמנית.
סכימות החלוקה המרובות יכולות להיות משני סוגים:
- חלוקה קבועה
- חלוקה דינמית
חלוקה קבועה
הזיכרון הראשי מחולק למספר מחיצות בגודל קבוע בסכימת ניהול זיכרון מחיצה קבועה או חלוקה סטטית. מחיצות אלו יכולות להיות באותו גודל או בגדלים שונים. כל מחיצה יכולה להחזיק תהליך בודד. מספר המחיצות קובע את מידת התכנות הרב-תכנות, כלומר, המספר המרבי של תהליכים בזיכרון. מחיצות אלה נעשות בזמן יצירת המערכת ונשארות קבועות לאחר מכן.
היתרונות של סכימות ניהול זיכרון של חלוקה קבועה למחיצות:
- פשוט ליישום.
- קל לניהול ועיצוב.
החסרונות של סכימות ניהול זיכרון של חלוקה קבועה למחיצות:
- תכנית זו סובלת מפיצול פנימי.
- מספר המחיצות מצוין בזמן יצירת המערכת.
חלוקה דינמית
החלוקה הדינמית תוכננה כדי להתגבר על הבעיות של ערכת חלוקה קבועה. בסכימת חלוקה דינמית, כל תהליך תופס רק את כמות הזיכרון הנדרשת כאשר הוא נטען לעיבוד. לתהליכים המבוקשים מוקצה זיכרון עד למיצוי כל הזיכרון הפיזי או שהשטח הנותר אינו מספיק כדי להחזיק את תהליך הבקשה. בסכימה זו המחיצות בהן נעשה שימוש הן בגודל משתנה, ומספר המחיצות אינו מוגדר בזמן יצירת המערכת.
היתרונות של סכימות ניהול זיכרון של חלוקה דינמית למחיצות:
- פשוט ליישום.
- קל לניהול ועיצוב.
החסרונות של סכימות ניהול זיכרון של חלוקה דינמית למחיצות:
- תכנית זו סובלת גם מפיצול פנימי.
- מספר המחיצות מצוין בזמן פילוח המערכת.
סכימות ניהול זיכרון לא רציף:
בסכימת ניהול זיכרון Non-Contiguous, התוכנית מחולקת לבלוקים שונים ונטענת בחלקים שונים של הזיכרון שאינם בהכרח צריכים להיות צמודים זה לזה. ניתן לסווג סכימה זו בהתאם לגודל הבלוקים והאם הבלוקים נמצאים בזיכרון הראשי או לא.
מה זה החלפה?
החלפה היא טכניקה המבטלת את הדרישות של הקצאה רציפה של זיכרון ראשי. בכך, הזיכרון הראשי מחולק לבלוקים בגודל קבוע של זיכרון פיזי הנקרא פריימים. יש לשמור על גודל מסגרת זהה לזה של עמוד כדי למקסם את הזיכרון הראשי ולהימנע מפיצול חיצוני.
יתרונות ההחלפה:
- דפים מפחיתים פיצול חיצוני.
- פשוט ליישום.
- זיכרון יעיל.
- בשל הגודל השווה של מסגרות, ההחלפה הופכת קלה מאוד.
- הוא משמש לגישה מהירה יותר לנתונים.
מה זה פילוח?
פילוח היא טכניקה המבטלת את הדרישות של הקצאה רציפה של זיכרון ראשי. בכך, הזיכרון הראשי מחולק לבלוקים בגודל משתנה של זיכרון פיזי הנקראים מקטעים. זה מבוסס על הדרך שבה מתכנת עוקב כדי לבנות את התוכניות שלו. עם הקצאת זיכרון מפולח, כל עבודה מחולקת למספר מקטעים בגדלים שונים, אחד עבור כל מודול. פונקציות, תתי שגרות, מחסנית, מערך וכו', הן דוגמאות למודולים כאלה.