תהליכים, תהליכונים, סנכרון, ניהול זיכרון ומערכות קבצים
Enqueue(item) מכניסה לסוף הרשימה ו Dequeue() מוציאה מראש הרשימה. שתי הפונקציות מעדכנות את המצביעים לראש וסוף הרשימה בהתאם. שתי הפונקציות לא משתמשות באמצעי הסנכרון.counter במצב הזה?Enqueue(item) מכניסה לסוף הרשימה ו Dequeue() מוציאה מראש הרשימה. שתי הפונקציות מעדכנות את המצביעים לראש וסוף הרשימה בהתאם.Dequeue() תמיד דואגת להשאיר לפחות פריט אחד במאגר. לא צריך להתייחס לשאלה מה הסיבה לזה. אם יש רק פריט אחרון במאגר, היא מחזירה NULL וזה מטופל בקוד של צרכן עצמו (שקורא ל ConsumerFunction()).A-enter, A-exit, B-enter, B-exit, C-enter, C-exitbusy waiting). כלומר, תהליכונים יכולים להמתין רק ע"י שינה על סמפור.A-enter, A-exit, B-enter, B-exit, C-enter, C-exitm1, m2 ו-c שמאותחלים לאפס. תהליכונים הנאלצים להמתין יעשו זאת באמצעות busy waiting בעזרת פקודת test-and-set.test-and-set(c,1 מתבצעת באופן אטומי, כותבת ערך 1 למשתנה c ומחזירה את ערכו הקודם שלו. אין להשתמש בסמפורים בסעיף הזה.sRead סמפור בינארי שמגן על מונה מספר הקוראים.sWriteRead סמפור בינארי שמשמש למניעה הדדית בין קוראים לבין כותבים (ובין כותבים לעצמם)שאלות תרגול במערכות הפעלה בנושא סמפורים ממבחנים של האוניברסיטה הפתוחה. השאלות ממוינות לפי רמת קושי, עם פתרונות לבדיקה עצמית - כך שניתן ללמוד מטעויות ולהבין את דרך הפתרון לפני הבחינה. ניתן לאתר שאלות חוזרות ולהריץ מבחני סימולציה ממוקדים בנושא סמפורים.