הבדל בין סמפור למוטקס

הבדל בין סמפור למוטקס
הבדל בין סמפור למוטקס

וִידֵאוֹ: הבדל בין סמפור למוטקס

וִידֵאוֹ: הבדל בין סמפור למוטקס
וִידֵאוֹ: TIGER VS JAGUAR - Who is The Real King of The Jungle? 2024, נוֹבֶמבֶּר
Anonim

Semaphore נגד Mutex

Semaphore הוא מבנה נתונים המשמש כדי לוודא שמספר תהליכים לא יגשו למשאב משותף או למקטע קריטי בו-זמנית, בסביבות תכנות מקבילות. נעשה שימוש בסמאפור כדי למנוע מנעולים מתים ותנאי מירוץ. Mutex (Object Exclusion Mutual) משמש גם כדי למנוע גישה למשאב משותף בו-זמנית על ידי מספר תהליכים במקביל.

מה זה סמפור?

Semaphore הוא מבנה נתונים המשמש לספק אי הכללה הדדית למקטעים קריטיים. סמפורים תומכים בעיקר בשתי פעולות הנקראות המתנה (הידועה היסטורית כ-P) ואות (הידועה היסטורית כ-V).פעולת ההמתנה חוסמת תהליך עד שהסמפור נפתח ופעולת האות מאפשרת לתהליך אחר (חוט) להיכנס. כל סמפור משויך לתור של תהליכי המתנה. כאשר פעולת ההמתנה נקראת על ידי שרשור, אם הסמפור פתוח, השרשור יכול להמשיך. אם הסמפור נסגר כאשר פעולת ההמתנה נקראת על ידי שרשור, השרשור נחסם והוא צריך להמתין בתור. פעולת האות פותחת סמפור ואם יש שרשור כבר מחכה בתור, התהליך הזה מותר להמשיך ואם אין שרשורים שמחכים בתור האות נזכר לשרשורים הבאים. ישנם שני סוגים של סמפורים הנקראים סמפור מוטקס וספירת סמפור. סמפורות Mutex מאפשרות גישה בודדת למשאב וספירת סמפורות מאפשרות למספר שרשורים גישה למשאב (שיש לו מספר יחידות זמינות).

מהו Mutex?

כאשר יישום מחשב מופעל, הוא ייצור mutex ויצרף אותו למשאב.כאשר המשאב משמש על ידי שרשור, הוא נעול ושרשורים אחרים אינם יכולים להשתמש בו. אם שרשור אחר רוצה להשתמש באותו משאב, הוא יצטרך להגיש בקשה. אז השרשור הזה ימוקם בתור עד שהשרשור הראשון יסתיים עם המשאב. כאשר השרשור הראשון יסתיים עם המשאב, הנעילה תוסר והשרשור שמחכה בתור יוכל לקבל גישה למשאב. אם ישנם שרשורים מרובים ממתינים בתור, ניתנת להם גישה על בסיס סיבובי. באופן מעשי, כאשר ה-mutex מחליף את הגישה למשאב בין מספר שרשורים, זה יהיה גלוי כאשר שרשורים מרובים צורכים משאב בו-זמנית. אבל באופן פנימי רק שרשור בודד ניגש למשאב בזמן נתון.

מה ההבדל בין סמפור ל-Mutex?

למרות שגם האובייקטים של הסמפור וגם המוטקס משמשים להשגת הדרה הדדית בסביבות תכנות מקבילות, יש ביניהם כמה הבדלים.אובייקט mutex מאפשר רק לשרשור בודד לצרוך משאב או קטע קריטי, ואילו סמפורים מאפשרים מספר מוגבל של גישה בו-זמנית למשאב (תחת מספר מקסימלי מותר). עם אובייקטי mutex, שרשורים אחרים שרוצים לגשת למשאב צריכים להמתין בתור, עד שהשרשור הנוכחי יסתיים באמצעות המשאב.

מוּמלָץ: