הורידו את כלי העזר שלנו

ניהול זיכרון

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

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

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

בכמה מערכות הפעלה, כמו OS/360 לדוגמה, זיכרון מנוהל על ידי מערכת ההפעלה. במערכות הפעלה אחרות, לדוגמה דמויות יוניקס, הזיכרון מנוהל ברמת האפליקציה.[1]

גלה עוד נושאים הקשורים לניהול זיכרון

זיכרון גישה אקראית

זיכרון גישה אקראית

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

הקצאת זיכרון דינמית

הקצאת זיכרון דינמית

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

תהליך (מדעי המחשב)

תהליך (מדעי המחשב)

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

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

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

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

דפדוף (זיכרון)

דפדוף (זיכרון)

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

מערכת הפעלה

מערכת הפעלה

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

OS/360

OS/360

OS/360 היא מערכת הפעלה, שהוכרזה על ידי חברת IBM בשנת 1964. מערכת ההפעלה פותחה עבור מחשבי המיינפריים מסדרת IBM System/360 של החברה. המערכת תמכה בעיקר בעיבודי אצווה. מערכת הפעלה זו יועדה למערכות גדולות יחסית ומרובות עבודות. ממערכת זו התפתחו מערכות הפעלה, כגון: MFT, MVT, SVS ומערכות ההפעלה OS/390, MVS והמערכת העכשווית z/OS. מערכת הפעלה הנוספת שפותחה לאותה סביבת חומרה הייתה DOS/360' שיועדה לארגונים קטנים יותר. מ DOS/360 התפתחה המערכת העכשווית z/VSE.

מערכת הפעלה דמוית יוניקס

מערכת הפעלה דמוית יוניקס

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

ניהול זיכרון ידני

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

אילוסטרציה לבעיית הקיטוע חיצוני

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

ניהול הזיכרון חייב לכלול ולעקוב אחר בקשות הקצאה, כדי להבטיח שהם לא יחפפו ושלא יאבד זיכרון לאף תהליך/אפליקציה (בעצם, שלא יהיו דליפות זיכרון).

יעילות

אלגוריתם הקצאת הזיכרון הדינאמי יכול להשפיע משמעותית על ביצועי המערכת. מחקר שנערך ב-1994 על ידי DEC מדגים את התקורה הכרוכה במגוון אלגוריתמי הקצאה. הממוצע הנמוך ביותר של מספר פקודות המכונה הדרוש (Instruction path length) כדי להקצות משבצת זיכרון בודדת הוא 52, כפי שנמדד בעזרת profiler (מנגנון אנליזת תוכנה דינמי), אשר בחן מגוון תוכנות.

מימושים

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

הקצאת בלוקים בגודל קבוע

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

בלוק חבר

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

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

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

הקצאת אריח (מטמון)

כאשר טיפוס וגודל האובייקטים שאותם רוצים להקצות ידועים מראש, ניתן להשתמש במנגנון ה-slab (אריחים). בשיטה זו מקצים מראש "מטמונים", המכילים מספר רב של אריחים פנויים, כאשר כל אריח הוא בדיוק בגודל האובייקטים המבוקשים. בניית אובייקט כלשהו תקצה לעצמה אריח פנוי כלשהו מתוך המטמון ואילו מחיקה של אובייקט תוסיף את האריח שהיה בשימוש בחזרה למטמון. אלגוריתם ניהול הזיכרון צריך לבצע מעקב אחר רשימת המשבצות/החריצים הפנויים במטמון. שיטת ניהול זיכרון זו פותרת את בעיית הפרגמנטציה מכיוון שכל אריח ברשימה הוא בדיוק בגודל המתאים.

הקצאה על המחסנית

בהרבה מערכות דמויות יוניקס וגם בחלונות של Microsoft מממשים פונקציה הנקראת alloca, עבור הקצאת זיכרון מחסנית דינאמי, בצורה הדומה מאוד לפונקציה malloc של שפת C המיועדת להקצאה על הערימה (heap). המהדר, באופן טיפוסי, יתרגם זאת לפקודות אינליין אשר מבצעות מניפולציות במצביע המחסנית.

על אף שאין צורך בשחרור ידני של זיכרון המוקצה באופן זה, מכיוון שהוא משוחרר באופן אוטומטי כאשר הפונקציה שקראה לalloca "חוזרת", קיים סיכון של גלישת חוצץ (Buffer overflow). מכיוון שalloca היא פונקציית הרחבה נפוצה יחסית לניהול הזיכרון במחסנית וקיימת במערכות רבות (אך לא ב-POSIX או בשפת C), ההתנהגות שלה במקרה של גלישת חוצץ אינה מוגדרת.

