מימוש סמפורים ב-XINU

  1. לכל סמפור משויך מונה בעל ערכים שלמים.
  2. תהליך המבקש לחכות קורא ל-wait(s). כתוצאה מכך יפחת s ב-1. אם הערך המתקבל שלילי התהליך יחכה, אחרת, התהליך ימשיך לעבוד בלי לחכות.
  3. תהליך המבקש לשחרר תהליך אחר יקרא ל-signal(s). כתוצאה מכך יגדל ערך s ב-1. אם הערך המתקבל חיובי, אין תהליך מחכה. אם הערך אינו חיובי, משתחרר אחד התהליכים המחכים לסמפור.
  4. wait, signal הינם פעולות אטומיות.
  5. ערכו המוחלט של מונה הסמפור: אם הוא חיובי - מספר פעולות ה-wait שיכולות להתבצע ללא המתנה. אם הוא שלילי - מספר התהליכים המחכים לסמפור.
  6. תהליך שבא לחכות על הסמפור נכנס לסוף התור של הסמפור. כאשר אנו מוציאים (signal) תהליך מהרשימה, אנו מוציאים תהליך מראש התור. כתוצאה מכך: תהליך שנכנס ראשון לרשימת ההמתנה יצא ממנה ראשון, יקבל רשות לבצע את הקטע הקריטי ראשון.

תגיות המסמך:

מאת: באסל

תודה

הסברתם את זה, כמו שאר הנושאים, באופן הכי ברור שיש.
שיתוף:
| עוד