1 / 30

מערכות הפעלה

מערכות הפעלה. תרגול 3 – תהליכים, תאום תהליכים. מה בתכנית?. תאום תהליכים – המשך עדיפויות תהליכים ב- UNIX. תאום תהליכים. תאום תהליכים – למה לתאם?. סינכרון פעולות בין תהליכים מניעה הדדית – מנגנונים המבטיחים שרק תהליך אחד מבצע פעילות מסוימת הגנה על משאב משותף

audi
Download Presentation

מערכות הפעלה

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. מערכות הפעלה תרגול 3 – תהליכים, תאום תהליכים

  2. מה בתכנית? • תאום תהליכים – המשך • עדיפויות • תהליכים ב-UNIX מערכות הפעלה - תרגול 3

  3. תאום תהליכים מערכות הפעלה - תרגול 3

  4. תאום תהליכים – למה לתאם? • סינכרון פעולות בין תהליכים • מניעה הדדית – מנגנונים המבטיחים שרק תהליך אחד מבצע פעילות מסוימת • הגנה על משאב משותף • דוגמה: מדפסת, CD, זכרון, מסד נתונים • הגנה על קוד משתמש משותף (קטע קריטי) מערכות הפעלה - תרגול 3

  5. קטע קריטי (critical section) • קטע קריטי הוא קטע קוד שמבוצע רק על ידי תהליך אחד בו זמנית • מבנה: shared section trying/entry section critical section exit section • דוגמה – בנק הפועלים מהתרגול הקודם מערכות הפעלה - תרגול 3

  6. קטע קריטי (critical section) • קטע קריטי הוא קטע קוד שמבוצע רק על ידי תהליך אחד בו זמנית • מבנה: shared section trying/entry section critical section exit section • דוגמה – בנק הפועלים מהתרגול הקודם מערכות הפעלה - תרגול 3

  7. קטע קריטי (critical section) אין הרעבה –> אין קיפאון אבל ההיפך אינו נכון תכונות רצויות: • רק תהליך אחד נמצא בקטע קריטי (מניעה הדדית – mutual exclusion) • אם יש בקשות לקטע הקריטי אזי לפחות תהליך אחד נכנס לקטע הקריטי (אין קיפאוןno deadlock) • הוגנות(fairness)- אם תהליך מבקש להכנס לקטע הקריטי אזי יצליח בסופו של דבר (אין הרעבהno starvation) מערכות הפעלה - תרגול 3

  8. קטע קריטי (critical section) • אטומיות- פעולה (סדרת פקודות) של תהליך אחד מבוצעת ללא חפיפה עם פעולה (סדרת פקודות) של תהליך אחר • מניעה הדדית (ביצוע סדרת הפקודות בתוך קטע קריטי) הינה דרך להבטיח אטומיות באמצעות תוכנה אבל לא הדרך היחידה... אפשר גם בחומרה מערכות הפעלה - תרגול 3

  9. קטע קריטי (critical section) semaphore lock; ... read_security_code(screen); amount = read_amount(screen); wait(lock)// acquire lock balance = get_balance(account); balance -= amount; // 50K-20K put_balance(account, balance); return balance; // = 30K קטע קריטי signal(lock) // release lock show_balance(screen, balance); ... מערכות הפעלה - תרגול 3

  10. דוגמאות לבעיות בתחום תאום תהליכים • כותבים/קוראים • המספרה והספר הישן • הפילוסופים הסועדים מערכות הפעלה - תרגול 3

  11. בעיית כותבים/קוראים • מוטיבציה: גישה למסד הנתונים • שני סוגי תהליכים – קוראים וכותבים • כמה קוראים ביחד יכולים לגשת למסד נתונים בו זמנית • כותב אחד בלבד יכול לגשת בו זמנית קוראים כותב מערכות הפעלה - תרגול 3

  12. בעיית כותבים/קוראים int readers = 0 // # of reading processes semaphore rc_access = 1; // controls access to rc semaphore db = 1; // controls database access void reader(void){ while(TRUE){ wait(rc_access); readers = readers + 1; if(readers == 1) wait(db); signal(rc_access); read_data_base(); wait(rc_access); readers = readers - 1; if(readers == 0) signal(db); signal(rc_access); } } void writer(void){ while(TRUE){ wait(db); write_data_base() signal(db) } מי ירוץ יותר – קוראים או כותבים? מערכות הפעלה - תרגול 3

  13. בעיית כותבים/קוראים • אף קורא לא מחכה אם הגישה למסד נתונים היא לא בידי הכותב (סמפור db) • אם קוראים חדשים מגיעים כל הזמן ומחזיקים בסמפור db– הרעבה של כותב • עדיף לדרוש תנאי: אף כותב לא מחכה עם הוא "מוכן" – אם כותב מחכה אף קורא נוסף לא יכול להתחיל לקרא מערכות הפעלה - תרגול 3

  14. המספרה, או בעיית הספר הישן • קיים ספר אחד ו-N כסאות ללקוחות שמחכים • אם אין לקוחות אז הספר יושב בכיסא וישן (כמו בתמונה) • כשמגיע לקוח חדש והספר ישן הוא יעיר את הספר • כשהלקוח מגיע והספר עסוק הוא ישב על אחד הכסאות, אם קיים כיסא פנוי, אחרת (הכל מלא) הוא יעזוב מערכות הפעלה - תרגול 3

  15. בעיות שעלולות להתעורר: • לקוח מגיע, רואה שהספר עסוק, מתיישב ומחכה. כשהו בדרכו להתיישב, הספר מסיים את התספורת והולך לבדוק את חדר ההמתנה. מאחר ואין שם אף אחד הוא חוזר לישון. • שני לקוחות מגיעים באותו זמן, רואים שהספר עסוק, רואים שיש כיסא אחד פנוי ומנסים להתיישב. שנייהם ינסו להתיישב באותו כיסא. מערכות הפעלה - תרגול 3

  16. המספרה, או בעיית הספר הישן int customers = 0; access = semaphore(1); customer = semaphore(0); barber = semaphore(0); void customer (void) { while(TRUE){ wait(access); if (customers>=CHAIRS) { signal(access); leave_shop(); } customers +=1; signal(access); signal(customer); wait(barber); getHairCut(); wait(access); customers -=1; signal(access); } } void barber (void) { while(TRUE){ wait(customer); signal(barber); cutHair(); } } מערכות הפעלה - תרגול 3

  17. הפילוסופים הסועדים • חמישה פילוסופים מעבירים את זמנם באכילה ומחשבה • כל פילוסוף צריך 2 מזלגות כדי לאכול • פילוסוף לא יכול לקחת יותר ממזלג אחד בו זמנית * פילוסוף – תהליך, מזלג - משאב מערכות הפעלה - תרגול 3

  18. הפילוסופים הסועדים האם הכל בסדר? • void philosopher() { • while(1) { • think(); • get_left_fork(); • get_right_fork(); • eat(); • put_left_fork(); • put_right_fork(); • } • } אם כל פילוסוף יבחר במזלג שמאלי באותו זמן אף אחד לא הולך לאכול... אף פעם! סכנה של Deadlock! מערכות הפעלה - תרגול 3

  19. הפילוסופים – מה עושם? קח מזלג מצד שמאל. אם המזלג מצד ימין פנוי קח אותו גם. אם לא, תחזיר מזלג שלקחת, חכה ונסה שוב. 2 בעיות: • אם כל הפילוסופים מחכים אותו פרק זמן – חוזרים לאותו מצב כמו קודם • אם הזמנים הם שונים עדיין ייתכן ויהיה פילוסוף חסר מזל שישאר רעב (במובן המילולי והטכני) מערכות הפעלה - תרגול 3

  20. אז מה בכל זאת? • רעיון: להשתמש בגורם נוסף שממנו יבקשו משאבים, והוא לא ירשה לקחת מזלג חמישי. מערכות הפעלה - תרגול 3

  21. הפילוסופים הסועדים ולבעיה האמיתית... מערכות הפעלה - תרגול 3

  22. עדיפויות תהליכים מערכות הפעלה - תרגול 3

  23. עדיפויות תהליכים • עדיפות משפיעה על תדירות ההכנסה של תהליך לריצה פעילה ועל מיקומו בתור התהליכים המחכים למעבד • גדרת עדיפות גבוהה לתהליך מבטיחה שירוץ ללא הפרעות מצידם של תהליכים עם עדיפות נמוכה (למשל, אנטיוירוס) • במ"ה מודרניות עדיפויות יכולות להשתנות בזמן ריצה של התהליך כתלות בהתנהגותו מערכות הפעלה - תרגול 3

  24. תהליכים עם עדיפויות זהות ריצת תהליכים ב-CPU תור תהליכים 2 1 3 2 2 0 A 1 A 3 1 2 1 0 2 2 B 1 1 2 2 2 0 3 A 2 1 2 3 0 2 1 A 3 1 2 0 2 B 2 1 0 2 3 A 1 0 2 זמן תהליך במעבד מערכות הפעלה - תרגול 3

  25. תהליכים עם עדיפויות שונות pid1 – עדיפות20 , pid2- עדיפות 20, 3pid – עדיפות 21 ריצת תהליכים ב-CPU תור תהליכים 1 1 2 2 2 0 B 1 1 2 2 2 0 3 1 1 2 2 0 2 2 0 A A 1 1 A 1 0 2 A 1 2 0 2 1 A 1 0 2 זמן מערכות הפעלה - תרגול 3

  26. יצירת תהליכים עם עדיפויות שונות ex8.c int count1 = 0, count2 = 0, count3 = 0; xmain() { int Inc(), Pr(); resume( create(Inc, INITSTK, INITPRIO, "proc 1", 1, &count1) ); resume( create(Inc, INITSTK, INITPRIO, "proc 2", 1, &count2) ); resume( create(Inc, INITSTK, INITPRIO - 1, "proc 3", 1, &count3) ); resume( create(Pr, INITSTK, INITPRIO + 1, "proc 4", 0) ); } Inc<i> - מוסיף 1 ל-count<i> Pr – מדפיס מונים count1, count2, count3 האם ניתן למחוק sleep()? Inc(int ptr) { int *ptr1; ptr1 = (int *)ptr; while (1) (*ptr1)++; } Pr() { while(1) { sleep(3); printf("count1 = %d, count2 = %d, count3 = %d\n", count1, count2, count3); } } מערכות הפעלה - תרגול 3

  27. יצירת תהליכים עם עדיפויות שונות ex8.c למה המספרים מודפסים עם "-"? מערכות הפעלה - תרגול 3

  28. יצירת תהליכים עם עדיפויות שונות ex8.c unsigned longint count1 = 0, count2 = 0, count3 = 0; xmain() { int Inc(), Pr(); resume( create(Inc, INITSTK, INITPRIO, "proc 1", 1, &count1) ); resume( create(Inc, INITSTK, INITPRIO, "proc 2", 1, &count2) ); resume( create(Inc, INITSTK, INITPRIO - 1, "proc 3", 1, &count3) ); resume( create(Pr, INITSTK, INITPRIO + 1, "proc 4", 0) ); } Inc(int ptr) { unsigned long int *ptr1; ptr1 = (unsigned long int *)ptr; while (1) (*ptr1)++; } Pr() { while(1) { char str[80]; sleep(3); sprintf("count1 = %lu, count2 = %lu, count3 = %lu \n", count1, count2, count3); printf(str); } } מערכות הפעלה - תרגול 3

  29. יצירת תהליכים עם עדיפויות שונות ex8.c מערכות הפעלה - תרגול 3

  30. בשיעור הבא... • ממוש תהליכים ב-XINU מערכות הפעלה - תרגול 3

More Related