מבוא למערכות הפעלה: תפקידים, תהליכים וזיכרון
מה נלמד בשיעור הזה
שיעור 1 לימד איך חומרת המחשב עובדת. שיעור זה עונה: מי מנהל את החומרה? מי מחליט איזו תוכנה מקבלת CPU? מי מונע מ-WhatsApp לקרוא את הקובץ הבנקאי? התשובה: מערכת ההפעלה.
- תפקיד מערכת ההפעלה — הפשטה, ניהול משאבים, בידוד
- מה זה תהליך (Process) — תוכנית שרצה כרגע
- למה כל תוכנית מקבלת "חדר" זיכרון פרטי משלה
- חיבור ראשוני לסייבר: למה בידוד בין תוכניות חשוב לאבטחה
למה בכלל צריך מערכת הפעלה?
ללא OS — כל תוכנה צריכה לכתוב קוד ישיר לחומרה. כשמריצים שתי תוכניות במקביל — מי מחליט מה קורה כשהן מתנגשות?
| תפקיד | תיאור | דוגמה |
|---|---|---|
| הפשטת חומרה | מסתיר פרטי חומרה — תוכנה כותבת לקובץ, לא לדיסק | שמירת קובץ עובדת אותו דבר בכל מחשב |
| ניהול משאבים | מחלק CPU, RAM ו-I/O בין תוכניות מרובות | המערכת מחלקת זמן מעבד בין התוכניות |
| בידוד ואבטחה | מונע מתוכנית אחת לגשת לנתוני תוכנית אחרת | תהליך לא יכול לגשת לזיכרון של תהליך אחר |
תהליכים וזיכרון: מבט-על בלבד
תהליך (Process) הוא פשוט תוכנית שרצה כרגע — כשפותחים את Chrome נוצר תהליך. כדי ששני תהליכים לא "ידרכו" זה על זה, ה-OS נותן לכל תהליך חדר זיכרון פרטי משלו.
| מושג | במילים פשוטות |
|---|---|
| Process (תהליך) | תוכנית שרצה כרגע, עם "חדר" זיכרון פרטי משלה |
| זיכרון (Memory) | המקום שבו התהליך שומר את הנתונים שהוא עובד איתם כרגע |
| בידוד (Isolation) | תהליך אחד לא יכול לגשת ישירות לזיכרון של תהליך אחר |
מה למדנו בשיעור 2
- OS = ניהול משאבים + הפשטת חומרה + בידוד תהליכים
- Process = תוכנית שרצה כרגע, עם "חדר" זיכרון פרטי משלה
- בידוד בין תהליכים חשוב גם ליציבות המחשב וגם לאבטחה
שאלות תרגול ותשובות (7)
שאלה 1 · מהם שלושת התפקידים המרכזיים של מערכת ההפעלה?
- א. הפשטת חומרה, ניהול משאבים, בידוד ואבטחה
- ב. הצגת גרפיקה, ניגון מדיה, גלישה
- ג. הצפנה, אנטי-וירוס, גיבוי
- ד. ניהול RAM בלבד
מערכת ההפעלה מסתירה את מורכבות החומרה, מחלקת CPU וזיכרון בין התוכניות, ומבודדת ביניהן. גרפיקה, אנטי-וירוס וגיבוי הם שירותים נוספים ולא ליבת התפקיד.
שאלה 2 · מהו PID?
- א. גודל הזיכרון של התהליך
- ב. מזהה מספרי ייחודי של תהליך
- ג. כתובת הפקודה הבאה
- ד. מספר החוטים בתהליך
ה-PID הוא מספר ייחודי שמערכת ההפעלה מקצה לכל תהליך, ובאמצעותו מתבצעות פעולות כמו שליחת סיגנלים או הריגת התהליך.
שאלה 3 · כיצד תוכנית ב-User Mode מבקשת שירות מהחומרה?
- א. ניגשת ישירות לכתובת החומרה
- ב. דרך קריאת מערכת (syscall) לקרנל
- ג. דרך המהדר בזמן ריצה
- ד. באמצעות שינוי ה-PID
גישה ישירה לחומרה חסומה ב-Ring 3. התוכנית מבצעת syscall, המעבד עובר ל-Ring 0, הקרנל מבצע את הפעולה ומחזיר תוצאה.
שאלה 4 · מה ההבדל העיקרי בין int 0x80 לבין syscall בלינוקס?
- א. int 0x80 היא פסיקת תוכנה בסגנון 32 ביט; syscall היא פקודה ייעודית ומהירה ב-64 ביט
- ב. שתיהן זהות לחלוטין
- ג. int 0x80 עובדת רק בווינדוס
- ד. syscall אינה עוברת לקרנל
int 0x80 היא מנגנון הפסיקה הישן של 32 ביט, בעוד syscall היא פקודת מעבד ייעודית ומהירה יותר ב-x86-64. גם טבלאות מספרי הקריאות שונות בין המצבים.
שאלה 5 · מה נכון לגבי חוטים (Threads) באותו תהליך?
- א. לכל חוט מרחב זיכרון נפרד
- ב. החוטים חולקים זיכרון וגם מתארי קבצים
- ג. לכל חוט טבלת קבצים משלו
- ד. חוט אינו יכול לגשת ל-Heap
חוטים של אותו תהליך חולקים Heap, משתנים גלובליים וטבלת File Descriptors, ולכל אחד מחסנית (Stack) ורגיסטרים משלו. השיתוף הזה הוא מקור לתקלות מרוץ (Race Conditions).
שאלה 6 · מהו הקשר בין Page Fault ל-Segmentation Fault?
- א. אין ביניהם קשר
- ב. Segfault הוא Page Fault שהקרנל לא יכול לטפל בו
- ג. Page Fault תמיד מפיל את התהליך
- ד. Segfault מתרחש רק בדיסק מלא
Page Fault הוא אירוע רגיל: הדף אינו בזיכרון והקרנל טוען אותו. אם הכתובת אינה חוקית לתהליך — הקרנל שולח SIGSEGV והתהליך מת. כלומר Segfault הוא העונש על Page Fault שאין לו פתרון.
שאלה 7 · תהליך שולח בקשה לכתיבה לקובץ. מי מבצע בפועל את הכתיבה לדיסק?
- א. התהליך עצמו, ישירות לבקר הדיסק
- ב. הקרנל, לאחר קריאת מערכת
- ג. המהדר בזמן ההידור
- ד. בקר הזיכרון (MMU)
התהליך מבקש write, הקרנל מקבל את הבקשה ב-Ring 0, מוודא הרשאות, ומעביר את הפעולה לדרייבר הדיסק. הפשטת החומרה הזו היא בדיוק תפקיד מערכת ההפעלה.