ההבדל בין סמפור לצג במערכת ההפעלה

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 1 אַפּרִיל 2021
תאריך עדכון: 5 מאי 2024
Anonim
תכנות מתקדם 1 - תרגול 8 - תומר גיל
וִידֵאוֹ: תכנות מתקדם 1 - תרגול 8 - תומר גיל

תוֹכֶן


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

  1. טבלת השוואה
  2. הגדרה
  3. הבדלים עיקריים
  4. סיכום

טבלת השוואה

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


הגדרת סמפור

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

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

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


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

הגדרת צג

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

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

התחביר של הצג הוא כדלקמן:

monitor monitor_name {// נוהל הצהרות משתנה משותף P1 (...) {} נוהל P2 (...) {} נוהל Pn (...) {} קוד אתחול (...) {}}

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

משתנים מותנים הוצגו למנגנון סינכרון נוסף. המשתנה המותנה מאפשר לתהליך להמתין בתוך הצג ומאפשר לתהליך המתנה להתחדש מייד כאשר התהליך האחר משחרר את המשאבים.

ה משתנה מותנה יכול להפעיל רק שתי פעולות חכה() ו אות(). איפה אם תהליך P מזמין המתנה () פעולה זה מושעה במוניטור עד לתהליך אחר Q להפעיל אות () פעולה, כלומר פעולת אות () המופעלת על ידי תהליך מחדשת את התהליך המושעה.

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

סיכום:

קל ליישום מסכים מאשר סמפור, ויש סיכוי קטן לטעות במוניטור בהשוואה לסמפוריות.