בעיות אפשריות הקשורות לזיכרון

בעיה 1 - תהליך הניגש למשתנים הנמצאים על מחסנית של תהליך אחר

דוגמא:

int xmain()

{

       int sem = screate(0);

       if (sem == SYSERR) return -1;

       resume(create(proc, INITSTK, INITPRIO, "proc", 1, &sem));

       signal(sem);

       return 0;

}

int proc(int *p_sem)

{

       ...

       wait(*p_sem);

       ...

}

המחסנית של xmain משתחררת ואיתה גם sem כאשר xmain מסתיימת. proc יכול לגשת אל זיכרון שהוא כרגע לא מוקצה.

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



תגיות המסמך:

מאת: באסל

תודה

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