מבנה הנתונים לסמפורים ב-XINU
תהליך המחכה לסמפור יימצא במצב PRWAIT.
לכל סמפור נשמר תור FIFO של התהליכים המחכים לו.
קיימת טבלת סמפורים בה נשמר
מצבו של כל סמפור (מונה הסמפור, מיקום התור שלו).
מציין הסמפור הינו האינדקס
בטבלה זו.
תור התהליכים המחכים לסמפור נשמר בטבלת התורים ורשומת הסמפור מצביעה אל מקום ראש וזנב התור.
מבנה רשומה בטבלת
הסמפורים, הגדרות הקשורות למימוש סמפורים
struct sentry { /* semaphore table entry */
char sstate; /* the state SFREE or
SUSED */
short semcnt; /* count for this
semaphore */
short sqhead; /* q index of head of
list */
short sqtail; /* q index of tail of
list */
};
extern struct sentry semaph[];
extern int nextsem;
#define isbadsem(s) (s<0 || s>=NSEM)
תודה
הסברתם את זה, כמו שאר הנושאים, באופן הכי ברור שיש.