סמפור (מדעי המחשב) – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
אין תקציר עריכה
הרחבה
שורה 18:
 
בצורה זו מתאפשר סנכרון ללא בזבוז זמן מעבד, וכן מובטח לנו כי מערכת ההפעלה מפקחת על מצב הדגל ושינוי של ערכו מבוצע בצורה אטומית (לא ניתן לחטוף לתהליך את המעבד בזמן שינוי ערך הדגל).
 
==אופן פעולת הסמפור==
הסמפור הוא משתנה היכול לקבל ערכים שלמים לא שליליים (במקרה של סמפור בינארי הוא יכול לקבל שני ערכים בלבד, 0 ו-1).
 
על הסמפור מוגדרות שתי פעולות:
# אם ערך הסמפור גדול מ-0 הקטן אותו ב-1 והמשך, אחרת המתן עד שיהיה גדול מ-0, ואז הקטן אותו ב-1 והמשך.
# הגדל את ערך הסמפור ב-1.
 
דוגמה לשימוש בסמפור בינארי על מנת לפתור את בעיית המניעה ההדדית כאשר קיימים שני תהליכים החולקים משאב משותף: לפני כניסה לקטע הקריטי תתבצע הפעולה הראשונה, וביציאה ממנו הפעולה השנייה.
 
==ראו גם==