ניהול הRAM החדש בויסטה (או: מי זולל לי את הRAM?)
במהלך שיחה עם גיא בורשטיין במסנג'ר, הועלה נושא ניהול זיכרון הRAM (ר"ת - Randomize Access Memory) ב Windows Vista.
אחד מהדברים שעברו שיפור משמעותי בכל מה שקשור לניהול ביצועים ומשאבים ב Windows Vista זה ניהול זיכרון ה RAM, במסגרת מנגנון חדש שנקרא SuperFetch. המנגנון עצמו לא ממש מוכר, אלא יותר היכולות המגניבות שלו, למשל ReadyBoost שמאפשר "להרחיב את הזיכרון" באמצעות USB Memory Sticks. האפשרות הזאת היא נגזרת של הדרך שהמנגנון הזה פועל בה. אחד התכונות הפחות מוכרות היא preload.
Preload זאת למעשה מילת המפתח ב SuperFetch, ולמעשה, מציין את ההבדל מול מערכות הפעלה קודמות.
מדובר במנגנון שמיועד לשפר את ביצועי הRAM, באמצעות ניצול התחלתי מלא שלהם. במערכות קודמות, כשאפליקציה ביקשה זיכרון RAM לאיזשהו צורך ממערכת ההפעלה, מערכת ההפעלה הלכה ב real time והקצתה לה מזיכרון ה RAM ובגמר השימוש עשתה free לאותו מקטע זיכרון ושיחררה אותו מאחיזתה לחלוטין. המנגנון הזה התגלה כמנגנון לא יעיל, מאחר שמערכת ההפעלה כל הזמן מקצה ומשחררת זיכרון גם במהלך שימוש אינטנסיבי במחשב, מה שגוזל מאד מהביצועים בהמתנה עד להקצאת הזיכרון.
גישת ה Preload אומרת שמערכת ההפעלה תקצה מראש כמות גודלה מאד של זיכרון RAM ותגדיר אותו כזיכרון שמשמש את מערכת ההפעלה. בפועל, לא יתבצע שימוש בזיכרון הזה עד שאפליקציה כלשהי לא תבקש הקצאת RAM. כשתתקבל בקשה כזאת, יועבר חלק מזיכרון הRAM שהוקצה מראש לשימוש אותה אפליקציה. שתשתמש עד שתזיים את השימוש ואז הוא יוחזר למערכת ההפעלה. כך נחסכת פעולה ארוכה וחוזרת של הקצאה ושיחרור, הקצאה ושיחרור לאורך כל פעולת המערכת.
מה שמתבצע זה הקצאה מראש וניהול הזיכרון, כלומר העברת ה"שליטה" על אותו מקטע של זיכרון בין אפליקציות שונות לפי הצורך.
המנגנון אפילו משוכלל יותר - הוא יכול לאתר אפליקציות שהמשתמש משתמש בהם הרבה, וכבר מתחילת העבודה של אותה אפליקציה להעביר לה כמות זיכרון שתוכל לשמש אותה לכל אורך העבודה, ואז התהליך מתייעל אף יותר.
תסתכלו על הסקרין-שוט מה Task Manager שלי. תסתכלו בנתונים של Physical Memory תראו כמה מעט זיכרון מוגדר כ Free (כלומר - לא עבר הקצאה כלל). סה"כ 2 מגה. תראו בכמה זיכרון אני משתמש סה"כ. ההפרש, זה זיכרון שמערכת ההפעלה הקצתה למרות שלא נמצא בפועל בשימוש מיידי של אפליקציה מסויימת, ונמצא שם כדי לאפשר העברה מהירה לשימוש אפליקציה מסויימת ושיפור הביצועים. חלק מהזיכרון הוקצה מראש לאפליקציה לכל אורך הריצה שלה כדי לחסוך גם את התהליך הזה.
למעשה, מדובר בדרך של Windows Vista לנהל את הזיכרון בצורה שתביא לביצועים מקסימליים ותחסוך זמן. כשמשתמשים מתלוננים שיש להם מעט זיכרון Free, זה לא שויסטה זוללת ומשתמש בהרבה זיכרון במשך פעולתה הרגילה. פשוט, היא שומרת זיכרון בצד. למקרה צורך.
שבוע טוב.