שיעור 10: מה קורה כשמריצים תוכנית — תהליך, זיכרון ומערכת ההפעלה
הגענו לשיעור האחרון, וגם לרגע שבו הכול מתחבר. בנינו קובץ הרצה — אבל מה בדיוק קורה כשלוחצים להריץ אותו? הטוען של מערכת ההפעלה יוצר תהליך (Process): מופע רץ של התוכנית, עם מרחב זיכרון פרטי משלו. נראה את מבנה הזיכרון של תהליך — קטע הקוד, קטע הנתונים, הערימה (Heap) שגדלה כלפי מעלה למקרים של הקצאה דינמית
כשמריצים תוכנית, מערכת ההפעלה יוצרת לה 'תהליך' — עותק חי בזיכרון עם מקום משלו. יש בו מחסנית לקריאות לפונקציות וערימה למקום שמבקשים תוך כדי. כשהתוכנית רוצה לדבר עם החומרה, היא מבקשת זאת ממערכת ההפעלה.
- תהליך
- מופע רץ של תוכנית, עם מרחב כתובות פרטי ומצב משלו, שמערכת ההפעלה מנהלת.
- טוען
- חלק ממערכת ההפעלה שמעתיק קובץ הרצה לזיכרון ויוצר ממנו תהליך.
- מרחב כתובות
- טווח כתובות הזיכרון שתהליך רואה כשלו; כל תהליך מקבל מרחב פרטי בזכות זיכרון וירטואלי.
- קטע קוד וקטע נתונים
- קטע הקוד מחזיק את הפקודות (בדרך כלל לקריאה בלבד); קטע הנתונים מחזיק משתנים גלובליים וקבועים.
- מחסנית
- אזור זיכרון של מסגרות קריאה לפונקציות — משתנים מקומיים וכתובות חזרה; גדל כלפי מטה.
- ערימה
- אזור זיכרון להקצאה דינמית בזמן ריצה (malloc/new); גדל כלפי מעלה לפי הצורך.
- מסגרת מחסנית
- הרשומה שנדחפת למחסנית בכל קריאה לפונקציה: המשתנים המקומיים שלה וכתובת החזרה.
- קריאת מערכת
- בקשה שתוכנית מגישה למערכת ההפעלה כדי לבצע פעולה שדורשת גישה לחומרה, כמו פלט או קלט.
- זיכרון וירטואלי
- מנגנון שבו כל תהליך מקבל מרחב כתובות פרטי, כאילו הזיכרון כולו שלו, הממופה לזיכרון הפיזי.
- החלפת הקשר
- שמירת מצב התהליך הרץ וטעינת מצב של תהליך אחר, כדי שמעבד אחד ישרת תהליכים רבים.