Smart-World Surf

יחידה 2: ניהול תהליכים וחוטים

עקרונות התהליך, החוט, ומחזור החיים שלהם.
תהליךחוטבלוק בקרת תהליך (PCB)החלפת הקשרמצבי תהליך

ברוכים הבאים ליחידת הלימוד בנושא ניהול תהליכים וחוטים בקורס "מערכות הפעלה" (20594). יחידה זו היא אבן יסוד בהבנת אופן פעולתן של מערכות הפעלה מודרניות. נלמד כיצד מערכת ההפעלה מאפשרת למספר רב של תוכניות לרוץ במקביל (לכאורה), כיצד היא מנהלת את משאבי המחשב עבורן, ומהם המרכיבים הבסיסיים המאפשרים זאת.

מבוא לניהול תהליכים וחוטים

מערכת הפעלה מודרנית צריכה לאפשר למשתמשים להריץ מספר רב של תוכניות בו-זמנית, ולכל תוכנית לבצע מספר משימות במקביל. כדי להשיג זאת, מערכת ההפעלה משתמשת במושגים של תהליכים וחוטים. ניהול יעיל שלהם חיוני לביצועי המערכת, ליציבותה ולחווית המשתמש. מטרת יחידה זו היא להבין את ההבדלים ביניהם, את מחזור החיים שלהם, ואת המנגנונים שמערכת ההפעלה מפעילה לניהולם.

אבני הבניין: תהליכים, חוטים ו-PCB

תהליכים (Processes)

תהליך (Process): מופע של תוכנית הנמצאת בביצוע. תהליך הוא יחידת העבודה הבסיסית שמערכת ההפעלה מקצה לה משאבים. לכל תהליך מרחב זיכרון וירטואלי משלו, קבוצת אוגרים (registers) ייעודית, קבצים פתוחים ומשאבי מערכת נוספים.

תהליך נחשב ליחידה "כבדה" (heavyweight) מכיוון שהוא כולל את כל המשאבים הדרושים לביצוע עצמאי. יצירת תהליך חדש דורשת הקצאת משאבים רבה, והמעבר בין תהליכים (החלפת הקשר) כרוך בעלות ביצועים משמעותית.

חוטים (Threads)

חוט (Thread): יחידת ביצוע קלה (lightweight) בתוך תהליך. חוטים בתוך אותו תהליך חולקים את מרחב הזיכרון, קבצים פתוחים ומשאבי מערכת אחרים של התהליך האב, אך לכל חוט יש ערימה (stack) פרטית משלו, קבוצת אוגרים (registers) משלו ומונה תוכנית (program counter) משלו.

חוטים מאפשרים מקביליות (concurrency) בתוך תהליך בודד, מה שמשפר את היעילות ביישומים מסוימים (לדוגמה, שרת אינטרנט שמטפל בבקשות מרובות במקביל). יצירת חוטים והמעבר ביניהם מהירים יותר מאשר בתהליכים, מכיוון שהם חולקים משאבים רבים.

בלוק בקרת תהליך (PCB - Process Control Block)

בלוק בקרת תהליך (PCB): מבנה נתונים שמערכת ההפעלה יוצרת ומנהלת עבור כל תהליך (ולעיתים גם עבור חוטים). ה-PCB מכיל את כל המידע החיוני על התהליך, המאפשר למערכת ההפעלה לנהל אותו ולשחזר את מצבו בכל עת.

ה-PCB כולל מידע כגון: מצב התהליך, מונה התוכנית (PC), תוכן האוגרים, מידע על ניהול זיכרון (כמו טבלאות דפים), מידע חשבונאי (זמן CPU שנוצל), מידע על קבצים פתוחים ומידע על התקני I/O שהוקצו לתהליך.

השוואה: תהליך מול חוט

תהליך

יחידת ביצוע עצמאית עם מרחב זיכרון וירטואלי משלה. "כבד" יותר, דורש יותר משאבים ליצירה והחלפת הקשר. מספק בידוד חזק בין תוכניות.

חוט

יחידת ביצוע בתוך תהליך, חולקת את מרחב הזיכרון של התהליך האב. "קל" יותר, דורש פחות משאבים ליצירה והחלפת הקשר. מאפשר מקביליות בתוך יישום יחיד.

דינמיקת הביצוע: מצבי תהליך והחלפת הקשר

מצבי תהליך (Process States)

מצבי תהליך (Process States): השלבים השונים שמערכת הפעלה מזהה בחייו של תהליך, המשקפים את פעילותו הנוכחית ואת זמינותו לביצוע על ידי המעבד.

