על VMM שמעת?
כאשר מערכת רוצה להפעיל תהליך, היא צריכה להקצות לו משאבים. המשאב הראשון והחשוב ביותר: זיכרון. לכל מערכת הפעלה מודרנית יש רכיב ב-KERNEL שמנהל את הזיכרון. ב-WIN הוא נקרא Virtual Memory Manager - VMM. אני בטוח שתמצא הרבה הסברים עליו ב-ONLINE BOOKS של WINDOWS וב-TECHNET. באופן כללי, הוא מספק לתהליך כתובות זיכרון "מדומות" (לכן נקרא "וירטואלי"), שכאילו נמצאות ברציפות בזיכרון, אחת ליד השניה. זה נקרא "מרחב זיכרון מדומה" או Virtual Address Space. אם צריך, אז VMM מחפש זיכרון לא פעיל ומפנה אותו לדיסק הקשיח, כדי לתת את הזיכרון הזה לתהליך שכרגע כן צריך אותו. זה נקרא PAGING. בנוסף, מערכת ההפעלה קופצת לתחילת ה-CODE SEGMENT ומעמידה את התהליך בתור ל-CPU. חלק מהעבודה הזו נעשית ע"י ה-CPU עצמו, שכן רוב ה-CPU-ים מכילים פקודות לטיפול ב-MULTITHREADING. אבל זה כבר תלוי במערכת ההפעלה. לדוגמה, ב-NT, יש תוכנה שעושה חלק מהעבודה. קוראים לה MICROKERNEL. היא חלק מה-KERNEL של NT, והיא השכבה הכי נמוכה (בסיסית) בו, מלבד דרייברים של כרטיסים נלווים.