גרסה בטוחה יותר של alloca הנקראת malloca_, אשר מדווחת על שגיאות, קיימת ב-Microsoft Windows. היא דורשת את השימוש בfreea_. גם gnulib מאפשרת ממשק שקול ובמקום לזרוק חריגה (פסיקת) SEH לגבי גלישת חוצץ, הוא מפקיד/מאציל את הקצאת הזיכרון לפונקציית הערימה malloc כאשר הספרייה נתקלת בגודל הקצאה גדול מהיכולת.

אפשר להתחקות אחר תכונה זו באופן דומה על ידי ביצוע חשבון ידני ובדיקת גודל, כמו שימושים בalloca_account ב-glibc.

גלה עוד נושאים הקשורים לניהול זיכרון ידני

מקטעי זיכרון

מקטעי זיכרון

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

קיטוע

קיטוע

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

דליפת זיכרון

דליפת זיכרון

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

DEC

DEC

DEC הייתה חברת מחשבים שנוסדה בשנות ה-60 של המאה ה-20. ייצרה מיני מחשבים מסוג PDP, ובהמשך מחשבים מסוג VAX ושרתי Alpha. בנוסף למחשבים, ייצרה גם מוצרי תוכנה תשתיתיים עבור המחשבים שייצרה. בשיאה, הייתה חברת המחשוב השנייה בגודלה, אחרי חברת IBM. באמצע שנות ה-90 עברה משבר, שהסתיים ברכישתה על ידי חברת קומפק בשנת 1998. חברת קומפק נרכשה מאוחר יותר על ידי חברת היולט פקארד, שהמשיכה במכירת מוצרים שמקורם במוצרים של DEC.

מצביע

מצביע

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

ליבה (מערכות הפעלה)

ליבה (מערכות הפעלה)

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

מערכת משובצת מחשב

מערכת משובצת מחשב

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

משחק וידאו

משחק וידאו

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

עץ חיפוש

עץ חיפוש

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

Microsoft Windows

Microsoft Windows

Windows היא מערכת הפעלה שיצאה לשוק לראשונה בשנת 1985 על ידי חברת מיקרוסופט ופועלת כיום על מחשבים אישיים ושרתים בעלי מעבד ממשפחת x86 או ARM, או שרתים מבוססי איטניום. מערכת ההפעלה Windows התבססה, במקור, על מערכת ההפעלה DOS של אותה חברה. במהלך השנים הפכה המערכת לפופולרית.

C (שפת תכנות)

C (שפת תכנות)

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

גלישת חוצץ

גלישת חוצץ

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

ניהול זיכרון אוטומטי

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

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

שיטת איסוף זבל

ערך מורחב – איסוף זבל (מדעי המחשב)

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

גלה עוד נושאים הקשורים לניהול זיכרון אוטומטי

ג'אווה (שפת תכנות)

ג'אווה (שפת תכנות)

ג'אווה היא שפת תכנות מונחית עצמים אשר פותחה בחברת סאן מיקרוסיסטמס על ידי צוות בראשות ג'יימס גוסלינג בשנת 1991, והיא אחת משפות התכנות הנפוצות ביותר הנמצאות בשימוש כיום. השפה הוצגה לראשונה בשנת 1995, והיא מהווה את אחד מרכיבי הליבה של פלטפורמת התוכנה ג'אווה.

שגרה (תכנות)

שגרה (תכנות)

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

מחסנית קריאות

מחסנית קריאות

במדעי המחשב, מחסנית קריאות היא מבנה נתונים מסוג מחסנית, המשמש לאחסון מידע אודות השגרות הפעילות של תוכנית מחשב. סוג זה של מחסנית נקרא גם execution stack, control stack, run-time stack או machine stack, ובדרך כלל קוראים לה בקיצור פשוט "המחסנית". אף על פי שתחזוקת מחסנית הקריאות חשובה לתפקודן התקין של מרבית התוכנות, לרוב בשפות תכנות עיליות הטיפול בה מבוצע אוטומטית ופרטיה מוסתרים מהמתכנת.

רקורסיה

רקורסיה

רֵקוּרְסִיָּה היא תופעה שכל מופע שלה מכיל מופע נוסף שלה, כך שהיא מתרחשת ומשתקפת בשלמותה בתוך עצמה שוב ושוב.

