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

תוכן שנמחק תוכן שנוסף
מ קישורים פנימיים
אין תקציר עריכה
שורה 1:
ב[[מדעי המחשב]], '''סמפור''' (ב[[אנגלית]]: '''semaphore''') הוא מנגנון ל[[סנכרון (מדעי המחשב)|סנכרון]] מספר [[תהליך (מדעי המחשב)|תהליכים]] הפועלים ב[[מחשב]] במקביל. המושג סמפור הומצא על ידי מדען המחשב ה[[הולנד]]י, [[אדסחר דייקסטרה]], והוא נמצא בשימוש נרחב ב[[מערכת הפעלה|מערכות הפעלה]] רבות.
 
==תאור הבעיה ופתרונה באמצעות לולאה==
כאשר קיימים מספר תהליכים אשר קיימתחולקים ביניהם [[השפעהמשאבים הדדית]], לרוב בשל גישה למשאב משותף כלשהומשותפים (למשל, תא [[זיכרון (מחשב)|זיכרון]] או [[קובץ]] משותפים) יכולה להיוצר בעיית אמינות של המידע כאשר שני התהליכים ניגשים למשאב משותף ומשנים את תוכנו ללא סדר.

פתרון את הבעיה פותריםנעשה על ידי הגדרת "[[קטע קריטי]]", אשר כל אחד מן התהליכים יוכל להיכנס אליו או לצאת ממנו רק לאחר ביצוע מספר פעולות, שמטרתן להבטיח כי בכל נקודת זמן רק תהליך אחד נמצא בתוך קטע הקוד הקריטי שלו.
 
==פתרון באמצעות לולאה==
פתרונות לבעיה יכללו תמיד המתנה עד אשר תנאי כלשהו יתקיים, כתנאי לכניסת התהליך לקטע הקריטי (עד אשר תנאי כלשהו יתקיים, אל תבצע פעולה). מימוש המתנה כזו יעשה על ידי [[לולאה|לולאת while]]. הבעיה בפתרון זה היא שההמתנה בתוך הלולאה דורשת זמן [[מעבד]]. בנוסף לכך, קיימת סכנה כי בעת ביצוע קטע הקוד לכניסה לקטע הקריטי, אשר מורכב ממספר פקודות (או מפקודה אחת אשר מורכבת ממספר פקודות מכונה), "יחטף" המעבד מהתהליך וכך עלול לקרות מצב בו המשך ביצוע התוכנית מסתמך על נתונים לא מעודכנים.
 
שורה 19 ⟵ 20:
* [[בעיית הפילוסופים הסועדים]]
* [[בעיית יצרן-צרכן]]
 
==קישורים חיצוניים==
* [http://www.cs.technion.ac.il/Courses/Operating-Systems-Structure/new_slides/Synchronization04.ppt סנכרון תהליכים וחוטים], אתר ה[[טכניון]] {{PPT}}
 
[[קטגוריה:תהליכים (מדעי המחשב)]]