זיכרון וירטואלי – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מאין תקציר עריכה
שורה 3:
 
<!-- חסר כאן הסבר על קשיים בניהול זיכרון: מהיר, קטן ויקר מול גדול, זול ואיטי (ובכלל הייררכיית הזיכרון). מולטי-טאסקינג, -->
הרעיון של זיכרון וירטואלי הוא להוסיף עוד רמה של הפשטה בארגון הזיכרון. תהליך המנסה לגשת לזיכרון ב[[כתובת (זיכרון מחשב)|כתובת]] X (כתובת '''וירטואלית'''), ייגש בפועל לכתובת מתאימה Y (כתובת '''פיזית''') בזיכרון הראשי של המחשב, או לכתובת Z בזיכרון משני כלשהו, בדרך כלל [[כונןדיסק קשיח]], שהוא זול יותר, ואז המידע המבוקש יישלף משם ויועתק לזיכרון הראשי. תרגום הכתובות מתבצע במקרים רבים ב[[חומרה]].
 
ארבע מטרות מושגות בדרך זו:
*'''גודל''': גלגול האחריות על ניהול [[מדרג הזיכרון]] מהתוכנית אל מערכת ההפעלה. ההגבלה על גודל הזיכרון הזמין לתהליך איננה תלויה בגודל הזיכרון הראשי, שהוא מהיר אך יקר יחסית ולכן גם קטן, אלא בפרמטרים אחרים: גודל הכונןהדיסק הקשיח (שיכול להגיע לאלפי ג'יגה בייט), גודל המילה (word) במחשב - 32 או 64 ביט בדרך כלל - ושיטת הייצוג והתרגום של כתובות בזיכרון. אם תהליך דורש יותר זיכרון משמוקצה עבורו על הזיכרון הפיזי, יוקצה לו זיכרון על הדיסק. מידע יועבר בין הכונןהדיסק הקשיח לזיכרון הראשי לפי הצורך, תוך ניצול העובדה שאף תהליך לא משתמש ב'''כל''' הזיכרון שהוא ביקש, בכל רגע נתון. בדרך כלל פעולות בזיכרון הן מקומיות - כלומר, קבוצה של פעולות קרובות בזיכרון יתבצעו ככל הנראה בכתובות קרובות.
*'''רצף''': כאשר תהליך מבקש זיכרון רציף (עבור [[מערך (מבנה נתונים)|מערכים]], למשל), הוא יכול להתייחס לזיכרון וירטואלי רציף, ואין צורך למצוא בזיכרון הראשי רצף של כתובות שאינן בשימוש.
*'''בידוד''' בין תהליכים: אם שני תהליכים שאינם משתפים זיכרון מנסים שניהם לגשת לכתובת X, הם ניגשים בפועל לכתובות שונות, אלא אם כן מערכת הזיכרון הווירטואלי (על פי רוב, [[מערכת הפעלה|מערכת ההפעלה]]) מסיקה שאין בעיה בשיתוף של כתובות פיזיות - אם המידע הדרוש זהה, והגישה היא לקריאה בלבד, או שמדובר במידע שמשותף במפורש בין תהליכים.
*'''ניהול יעיל יותר של החומרה''': זיכרון RAM (על ידי הקטנת שברור), כונניםדיסקים קשיחים (על ידי איחוד גישות לסקטורים סמוכים), וזמן עיבוד (על ידי זימון תהליכים בהתאמה למידת הנגישות המיידית של המידע הדרוש להם).
 
== היסטוריה ==