תהליך עובר בין מספר מצבים במהלך מחזור חייו:

  • חדש (New): התהליך נוצר אך עדיין לא מוכן לביצוע.
  • מוכן (Ready): התהליך ממתין למעבד כדי להתחיל או להמשיך בביצוע. הוא נמצא בתור התהליכים המוכנים לריצה.
  • רץ (Running): התהליך מבצע כרגע את ההוראות שלו על המעבד. במערכת עם מעבד יחיד, רק תהליך אחד יכול להיות במצב זה בכל רגע נתון.
  • ממתין (Waiting/Blocked): התהליך ממתין לאירוע כלשהו (לדוגמה, השלמת פעולת קלט/פלט, קבלת אות, שחרור מנעול). הוא אינו יכול לרוץ עד שהאירוע מתרחש.
  • סיים (Terminated): התהליך סיים את ביצועו, או שהופסק על ידי מערכת ההפעלה. משאביו משוחררים.

החלפת הקשר (Context Switch)

החלפת הקשר (Context Switch): התהליך שבו מערכת ההפעלה שומרת את מצבו הנוכחי של תהליך אחד (באמצעות ה-PCB שלו) וטוענת את מצבו השמור של תהליך אחר, על מנת שהמעבד יוכל להמשיך בביצוע התהליך החדש.

החלפת הקשר מתרחשת כאשר מערכת ההפעלה מחליטה להעביר את השליטה במעבד מתהליך אחד לאחר (לדוגמה, כאשר תהליך עובר למצב המתנה, או כאשר פסק זמן (timer interrupt) פוקע). זהו מנגנון קריטי למערכות מרובות משימות.

החלפת הקשר: זהו נושא קריטי לבחינה! החלפת הקשר היא פעולה יקרה מבחינת ביצועים (overhead). היא דורשת שמירה וטעינה של מידע רב (תוכן אוגרים, מצב זיכרון וכו'), וגוזלת זמן CPU שאינו מנוצל לביצוע עבודה שימושית. הבנת המנגנון והעלויות הכרוכות בו חיונית להבנת ביצועי מערכת ההפעלה.

אתגרים ושיקולים בניהול תהליכים וחוטים

ניהול תהליכים וחוטים מציב אתגרים רבים בפני מתכנני מערכות הפעלה:

  • תיאום וסנכרון: כאשר חוטים חולקים משאבים (כמו זיכרון), יש צורך במנגנוני סנכרון כדי למנוע מצבי מרוץ (race conditions) ולקבוע סדר פעולות נכון. זהו נושא מורכב שיוביל לטעויות קשות אם לא מנוהל כראוי.
  • תזמון (Scheduling): מערכת ההפעלה צריכה להחליט איזה תהליך או חוט יקבל את המעבד ומתי. אלגוריתמי תזמון שונים משפיעים על ביצועי המערכת, זמני תגובה וצריכת משאבים.
  • עלויות: למרות שחוטים "קלים" יותר מתהליכים, עדיין יש עלות ליצירתם, לניהולם ולהחלפת הקשר ביניהם. מערכת הפעלה צריכה לאזן בין מקסימום מקביליות למינימום תקורה.

שאלות לדיון

  • הסבירו מדוע מערכות הפעלה מודרניות זקוקות הן למושג התהליך והן למושג החוט. באילו מצבים תעדיפו להשתמש בתהליכים ובאילו בחוטים?
  • תארו את מחזור החיים של תהליך, תוך התייחסות למצבים השונים ולמעברים ביניהם. תנו דוגמה לכל מעבר.
  • מהו בלוק בקרת תהליך (PCB) ומהו המידע העיקרי שהוא מכיל? מדוע מידע זה חיוני למערכת ההפעלה?
  • הסבירו את תהליך החלפת הקשר (Context Switch) וכיצד הוא משפיע על ביצועי המערכת. אילו גורמים תורמים לעלותו?

נקודות לתשובת מודל

  • תהליך: יחידת ביצוע עצמאית עם מרחב זיכרון מבודד ומשאבים משלה. מתאים לבידוד יישומים ושימוש במשאבים נפרדים.
  • חוט: יחידת ביצוע קלה בתוך תהליך, חולקת משאבים (זיכרון, קבצים) עם חוטים אחרים באותו תהליך. מתאים למקביליות בתוך יישום יחיד, עם עלויות נמוכות יותר.
  • PCB: מבנה נתונים שמכיל את כל המידע על תהליך (מצב, אוגרים, מונה תוכנית, מידע זיכרון, I/O, חשבונאות), חיוני לניהול ושחזור מצב התהליך.
  • מצבי תהליך: חדש, מוכן, רץ, ממתין, סיים. הבנת המעברים ביניהם (לדוגמה, ממוכן לרץ על ידי מתזמן, מרץ לממתין עקב I/O, מממתין למוכן לאחר השלמת I/O).
  • החלפת הקשר: שמירת ה-PCB של התהליך הנוכחי וטעינת ה-PCB של התהליך הבא. זוהי פעולה יקרה (overhead) הכוללת גישה לזיכרון, שמירת אוגרים, טעינת אוגרים, ושינוי מצב המעבד (לדוגמה, שינוי טבלת דפים).
  • אתגרים: סנכרון חוטים (מניעת מצבי מרוץ), תזמון יעיל, מזעור עלויות החלפת הקשר.
מצאתם טעות או שחסר משהו?
→ הקודמת
מבוא למערכות הפעלה
הבאה ←
תזמון מעבד