איסוף זבל (מדעי המחשב)

איסוף זבל (מדעי המחשב)

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

באג

באג

בָּאג הוא כשל טכני במערכת מבוססת תוכנה, שמתנהגת בצורה שגויה, לא צפויה או שאיננה מתוכננת.

מערכות עם זיכרון וירטואלי

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

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

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

ניהול זיכרון במערכות OS/360 ובמערכות מבוססות בהמשך

מערכת IBM/360 לא תומכת בזיכרון וירטואלי. בידוד זיכרון בין תהליכים מושג לעיתים בעזרת שימוש במפתחות הגנה, המקצים מקום אחסון ומפתח שונה עבור כל תהליך, כאשר המקום 0 מוקצה לתהליך המשגיח על המערכת ולשאר התהליכים נשארים המפתחות 1–15. התהליך המשגיח הוא האחראי על ניהול הזיכרון של כל שאר התהליכים במערכת. תהליך יכול לבקש זיכרון בעזרת שימוש במאקרו GETMAIN, ולשחרר אותו בעזרת שימוש במאקרו FREEMAIN. אלו מביאים לקריאה לתהליך המשגיח (SVC) אשר מבצע את הפעולה. פרטי המימוש המדויקים משתנים כתלות באופן יצירת המערכת, למשל PCP, MFT, MVT (כולן מערכות מבוססות OS/360).

במערכת OS/360 MVT, הקצאת משנה בתוך אזור תהליך או אזור תור המערכת (SQA) מבוססת על בריכות משניות, אזורים שהם מכפלות של 2KB בגודלן – גודל אזור בריכת משנה המוגן על ידי מפתח הגנה. בריכות משנה ממוספרות מ-0 עד 255. בתוך אזור, לבריכות משנה מוקצת הגנת האחסון של התהליך או המפתח של המשגיח, מפתח 0. בריכות משנה 0–127 מקבלות את מפתח ההגנה של התהליך. בתחילה, רק בריכת משנה אפס נוצרת, וכל בקשות אחסון על ידי המשתמש נענות על ידי בריכת משנה 0, אלא אם כן מצוין מספר בריכת משנה אחרת בבקשת הזיכרון. בריכות משנה 250–255 נוצרות בעזרת בקשות זיכרון על ידי המשגיח אך מטעם התהליך. לרוב הבקשות הללו מוקצה מפתח 0, על אף שחלק מקבלות את המפתח של התהליך. מספרי בריכות המשנה רלוונטיות גם בMFT, אך שם הפרטים הרבה יותר פשוטים. MFT משתמש במחיצות קבועות אשר ניתנות להגדרה מחדש על ידי המפעיל, במקום אזורים דינמיים, ולPCP יש בכלל רק מחיצה אחת.

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

הפרטים במימוש של OS/SV1 דומים לאלו של MFT ושל MVT; הפרטים עבור OS/VS2 זהים לאלו של MFT, מלבד העובדה שגודל דף זיכרון הוא 4KB. עבור OS/VS1 וגם עבור OS/VS2 אזור תור המערכת המשותף (SQA) לא ניתן לחלוקה לדפי זיכרון.

ב-MVS, מרחב הכתובות כולל אזור משותף נוסף אשר ניתן חלוקה לדפי זיכרון, אשר נקרא אזור האחסון המשותף (CSA), וכן אזור פרטי נוסף, אזור התהליך של המערכת (SWA). כמו כן, מפתחות הזיכרון 0–7 כולם שמורים לשימוש של קוד בעל הרשאות גבוהות.

מקור: "ניהול זיכרון", ויקיפדיה האנציקלופדיה החופשית, (2023, March 12th), https://he.wikipedia.org/wiki/ניהול_זיכרון.

נהנים מ Wikiz?

נהנים מ Wikiz?

הורידו את הפלאגין החינמי שלנו!

קישורים חיצוניים
ויקישיתוף מדיה וקבצים בנושא ניהול זיכרון בוויקישיתוף
הערות שוליים
  1. ^ Silberschatz, Abraham (2011). Operating system concepts essentials. Peter B. Galvin, Greg Gagne. Hoboken, NJ: Wiley & Sons. ISBN 0-470-88920-9. OCLC 744652838.

The content of this page is based on the Wikipedia article written by contributors..
The text is available under the Creative Commons Attribution-ShareAlike Licence & the media files are available under their respective licenses; additional terms may apply.
By using this site, you agree to the Terms of Use & Privacy Policy.
Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization & is not affiliated to WikiZ.com.