הגבלות

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

דגש

על send לשמור הודעות במקום בו התהליך הנמען יוכל לקבל אותן.

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

הפיתרון ש-XINU מציעה: הוספת שדות בטבלת התהליכים עבור הודעות.

מימוש ב-XINU

  • משלוח ההודעות לא חוסם. קבלת ההודעות יכולה להיות חוסמת או לא חוסמת.
  • בקבלה חוסמת, אם לא ממתינה לתהליך הודעה, הוא מחכה עד שמגיעה הודעה.
  • השולח משאיר את ההודעה בטבלת התהליכים בשדות המתאימים לכך.
  • אם השולח רואה כי התהליך המקבל נמצא במצב מחכה להודעה, השולח מחזיר את התהליך המקבל לריצה.
  • מצב תהליך מחכה - PRRECV.
  • בטבלת התהליכים, לכל תהליך ישנם שדות בשם pmsg, phasmsg. הודעה הנשלחת לתהליך מוכנסת לשדה pmsg ברשומת התהליך. השדה phasmsg מסמן האם יש הודעה ממתינה.

תגיות המסמך:

מאת: באסל

תודה

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