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

תוכן שנמחק תוכן שנוסף
זה לא תמורה
←‏פתרון הבעיה באמצעות סמפור: *אם* הדגל כבר נתפס -- לא "במידה ו"
שורה 15:
 
==פתרון הבעיה באמצעות סמפור==
כיום נהוג לפתור בעיה זו על ידי שימוש ב'''סמפור''': מעין דגל (flag) אשר כדי לשנות את ערכו התהליך נדרש לבקש זאת ממערכת ההפעלה. במידהאם והדגלהדגל כבר "נתפס" על ידי תהליך אחר, מערכת ההפעלה תעביר את התהליך ל"מצב שינה", ו"תעיר" אותו על ידי משלוח [[פסיקה (מחשב)|פסיקה]] ברגע שהדגל "משוחרר" על ידי התהליך שתפס אותו.
 
בצורה זו מתאפשר סנכרון ללא בזבוז זמן מעבד, וכן מובטח לנו כי מערכת ההפעלה מפקחת על מצב הדגל ושינוי של ערכו מבוצע בצורה אטומית (לא ניתן לחטוף לתהליך את המעבד בזמן שינוי ערך הדגל). אמנםאומנם אם הסמפור איננו "הוגן", משחרר לפי הסדר בו ניסו לתפוס אותו, קיימת בעיה של [[הרעבה (מדעי המחשב)|הרעבה]].
 
==אופן פעולת הסמפור==