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

תוכן שנמחק תוכן שנוסף
Sivans~hewiki (שיחה | תרומות)
אין תקציר עריכה
הרחבה, עריכה
שורה 1:
[[תמונה:Virtualmem.png|שמאל|ממוזער|250px|דפי הזיכרון הווירטואלי נמצאים חלקם בזיכרון ראשוני וחלקם בזיכרון משני]]
'''זיכרון וירטואלי''' (ב[[אנגלית]]: Virtual Memory) הוא טכניקה לניהול והקצאה של [[זיכרון מחשב|זיכרון המחשב]], כךהמסתירה שלמעשהאת משמשהזיכרון אתהפיזי התוכניותשל הפועלותהמחשב בוומדמה זיכרון גדולרציף במידהוגדול, ניכרתומפרידה מהזיכרוןבין הפיזיניהול המותקןהזיכרון במחשבשל תהליכים שונים. כל אחת מה[[תוכנית מחשב|תוכניות]] המתבצעות פועלת כאילו עומד לרשותה מרחב זיכרון בגודל שהיא זקוקה לו, בלירציף, תלותוללא בגודלוהפרעות שלמתהליכים הזיכרון(לא הפיזימוזמנים) אחרים.
 
<!-- חסר כאן הסבר על קשיים בניהול זיכרון: מהיר, קטן ויקר מול גדול, זול ואיטי (ובכלל הייררכיית הזיכרון). מולטי-טאסקינג, -->
בסיסו של הזיכרון הווירטואלי בעובדה שגם תוכנית הזקוקה לזיכרון רב, אינה זקוקה לכולו בבת אחת, אלא משתמשת בזמן נתון רק בחלק מהזיכרון הכולל שהיא צורכת, ולכן די בהחזקתו של חלק זה בלבד בזיכרון הפנימי, עם אפשרות להחלפתו לפי הצורך, בלי שהחלפה זו תפגע משמעותית בביצועי המחשב.
הרעיון של זיכרון וירטואלי הוא להוסיף עוד רמה של עקיפות בגישה לזיכרון. תהליך המנסה לגשת לזיכרון בכתובת X (כתובת '''וירטואלית'''), ייגש בפועל לכתובת מתאימה Y (כתובת '''פיזית''') בזיכרון הראשי של המחשב, או לכתובת Z בזיכרון משני כלשהו, בדרך כלל [[כונן קשיח]], שהוא זול יותר, ואז המידע המבוקש יישלף משם ויועתק לזיכרון הראשי. תרגום הכתובות מתבצע במקרים רבים ב[[חומרה]].
 
ארבע מטרות מושגות בדרך זו:
*'''גודל''': גלגול האחריות על ניהול היררכיית הזיכרון מהתכנית אל מערכת ההפעלה. ההגבלה על גודל הזיכרון הזמין לתהליך איננה תלויה בגודל הזיכרון הראשי, שהוא מהיר אך יקר יחסית ולכן גם קטן, אלא בפרמטרים אחרים: גודל הכונן הקשיח (שיכול להגיע לאלפי ג'יגה בייט), גודל המילה (word) במחשב - 32 או 64 ביט בדרך כלל - ושיטת הייצוג והתרגום של כתובות בזיכרון. אם תהליך דורש יותר זיכרון משמוקצה עבורו על הזיכרון הפיזי, יוקצה לו זיכרון על הדיסק. מידע יועבר בין הכונן הקשיח לזיכרון הראשי לפי הצורך, תוך ניצול העובדה שאף תהליך לא משתמש ב'''כל''' הזיכרון שהוא ביקש, בכל רגע נתון. בדרך כלל פעולות בזיכרון הן מקומיות - כלומר, קבוצה של פעולות קרובות בזיכרון יתבצעו ככל הנראה בכתובות קרובות.
*'''רצף'''. כאשר תהליך מבקש זיכרון רציף (עבור [[מערך (מבנה נתונים)|מערכים]], למשל), הוא יכול להתייחס לזיכרון וירטואלי רציף, ואין צורך למצוא בזיכרון הראשי רצף של כתובות שאינן בשימוש.
*'''בידוד''' בין תהליכים. אם שני תהליכים שאינם משתפים זיכרון מנסים שניהם לגשת לכתובת X, הם ניגשים בפועל לכתובות שונות, אלא אם כן מערכת הזיכרון הוירטואלי (על פי רוב, [[מערכת הפעלה|מערכת ההפעלה]]) מסיקה שאין בעיה בשיתוף של כתובות פיזיות - אם המידע הדרוש זהה, והגישה היא לקריאה בלבד, או שמדובר במידע שמשותף במפורש בין תהליכים.
*ניהול יעיל יותר של החומרה - זיכרון RAM (על ידי הקטנת שברור), כוננים קשיחים (על ידי איחוד גישות לסקטורים סמוכים), וזמן עיבוד (על ידי זימון תהליכים בהתאמה למידת הנגישות המיידית של המידע הדרוש להם).
 
== היסטוריה ==
[[ארכיטקטורת פון נוימן]] היא מודל שהציע ב[[שנות ה-40 של המאה ה-20]] ה[[מתמטיקאי]] [[ג'ון פון נוימן]] למבנהו של ה[[מחשב]]. במודל זה, זיכרון המחשב משמש הן לאחסון ה[[תוכנית מחשב|תוכנית]] והן לאחסון הנתונים שתוכנית זו קוראת או כותבת בעת ביצועה על ידי ה[[מעבד]]. מרבית המחשבים בנויים על־פי מודל זה. במימוש המקובל של ארכיטקטורה זו, זיכרון המחשב הוא [[זיכרון גישה אקראית]] (RAM).