פעולה אטומית – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
←ראו גם: הוספת "פעולה בולאנית". |
מ בוט החלפות: הייתה ; על ידי; לעתים; זיכרון; |
||
שורה 1:
ב[[מדעי המחשב]], '''פעולה אטומית''' הינה רצף של [[סט פקודות|פקודות מכונה]] או פקודת מכונה יחידה שיבוצעו על ידי [[מעבד]], מבלי שיכולה להיעשות [[החלפת הקשר]] בזמן ביצוען ומבלי שרכיב אחר במחשב יוכל להבחין בכל מצב ביניים אלא רק במצב ההתחלתי או הסופי של הפעולה. חלק מהפעולות האטומיות יכולות להצליח או להיכשל ואילו אחרות תמיד מצליחות.
פעולות אטומיות מהוות
==הצורך בפעולה אטומית==
להמחשת הצורך בפעולה אטומית, נסתכל על הפשטה של הפקודות שמרכיבות את פעולת הקידום (הגדלה ב-1 של ערך
1. התהליך קורא
2. התהליך מגדיל את הערך ב-1
3. התהליך כותב למקום X את הערך החדש
כעת נסתכל על 2 תהליכים שמבצעים פעולת קידום על אותו מקום
====תרחיש ראשון (תקין):====
1. תהליך '''א'''' קורא
2. תהליך '''א'''' מגדיל את הערך ב-1
3. תהליך '''א'''' כותב למקום X את הערך החדש
מתבצעת '''החלפת הקשר'''
4. תהליך '''ב'''' קורא
5. תהליך '''ב'''' מגדיל את הערך ב-1
6. תהליך '''ב'''' כותב למקום X את הערך החדש
הערך גדל פעמיים: פעם
====תרחיש שני (תוצאה שגויה):====
1. תהליך '''א'''' קורא
2. תהליך '''א'''' מגדיל את הערך ב-1
מתבצעת '''החלפת הקשר'''
3. תהליך '''ב'''' קורא
4. תהליך '''ב'''' מגדיל את הערך ב-1
5. תהליך '''ב'''' כותב למקום X את הערך החדש
מתבצעת '''החלפת הקשר'''
6. תהליך '''א'''' כותב למקום X את הערך החדש
הערך גדל לבסוף רק פעם אחת: השינוי שביצע תהליך ב' נדרס
במידה ופעולת ההגדלה
ב[[עיבוד מקבילי]] הסיכון גדול עוד יותר כיוון שמספר מעבדים פועלים במקביל ועובדים על
==פעולות אטומיות נפוצות==
|