|
02-11-2004, 18:25
|
|
|
|
חבר מתאריך: 21.03.03
הודעות: 12,004
|
|
על זיכרון וירטואלי swap ו-paging......
מדריך נכתב ע"י fat fish
טוב, ממספר תגובות פה, אני רואה שצריך להרחיב קצת על הנושא. נתחיל בהגדרת מושגים:
ram - זיכרון לגישה אקראית, הזיכרון הפיזי של המחשב (לרוב משתמשים מתבלבים עם הכונן הקשיח "יש לי 80GB זיכרון, לא יכול להיות שאין לי מספיק להפעיל את ה-X הזה...." )
זיכרון וירטואלי - זיכרון משלים המוגדר "וירטואלית" על הכונן הקשיח.
swap (שיחלוף) - תהליך העברת מידע מהזכרון הפיזי לוירטואלי ולהפך, תהליך זה מכונה גם paging.
קובץ swap (קובץ paging או pagefile וכו) - הקובץ בו מאוחסן הזיכרון הוירטואלי.
לסיכום המושגים רק הערה:
swap - השם של התהליך והקובץ בwindows 9x
page - השם והתהליך (paging) ב-winNT (וכמובן 20000,XP וגם מכאן ואילך)
מטרות הזיכרון הוירטואלי
הזיכרון הוירטואלי קיים על מנת לספק לנו תוספת זיכרון לזיכרון ה-ram הקיים במחשב למטרת עבודה תקינה של מערכת ההפעלה.
למה בכלל אנו זקוקים לו?
זיכרון ה-ram מעבר להיותו יקר הינו משאב מוגבל במחשב (הממוצע עומד על 128MB כשהממוצע עולה לאט עם השנים), מטרת ה-ram היא להחזיק את התוכניות הנטענות ולשמש את המעבד לביצוע פעולותיו.
למעבד עצמו יש זיכרון, הנקרא "זיכרון מטמון", זיכרון זה נועד למעבד לביצוע פעולות ברמה המיידית, אך הוא מוגבל (מאוד) ולכן המעבד ישתמש בזכרון הראשי כמשטח העבודה שלו.
נחזור לשאלה, למה צריך זיכרון וירטואלי - התשובה מאוד פשוטה, כי כמעט תמיד אין מספיק מקום בזיכרון ה-ram.
עכשיו למה אין מספיק מקום?
בואו נבדוק ביחד....
תוכנת המסרים שלכם טעונה?!
מה לגבי הקאזה/אימיול/סולסיק או מה שאתם משתמשים להעברת קבצים?
חיבור לאינטרנט יש? גם הוא תופס מקום, גם האתר שאתם צופים בו (ובטח פתוח אצלכם יותר מדף אחד בדפדפן)
טוב הבנתם את הרעיון, אבל לא דיברנו על הדבר הכי חשוב, כל התוכנות הללו הן "עסק קטן" בלבד מסך הזיכרון שנתפס אצלכם, לא דיברנו על הצרכן הגדול והחשוב ביותר:
מערכת ההפעלה עצמה!!!!
לרוב, חוץ מבמקרים חריגים (פתוחות אלפי משימות, אתה עורך גרפי או וידאו עם avid/photoshop, וירוסים או שאתה סתם אוהב למלא את הזיכרון בזבל) מערכת ההפעלה היא הצרכן הגדול ביותר של זיכרון. מערכת ההפעלה מפעילה עשרות (לפעמים גם מאות או אלפים) של תהליכים שונים לעבודתה, והיא תופסת המון זיכרון.
על מנת לספק את צורכי הזיכרון של מערכת ההפעלה, יש לנו בנוסף לזיכרון הראשי, גם זיכרון וירטואלי!!!!
קצת על מגבלת הזיכרון: מאז דור מעבדי 386 והלאה (INTEL), גודל המילה המטופלת ע"י המעבד היה 32bit, כלומר המעבד יכול לטפל במידע באורך של 32 סימני 1 ו-0.
מאחר שזהו קו המידע של המעבד, המגבלות לשימוש בזכרון הינם גודל זה, שהוא (תרגום בינארי לדצימלי) 2 בחזקת 32 שזה 4GB זיכרון!
מה שמה מערכת ההפעלה בכל סוג של זיכרון?
The Non-Paged area (לא הצלחתי לחשוב איך לכתוב את המושג הזה בעברית) זהו המידע שלעולם לא יכתב לזיכרון הוירטואלי.
זהו החלק של המערכת (הפעלה, אלא מה) שהוא כ"כ חשוב, שהם לעולם לא נכתבים לזיכרון הוירטואלי, האזור ב-ram המוקדש לרכיבים אלו, נקרא ב-XP בשם ‘Non-Paged area’. אזור זה מכיל בעיקר את קוד הליבה. (דרך אגב, אזור זה הוא כמעט נטול לחלוטין של שגיאות קוד, לכן אם קיבלתם מסך כחול ב-XP/2000, ובהודעת השגיאה כתוב Page Fault in Non-Paged area, אזי כמעט בוודאות יש לכם בעיית חומרה, בזיכרון).
The Page Pool המידע שנכתב לזיכרון הוירטואלי
חלק זה יכול להכיל: קוד של תכניות, דפי מידע (data page) שנכתב אליהם מידע ומקום נוסף לביצוע cache לזיכרון...
נסכם את זה ככה, שלמעשה הדבר היחיד שנמצא כרגע ב-ram ולא בזיכרון הוירטואלי הוא ה-The Non-Paged area וכל מידע שכרגע אקטיבי!!
תהליך השחלוף
תהליך זה, הינו תהליך העברת מידע בין הזיכרון הוירטואלי וזיכרון ה-ram.
למעשה, תהליך "הקריאה" מהזיכרון.
עכשיו מאחר שגישה ל-HD איטית בממוצע פי מליון מגישה ל-ram, אזי דבר זה מאט את המחשב.
המטרה של ביטול ה-paging file הוא להמנע מתהליך הכתיבה לכונן הקשיח ועל ידי כך להאיץ את פעלת המחשב. הסכנה באופציה זו היא שעלול להווצר מצב בו אין די זיכרון, אך בדרך כלל מבצע את זה מי שיש לו מספיק זיכרון.
הסכנה השנייה הטמונה בביטול קובץ זה, הוא קוד שגוי שעלול "להפיל" את הזיכרון.
המלצה, היכן צריך להיות הקובץ?!
על פי microsoft, וכן על פי מאמרים זרים - מומלץ לשים את קובץ ההחלפה על כונן נפרד! אם יש. זהו המצב האופטימלי.
מאחר שעייפתי מלכתוב, הנה ההסבר המלומד באנגלית (נמאס לי לתרגם)
Should the file be left on Drive C:?
The slowest aspect of getting at a file on a hard disk is in head movement (‘seeking’. If you have only one physical drive then the file is best left where the heads are most likely to be, so where most activity is going on — on drive C:. If you have a second physical drive, it is in principle better to put the file there, because it is then less likely that the heads will have moved away from it. If, though, you have a modern large size of RAM, actual traffic on the file is likely to be low, even if programs are rolled out to it, inactive, so the point becomes an academic one. If you do put the file elsewhere, you should leave a small amount on C: — an initial size of 2MB with a Maximum of 50 is suitable — so it can be used in emergency. Without this, the system is inclined to ignore the settings and either have no page file at all (and complain) or make a very large one indeed on C: NOTE: If you are debugging crashes and wish the error reporting to make a kernel or full dump, then you will need an initial size set on C: of either 200 MB (for a kernel dump) or the size of RAM (for a full memory dump). If you are not doing so, it is best to make the setting to no more than a ‘Small Dump’, at Control Panel | System | Advanced , click Settings in the ‘Startup and Recovery’ section, and select in the ‘Write Debug information to’ panel
האם לבטל את הזיכרון הוירטואלי?!
אי אפשר לבטל את הזיכרון הוירטואלי, מה שכן אפשר לבטל זה את השימוש בקובץ ההחלפה (page file)!
החיסרון הוא בזבוז עצום של RAM - כאשר תכנה מבקשת הקצאת זיכרון וירטואלי, היא עשוייה לבקש כמות גדולה של זיכרון מאשר מה שהיא באמת הולכת להשתמש (מעין "הכנה" לכל מצב שלא יבוא) - וסה"כ עשוי להגיע למאות של מגה-בייטים. הקצאת הזיכרון הזו צריכה להעשות ממקום כלשהו, ומערכת ההפעלה עושה זאת בד"כ עם קובץ ההחלפה. באם לא קיים קובץ כזה, אזי יוקצה זיכרון לשטח זה מתוך ה-RAM, והשטח יהיה נעול לשימוש תוכנה זו בלבד ולא ישמש שום תכנה אחרת גם יהיה "פנוי".
צריך לשקול את ההשלכות של ביטול קובץ ההחלפה!!!
בקיצור, מקווה שעניתי להרבה שאלות שנשאלו בנושא זה, מידע רב ונוסף ניתן למצא בלי סוף ברחבי הרשת...
רק משהו קטן, במאמר השתמשתי בשם ram לתיאור הזיכרון הפיזי הנמצא ברכיבי זיכרון של המחשב!
מערכת ההפעלה מתייחסת ל-RAM כזיכרון זה (הפיזי) והוירטואלי (זה על הדיסק) ביחד !!!!!
_____________________________________
|
|