שימושים אפשריים לסמפורים

מניעה הדדית:

הסמפור יאותחל ל-1.

כל אחד מהתהליכים A, B, יבצע את הקטע הבא:

wait(mutex);

func();

signal(mutex);

סנכרון בין תהליכים:

הסמפור יאותחל ל-0.

יצרן

צרכן

produce();

signal(sem);

wait(sem);

signal(sem);

ניהול מספר מופעים של משאב:

הסמפור יאותחל למספר המופעים.

Buffer remove

Buffer insert

wait(avail);

chr = get(array);

signal(places);

wait(places);

put(array, chr);

signal(avail);

בעיה בפונקציה kill

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

תגיות המסמך:

מאת: באסל

תודה

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