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

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

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

וִידֵאוֹ: הבדל בין סמפור למוניטור
וִידֵאוֹ: הסבר על רכזת, מתג ונתב - מה ההבדל? 2024, נוֹבֶמבֶּר
Anonim

Semaphore vs Monitor

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

מה זה סמפור?

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

מהו צג?

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

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

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

מוּמלָץ: