Presentation is loading. Please wait.

Presentation is loading. Please wait.

מערכות הפעלה חזרה. מערכות הפעלה - שאלות חזרה2 (c) רסקין לאוניד 2005 שאלה 1 int X = 1, p1 = 0, p2 = 0; int ProcessA() { printf("process A\n"); while(X);

Similar presentations


Presentation on theme: "מערכות הפעלה חזרה. מערכות הפעלה - שאלות חזרה2 (c) רסקין לאוניד 2005 שאלה 1 int X = 1, p1 = 0, p2 = 0; int ProcessA() { printf("process A\n"); while(X);"— Presentation transcript:

1 מערכות הפעלה חזרה

2 מערכות הפעלה - שאלות חזרה2 (c) רסקין לאוניד 2005 שאלה 1 int X = 1, p1 = 0, p2 = 0; int ProcessA() { printf("process A\n"); while(X); printf("process A finished\n"); exit (1); } void killAll(){ if(p2) kill(p2, 15); if(p1) kill(p1, 9); } int ProcessB() { X = 0; printf("process B\n"); killAll(); printf("process B finished\n"); return 1; } int main() { int status; if((p1 = fork()) != 0) if((p2 = fork()) != 0){ wait(&status); printf("status: %d\n", status); wait(&status); printf("status: %d\n", status); } else ProcessB(); else ProcessA() printf("The end\n"); return 3; } *כאשר תהליך מקבל סיגנל x הוא מסתיים וערך היציאה שלו הוא 128 + x.

3 מערכות הפעלה - שאלות חזרה3 (c) רסקין לאוניד 2005 שאלה 1 עבור כל אחת משורות הפלט הבאות, סמנו כמה פעמים הן מופיעות בפלט כלשהו. 1.process A 2.status: 1 3.status: 137 4.status: 143 5.The end סמנו עבור כל שורה האם היא מתקיימת בפלט כלשהו. 1. השורה process B מופיעה לפני השורה process A. 2. השורה status: 137 מופיעה לפני השורה The end. 3. השורה status: 143 מופיעה לפני השורה status: 137.

4 מערכות הפעלה - שאלות חזרה4 (c) רסקין לאוניד 2005 שאלה 2 נתונות 3 תכניות A, B, ו-C, וקובץ F. בין A ו-B יש פייפ A-B ובין B ו-C יש פייפ C-B. תכנית A פותחת את הקובץ F, כותבת בו בכתובת 17, כותבת לפייפ A-B, וסוגרת את F. תכנית B קוראת את הפייפ A-B, פותחת את F, כותבת בכתובת 17, כותבת לפייפ B-C, וסוגרת את F. תכנית C קוראת את הפייפ B-C, פותחת את הקובץ F, וקוראת את הערך בכתובת 17. כאשר הריצו את התכניות A, B, ו-C, מצאו ש-C קראה ב-F את הערך שכתבה שם A. א. האם זה אפשרי במערכת הקבצים SNF כאשר A, B, ו-C מורצות במחשבים שונים ו-F קובץ בשרת מרוחק? (הנח שקיימת אפשרות לפתוח פייפ בין תכניות הרצות במחשבים שונים כך שההתנהגות זהה לזו שהפייפ מציג כאשר התכניות רצות באותו מחשב) אם כן – הכיצד? אם לא – מדוע? ב. רוצים לגרום ל-C לקרא תמיד דווקא את הערך ש-B כתבה (בין אם התכניות רצות במחשבים שונים ובין אם רצות באותו מחשב). איך ניתן לעשות זאת על ידי עדכון מדיניות כתיבת העדכונים של מערכת הקבצים (תוך פגיעה אפשרית בביצועים)? אל תסבירו יותר מדי – פשוט כתבו את המונח המדויק למדיניות החדשה.

5 מערכות הפעלה - שאלות חזרה5 (c) רסקין לאוניד 2005 שאלה 2 מנסים לעשות זאת על ידי עדכון מנגנון הנעילות של מערכת הקבצים. מימוש של איזה מבין התנאים הבאים על ידי מערכת הקבצים ייתן את התוצאה המקווה? 1."לא מרשים פתיחת קובץ לשתי תכניות יחדיו אם שתיהן כותבות לקובץ" 2."לא מרשים פתיחת קובץ לשתי תכניות יחדיו אם הן משתפות פייפ" 3."לא מרשים כתיבה לבלוק מסוים בקובץ שכבר כתבו אליו לאחרונה" 4."לא מרשים כתיבה ישירה לרשת" 5."לא מרשים פתיחת קובץ לשתי תכניות יחדיו אם אפילו אחת מהן כותבת לקובץ" 6."מסנכרנים את הקריאה והכתיבה באמצעות סמפור"

6 מערכות הפעלה - שאלות חזרה6 (c) רסקין לאוניד 2005 שאלה 3 במערכת מסוימת קיים pipe שאמור להעביר נתונים בין תהליכי יצרן לתהליכי צרכן. לפי הגדרת המערכת ישנם 10 תהליכי יצרן P0..P9 ו- 10 תהליכי צרכן C0...C9,כך שיצרן Pk מייצר נתונים עבור צרכן Ck. כמו כן ידוע שכל הנתונים הם בגודל בית אחד וכל צרכן יודע לזהות אם הנתונים הם שלו (אחרי שהוא קורא אותם). רוצים לממש את המערכת הנ"ל תוך שימוש ב- pipe הנתון. עבור כל אחד מהסעיפים a ו-b להלן בדקו האם הפתרון המוצע נכון. אם הפתרון נכון הסבירו למה והצביעו על חיסרון שלו, אם הפתרון אינו נכון הסבירו מדוע הוא לא עובד והציעו לו תיקון מינימלי כדי שיעבוד נכון בלי להשתמש באמצעי סנכרון אחרים.

7 מערכות הפעלה - שאלות חזרה7 (c) רסקין לאוניד 2005 שאלה 3 1. יצרן Pk כותב פיסות מידע בגודל הנתון ל- pipe בלי קשר לשאר התהליכים. צרכן Ck קורא מה – pipe פיסת מידע בגודל הנתון ובודק האם היא מיועדת אליו, אם כן הוא משתמש בה, אם לא הוא כותב אותה בחזרה ל- pipe. 2. יצרן Pk מחכה לסיגנל מתהליך Pk-1להגיד שהגיע תורו לכתוב, כותב פיסות מידע ל- pipe, ושולח signal לצרכן Ck כדי שיקרא את המידע וסיגנל נוסף ליצרן Pk+1(mod 10) לאותת לו שהגיע תורו לכתוב (בהתחלה יצרן P0 לא מחכה לאף תהליך אחר). צרכן Ck מחכה לסיגנל מיצרן Pk, וכשהוא מקבל אותו הוא ניגש ל- pipe וקורא את המידע. הוחלט להשתמש ב-pipe הנ"ל עבור הסנכרון בלבד בין היצרנים לצרכנים ( המידע עצמו לא יועבר דרכו). כתבו פסואדו קוד אשר מממש סמפור מונה באמצעות ה- pipe. עליכם לממש את הפונקציות signal ו-wait, אין להשתמש באמצעי סנכרון נוספים.

8 מערכות הפעלה - שאלות חזרה8 (c) רסקין לאוניד 2005 שאלה 4 שאלה זו עוסקת בזָמָן התהליכים של לינוקס. כפי לפשט את השאלה, נניח את ההנחות הבאות: אין תהליכי גרעין. כל תהליכי המשתמש הם תהליכים שמבצעים חישובים בלבד. (כלומר, אם לא נאמר במפורש אחרת, התהליכים לעולם אינם מוותרים מרצונם על המעבד). לכל התהליכים יש עדיפות ברירת-מחדל. זְמָן הפעולה של הזָמָן עצמו הוא אפס. תהליך שחוזר מהמתנה, מוכנס ל-active-array של ה-RUN_QUEUE, לפי עדיפותו הדינאמית. נתון כי STARVATION_LIMIT= .

9 מערכות הפעלה - שאלות חזרה9 (c) רסקין לאוניד 2005 שאלה 5 1. נניח כי במערכת 99 תהליכים. א. מהו אורך פרוסת הזמן שיקבל כל תהליך? ב. מהו החלק מזמן המעבד שכל תהליך מקבל? 2. כעת נניח כי במערכת 100 תהליכים. מהו אורך פרוסת הזמן שיקבל כל תהליך, ומהו החלק מזמן המעבד שכל תהליך מקבל? 3. נוסיף למערכת, המריצה 99 תהליכים, תהליך נוסף (מספר 100) שמתעורר ע"י הקשת המשתמש במקלדת. המשתמש מקליד במקלדת בקצב של מקש בשנייה. זמן הטיפול בכל הקלדת מקש הוא 50msec. א. מהו החלק מזמן המעבד שיקבל תהליך זה? ב. מה יקרה לפרוסות הזמן של התהליכים האחרים? 4. במערכת שבה 100 תהליכים חישוביים: א. הציעו שיטה שתאפשר לתהליך חישובי לקבל זמן מעבד על-חשבון התהליכים האחרים (מבלי לשנות את עדיפותו הסטטית). ב. האם השיטה תעבוד כאשר יש 50 תהליכים? ג. אם השיטה תעבוד כאשר יש 10 תהליכים? 5. מה יקרה אם שני תהליכים ישתמשו בו-זמנית בשיטה שהצעתם בסעיף ד' (כאשר יש 100 תהליכים)? מה יקרה אם כל התהליכים יעשו זאת? 6. נניח כי יש במערכת שני תהליכים חישוביים בלבד. האם תהליך אחד יכול להגדיל את חלק הזמן היחסי שהוא מקבל (ללא שינוי עדיפותו הסטטית, כמובן)?


Download ppt "מערכות הפעלה חזרה. מערכות הפעלה - שאלות חזרה2 (c) רסקין לאוניד 2005 שאלה 1 int X = 1, p1 = 0, p2 = 0; int ProcessA() { printf("process A\n"); while(X);"

Similar presentations


Ads by Google