שימושים אפשריים לסמפורים
מניעה הדדית:
הסמפור יאותחל ל-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. ייתכן שתהליך יהיה בשני קטעים קריטיים בו זמנית. אם נהרוג את התהליך הזו נהיה בבעיה, כי בטבלת התהליכים נשמר רק אחד מהסמפורים אותם התהליך מחזיק.
תודה
הסברתם את זה, כמו שאר הנושאים, באופן הכי ברור שיש.