שאלה במערכות הפעלה

moonlight8

New member
שאלה במערכות הפעלה

שלום, יש לי שאלה מבחינות קודמות של המרצה שלי, שאני פשוט לא מצליחה לפתור אותה והבחינה שלי היא ביום א'!!. אגב,מערכת הפעלה אותה אנו לומדים הנה XINU . להלן השאלה: הראה כיצד אפשר להכניס את המאפיין הבא לתוך מנהל התהליכים: כאשר תהליך נולד ההנחה היא שאחד התהליכים שקיימים באותו זמן שהוא נוצר יהיה זה שיעשה לו resume. אם כך התהליכים שהיו קיימים ברע ההולדות שלו חדלים להתקיים מבלי שאף אחד מהם יעשה לו resume ראשוני- המערכת מחסלת את התהליך. השאלה איזה שינויים צריך להכניס ל XINU. אני רק רוצה להבין מה לעשות. וכיצד ניגשים לסוג שאלות כזה. אודה לכל מי שיוכל לעזור לי. גמר חתימה טובה.
 

mulix

New member
כיוונים לפיתרון

כי אני ממש, אבל ממש, לא זוכר כלום מ- XINU (איפה עוד לומדים את הענתיקה הזו?) הדבר הראשון שצריך לעשות הוא להבין מה המצב הנוכחי, ומה מבקשים בשאלה. המצב הנוכחי (אני מניח) הוא שכשתהליך נוצר מישהו, מתישהו, יעשה לו resume, ולכן לא צריך לעשות שום דבר מיוחד. בשאלה אומרים לנו לעומת זאת שכשהתהליך נוצר אחד התהליכים שקיימים באותו זמן הוא זה שיעשה לו resume, ואם אף אחד מבינהם לא עושה לו resume, הורגים אותו. מכאן נובע שיש שני דברים שאנו צריכים לדעת: אילו תהליכים קיימים כשהתהליך החדש נוצר? רק הם אלה שיכולים לעשות לו resume. מתי לא נשארו יותר תהליכים שנוצרו לפני התהליך המדובר? עכשיו צריך לחשוב איך לייצג את האינפורמציה שצריך ומתי להשתמש בה ע"מ שהמערכת תעשה מה שמבקשים. פתרון פשוט אבל לא בהכרח אופטימלי הוא לשמור לכל תהליך timestamp של מתי הוא נוצר, ולסדר את התהליכים ברשימה מקושרת ממויינים לפי ה- timestamp. זו האינפורמציה שצריך, ומשתמשים בה בשני מקרים: 1. כאשר תהליך א עושה resume לתהליך ב בודקים שה- timestap של א קטן יותר משל ב (כלומר א היה קיים כש- ב נוצר) 2. כאשר תהליך מסתיים ומוציאים אותו מהרשימה המקושרת בודקים אם על התהליך הראשון ברשימה עדיין לא בוצע resume. אם כן, הורגים אותו כי כל התהליכים שהיו קיימים בזמן שהוא נוצר הסתיימו (אחרת אחד מהם היה ראשון ולא הוא). הסיבה שעושים את זה כאשר תהליך כלשהו מסתיים היא שזו הנקודה היחידה שבה תהליך יכול לעבור מ- "יש תהליכים שנוצרו לפניו" ל- "אין תהליכים שנוצרו לפניו", כי התהליך האחרון שנוצר לפניו הסתיים. כמה נקודות לשים אליהן לב: כשתהליך מסתיים יכולים להיות כמה תהליכים בראש הרשימה שלאף אחד לא עשו resume - צריך לסרוק את ראש הרשימה עד שמחסלים את כולם. מה קורה עם התהליך הראשון אי פעם במערכת? מי עושה לו resume? המנגנון שתיארתי לעיל מתעלם לחלוטין מאיך שמנהל התהליכים של XINU עובד. עדיף לחשוב על מנגנון שישתלב עם מנהל התהליכים טוב יותר (קרי: ידרוש שינויים מינימלים במנגנון התהליכים), אם אפשר.
 
למעלה