פונקציות הקשורות להודעות

  • send(pid, msg)

שולחת את ההודעה msg אל התהליך pid. אם מחכה כבר הודעה, הפונקציה מחזירה כישלון. קוראת ל-resched לאחר שליחת ההודעה.

  • receive()

מחכה להודעה ומחזירה אותה כשזו מגיעה.

  • recvclr()

אם ישנה הודעה, מחזירה אותה. אחרת, מחזירה OK.

  • sendf(pid, msg)

שולחת את ההודעה msg אל התהליך pid. אם מחכה כבר הודעה, היא נדרסת על ידי ההודעה החדשה.

  • sendn(pid, msg)

שולחת את ההודעה msg אל התהליך pid. אם מחכה כבר הודעה, הפונקציה מחזירה כישלון. איננה קוראת ל-resched.

  • send()

פעולת send:

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

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

חשוב לשים לב שבדומה ל-send, גם sendf מעירה את התהליך עליו היא פועלת.

  • sendn()

פועלת בדיוק כמו send, אולם אם התהליך המקבל היה במצב המתנה להודעה, sendn מכניסה אותו לתור ה-ready אך איננה קוראת ל-resched.

Sendn משמשת לשליחת הודעות בזמן פסיקות, בהן אסור לקרוא ל-resched.

  • recvclr()

נשים לב שפונקציה זו הינה בעייתית כאשר ההודעה היא OK.

לא ניתן להבדיל בין המקרה בו ההודעה היא OK, לבין המקרה שאין הודעה מחכה לתהליך.



תגיות המסמך:

מאת: יחיאל

EDOK

EEP3EI
מאת: יחיאל

EDOK

EDOK
מאת: יחיאל

EDOK

EDOK
מאת: באסל

תודה

הסברתם את זה, כמו שאר הנושאים, באופן הכי ברור שיש.
שיתוף:
| עוד