GammaCyber

מבוא למערכות הפעלה: תפקידים, תהליכים וזיכרון

יסודות המחשוב · 2–3 שעות

// סקירה

מה נלמד בשיעור הזה

שיעור 1 לימד איך חומרת המחשב עובדת. שיעור זה עונה: מי מנהל את החומרה? מי מחליט איזו תוכנה מקבלת CPU? מי מונע מ-WhatsApp לקרוא את הקובץ הבנקאי? התשובה: מערכת ההפעלה.

✓נושאי השיעור
  • תפקיד מערכת ההפעלה — הפשטה, ניהול משאבים, בידוד
  • מה זה תהליך (Process) — תוכנית שרצה כרגע
  • למה כל תוכנית מקבלת "חדר" זיכרון פרטי משלה
  • חיבור ראשוני לסייבר: למה בידוד בין תוכניות חשוב לאבטחה
זהו שיעור מבוא מושגי בלבד — בלי כתובות זיכרון, בלי Kernel Mode ובלי קריאות מערכת. הצלילה הטכנית העמוקה מגיעה ביחידת ה-Low-Level (שיעור 37), אחרי שתכתבו קוד ב-C ותבינו מהו מצביע.
// פרק 1

למה בכלל צריך מערכת הפעלה?

ללא OS — כל תוכנה צריכה לכתוב קוד ישיר לחומרה. כשמריצים שתי תוכניות במקביל — מי מחליט מה קורה כשהן מתנגשות?

תפקידתיאורדוגמה
הפשטת חומרהמסתיר פרטי חומרה — תוכנה כותבת לקובץ, לא לדיסקשמירת קובץ עובדת אותו דבר בכל מחשב
ניהול משאביםמחלק CPU, RAM ו-I/O בין תוכניות מרובותהמערכת מחלקת זמן מעבד בין התוכניות
בידוד ואבטחהמונע מתוכנית אחת לגשת לנתוני תוכנית אחרתתהליך לא יכול לגשת לזיכרון של תהליך אחר
💡 אנלוגיה: מנהל מלון
ה-OS כמו מנהל מלון יוקרה. האורחים (תוכניות) לא מדברים ישירות עם אינסטלטורים וחשמלאים. כל בקשה עוברת דרך המנהל — שמתאם, מגביל, ומחלק משאבים.
✏תרגול עצמי2 שאלות
שאלה א׳.1
מהם שלושת התפקידים המרכזיים של מערכת הפעלה?
✓ תשובה: ג) — הפשטת חומרה (תוכנה כותבת לקובץ לא לדיסק), ניהול משאבים (חלוקת זמן מעבד), בידוד ואבטחה (כל תהליך בעולמו).
שאלה א׳.2 [קל]
מה ה-PID?
✓ תשובה: ד) PID = Process ID — מספר ייחודי שה-OS מקצה לכל תהליך, ומאפשר לזהות ולנהל אותו.
המעבד עובד בשתי רמות הרשאה: User Mode (Ring 3) ו-Kernel Mode (Ring 0). תוכנית רגילה לא יכולה לגשת לחומרה ישירות — היא מבקשת מהקרנל דרך syscall. בלינוקס 32 ביט המעבר נעשה בעבר עם int 0x80 (פסיקת תוכנה, איטית יחסית), וב-64 ביט משתמשים בפקודה syscall הייעודית והמהירה. גם מספרי הקריאות שונים בין השניים — טעות נפוצה בכתיבת Shellcode.
// פרק 2

תהליכים וזיכרון: מבט-על בלבד

תהליך (Process) הוא פשוט תוכנית שרצה כרגע — כשפותחים את Chrome נוצר תהליך. כדי ששני תהליכים לא "ידרכו" זה על זה, ה-OS נותן לכל תהליך חדר זיכרון פרטי משלו.

💡 אנלוגיה: חדרים במלון
כל תהליך רץ כאילו הוא לבד ב"חדר" משלו. Chrome לא יכול "לפרוץ" לחדר של Word ולקרוא את הנתונים שלו — אלא אם יש חולשת אבטחה. זו גם הסיבה שקריסה של תוכנית אחת בדרך כלל לא מפילה תוכנית אחרת.
מושגבמילים פשוטות
Process (תהליך)תוכנית שרצה כרגע, עם "חדר" זיכרון פרטי משלה
זיכרון (Memory)המקום שבו התהליך שומר את הנתונים שהוא עובד איתם כרגע
בידוד (Isolation)תהליך אחד לא יכול לגשת ישירות לזיכרון של תהליך אחר
בשיעור 37 (יחידת Low-Level) נצלול לעומק: Kernel Mode מול User Mode, קריאות מערכת, יצירת תהליכים עם fork/exec, זיכרון וירטואלי ומיפוי כתובות.
✏תרגול עצמי2 שאלות
שאלה א׳.3 [קל]
מה זה בעצם Process (תהליך)?
✓ תשובה: ב) — Process = תוכנית שרצה כרגע (לא רק שמורה על הדיסק). ה-OS נותן לה חדר זיכרון פרטי, מזהה (PID) ומשאבים משלה.
שאלה א׳.4 [קל]
למה חשוב שלכל תהליך יהיה "חדר" זיכרון פרטי משלו?
✓ תשובה: ג) — בידוד = אבטחה ויציבות. בלעדיו כל תוכנית זדונית הייתה יכולה לקרוא נתונים מתוכנית אחרת, וכל קריסה הייתה מפילה את כל המחשב.
לכל תהליך מרחב זיכרון וירטואלי משלו, וה-MMU מתרגם כתובת וירטואלית לפיזית. גישה לכתובת שאינה ממופה גורמת ל-Page Fault; אם הקרנל אינו יכול לספק את הדף — הוא הורג את התהליך בסיגנל SIGSEGV, כלומר Segmentation Fault הוא העונש על Page Fault שלא ניתן לטפל בו. חוטים (Threads) של אותו תהליך חולקים את הזיכרון וגם את טבלת מתארי הקבצים (File Descriptors) — ולכן קובץ שנפתח בחוט אחד נגיש לכל החוטים.
// סיכום

מה למדנו בשיעור 2

✓מה למדנו
  • OS = ניהול משאבים + הפשטת חומרה + בידוד תהליכים
  • Process = תוכנית שרצה כרגע, עם "חדר" זיכרון פרטי משלה
  • בידוד בין תהליכים חשוב גם ליציבות המחשב וגם לאבטחה
הצלילה העמוקה — Kernel Mode ו-User Mode, קריאות מערכת, תזמון תהליכים וזיכרון וירטואלי — מחכה לכם בשיעור 37 ביחידת ה-Low-Level, אחרי C ומצביעים.
🎯 השיעור הבא
שיעור 3 — רשתות וסייבר: Client-Server, IP, TCP, HTTP, CIA Triad
שאלות תרגול ותשובות (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, מוודא הרשאות, ומעביר את הפעולה לדרייבר הדיסק. הפשטת החומרה הזו היא בדיוק תפקיד מערכת ההפעלה.