המצבים האפשריים לתהליכים
השרטוט הבא מסכם
את המצבים האפשריים לתהליכים.
המילים על הקשתות
מציינות את הפונקציות בהן אנו משתמשים כדי לעבור ממצב למצב. פירוט הפונקציות יופיע בהמשך המסמך.
הערה:
כאשר באים לתכנן
מערכת הפעלה יש לשים לב ולתכנן מראש את כל המצבים האפשריים עבור תהליכים, וזאת מכיוון שפונקציות רבות של מערכת
ההפעלה מגיבות שונה לתהליכים הנמצאים במצבים שונים, ונרצה
לאפיין את התגובה שלהן מראש.
טענה חשובה
אם אנחנו יודעים
מהו המצב הנוכחי של התהליך,
אנו יודעים באיזו
רשימה הוא נמצא.
יישום
כל הפונקציות
הפועלות על q מניחות שהשדות qnext, qprev של התהליך תקינים. אנו מבססים את ההנחה הזו על ידי שאנו
בודקים כל פעם את המצב הנוכחי של תהליך,
לפני שאנחנו
מבצעים עליו פעולה הקשורה לרשימות.
למשל:
נניח שיצרנו כרגע
תהליך. התהליך במצב SUSP ולכן אינו מופיע באף רשימה.
אם נקרא כעת
לפונקציה kill ונהרוג את התהליך, kill תבדוק את מצב התהליך,
ולא תוציא אותו
מהתור אם הוא במצב SUSP.
תודה
הסברתם את זה, כמו שאר הנושאים, באופן הכי ברור שיש.