OS-final-A-2009_Solution

מסמכים קשורים
Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

מקביליות

מערכות הפעלה קורס מס'

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

בחן במערכות הפעלה

בחן במערכות הפעלה

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

מקביליות

פקולטה: מחלקה: שם הקורס: קוד הקורס: מדעי הטבע מדעי המחשב ומתמטיקה מתמטיקה בדידה תאריך בחינה: _ 07/07/2015 משך הבחינה: 3 שעות סמ' _ב' מועד

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

מבנה מחשבים ספרתיים

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

מהוא לתכנות ב- JAVA מעבדה 3

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

תכנון אלגוריתמים עבודת בית 4: תכנון אלגוריתמים תאריך הגשה: 02: , בצהריים,תא מספר 66 בקומת כניסה של בניין 003 מתרגל אחראי: אורי 0

מקביליות

שעור 6

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

שאלהIgal : מערכים דו מימדיים רקורסיה:

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

פקולטה לחינוך מנהל סטודנטים Beit Berl College الكلية االكاديمية بيت بيرل 20/06/2016 י"ד/סיון/תשע"ו ייעוץ וירטואלי הרכבת מערכת )רישום לקורסים( באמצעות

Microsoft Word - ExamA_Final_Solution.docx

Homework Dry 3

Microsoft Word B

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

PowerPoint Presentation

מבוא לתכנות ב- JAVA תרגול 7

סדנת תכנות ב C/C++

הגנה - שקפי תרגול

Slide 1

Microsoft Word - solutions.doc

PowerPoint Presentation

מבנה מחשבים ספרתיים

שאלהIgal : מערכים דו מימדיים רקורסיה:

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

הגשה תוך שבוע בשעת התרגול

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

מדריך למרצים ומתרגלים 1

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

אוניברסיטת בן-גוריון המחלקה למדעי המחשב בוחן במבנים בדידים וקומבינטוריקה פרופ' מתיא כ"ץ, ד"ר עופר נימן, ד"ר סטוארט סמית, ד"ר נתן רובין, גב'

Microsoft Word - Ass1Bgu2019b_java docx

מבוא למדעי המחשב

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

PRESENTATION NAME

ex1-bash

תרגול 1

שיעור מס' 6 – סבולות ואפיצויות

<4D F736F F D20F9E9F2E5F820F1E9EEF0E920E7ECE5F7E4>

תכנון אלגוריתמים, אביב 1021, תרגול מס' 4 תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (16.1.(CLR ראשית נראה דוגמא: דוגמא: תהינה

מבוא למדעי המחשב

Slide 1

מצגת של PowerPoint

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

תרגיל 9 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. תהי L השפה בעלת סימן פונקצייה דו מקומי G, סימן פונקציה חד מקומי T, סימן יחס תלת מקומי.c, d וקבועים L

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

Microsoft PowerPoint - 10_threads.ppt

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

Slide 1

אנליזה מתקדמת

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

מבחן בפיתוח מערכות תוכנה בשפת Java ( )

מבוא למדעי המחשב - חובלים

מבוא למדעי המחשב

שיעור 1

מספר נבחן / תשס"ג סמסטר א' מועד א' תאריך: שעה: 13:00 משך הבחינה: 2.5 שעות בחינה בקורס: מבחנים והערכה א' מרצה: ד"ר אבי אללוף חומר עזר

מבוא למדעי המחשב

Microsoft Word - c_SimA_MoedB2005.doc

Microsoft Word - Sol_Moedb10-1-2,4

Slide 1

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

PowerPoint Presentation

PowerPoint Presentation

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבוא למדעי המחשב

Microsoft PowerPoint - rec3.ppt

מערכות הפעלה, סמסטר ב' אריאל סטולרמן סיכומים לקורס מערכות הפעלה פרופ' יחזקאל ישורון, סמסטר ב' 2009 פרק 1: מבוא: 1.1 הגנה על חומרה: חשיבו

PowerPoint Presentation

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

מבוא למדעי המחשב - חובלים

מבוא לאסמבלי

הגשה תוך שבוע בשעת התרגול

תוכן העניינים

טורניר באולינג נגב ה 3 לשנת 2017 ע"ש דורון אסולין ז"ל טורניר זה מיועד לכלל שחקני הבאולינג המשחקים בבאולינג עמותת נגב, כדורת ב"ש וליגה למקומות עבודה. ה

Slide 1

Microsoft PowerPoint - Lecture1

Slide 1

יצוא לחשבשבת תוכן עיניינים הגדרות - חשבונות בנק...2 הגדרות - הגדרות חשבשבת... 3 הגדרות - כרטיסי אשראי... 4 הגדרות - סוגי הכנסה... 5 יצוא לחשבשבת...6 י

מבוא למדעי המחשב

Algorithms Tirgul 1

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

מס' ת"ז מס' מחברת מבחן בקורס מבוא מורחב למדעי המחשב CS1001.py ביה"ס למדעי המחשב, אונ' תל אביב סמסטר א' , מועד ב, 23/3/2018 מרצים: דניאל דויטש,

<4D F736F F D20FAE5F1F4FA20ECE7E5E5FA20E3F2FA20ECE2E1E920E3E9F1F720FAEEE5F0E5FA20E6E9F8FA20E4F8F6E72E646F63>

שאלה 2. תכנות ב - CShell

תכנות מונחה עצמים א' – תש"ע

תמליל:

אוניברסיטת בן-גוריון בנגב המחלקה למדעי המחשב מועד א' במערכות הפעלה ) ביולי (009 מרצים: דני הנדלר ואמנון מייזלס; מתרגלים: דניאל גורדון אלון גרובשטיין תומר הבר ועדי סוויסה משך המבחן: חומר עזר: פתור את כל השאלות: שלוש שעות אסור סה"כ 00 נקודות.. ניהול זיכרון (5 נקודות) נתונה תוכנית המשתמשת ב- +n דפים דף אחד לקוד ו- n דפי נתונים. התוכנית רצה במערכת זיכרון וירטואלי שעובדת ב-.Demand Paging התוכנית עוברת על דפי הנתונים אחד אחרי השני n פעמים על פי הסדר. כלומר:.DD..Dn DD..Dn DD.. Dn מחשב מריץ את התוכנית הנ"ל בשני תהליכים שונים בו-זמנית כאשר דף הקוד משותף בין שני התהליכים ואילו n דפי הנתונים נפרדים. ה- time sharing בין התהליכים הוא כזה שכאשר תהליך מסיים לעבור על דף נתונים מסוים ולפני שהוא עובר לדף הנתונים הבא ה- scheduler מקצה זמן לתהליך השני ששוב רץ עד שהוא מסיים לעבור על דף נתונים מסוים ושוב לפני שהוא עובר לדף הנתונים הבא ה- scheduler חוזר להקצות זמן לתהליך הראשון וחוזר חלילה. בזיכרון x הפיסי של המחשב נמצאים Frames x (לאחר שהוקצו ה- Frames הדרושים למערכת ההפעלה). לתהליך הוקצה 3x מה- frames (הניחו כי x מתחלק ב- ללא שארית) לתהליך הוקצה מה-.frames בזיכרון של תהליך יושב דף הקוד המשותף. חשבו את מספר ה- faults Page עד לגמר ריצת שני התהליכים כאשר שיטת החלפת הדפים היא LRU (עם נקקק'''')ק (demand paging החלפת הדפים היא לוקאלית לכל תהליך ו (+n) x. = הסבירו חישוביכם. (0 חשבו את מספר ה- faults Page עד לגמר ריצת התהליכים כאשר שיטת החלפת הדפים היא LRU (עם (demand paging החלפת הדפים היא גלובאלית לכל התהליכים ו (+n) x. = הסבירו חישוביכם (0 נקקק'''').ק הסעיף הבא איננו קשור לשני הסעיפים הקודמים. הסבירו את ההבדלים בין buffer) TLB (translation lookaside המותאם למערכת multi-programming לבין TLB אשר יש לאתחלו (לבצע (flush כל אימת שהמערכת מבצעת 5).process context switch נקקק'''')ק

שאלה : פתרון הגישה לנתונים נעשית באופן הבא: D הינו i j ) n פעמים) כאשר D D D D D D D D 3 3... n n גישה של תהליך i לדף j. נשים לב כי הגישה לדף הקוד מתבצעת כל הזמן (כל פעם שצריך לקרוא שורת קוד של התוכנית). מספר תשובות) (התקבלו ) לפי נתוני השאלה בשיטת החלפת דפים לוקאלית לתהליך מוקצים x מה- frames שהם ; frames n+ 3n+ 3x ולתהליך מוקצים מה- frames שהם +.frames תהליך מתחיל לרוץ ומבצע page-fault על מנת להביא את דף הקוד המשותף לזיכרון. לפי נתוני השאלה דף זה יוקצה 3 n+ בזיכרון של תהליך ולכן ישארו לתהליך frames למידע. כל אחד מהתהליכים ניגש לכל אחד מ- n דפי הנתונים. כיוון שדפים אלה אינם משותפים אזי בגישה הראשונה של תהליך לדף נתונים יתרחש.page-fault 3n+ תהליך יכול לאחסן > n דפי נתונים ולכן רק בגישות הראשונות לדפים אלו יתרחשו page-faults סה"כ page-faults n עבור תהליך. n+ תהליך יכול לאחסן עד < n דפי נתונים ובגלל ששיטת החלפת הדפים היא LRU אז כשינסה לגשת לדף + יתרחש page-fault והדף הראשון של התהליך יוחלף. כאשר ינסה לגשת לדף +n + +n יתרחש page-fault והדף שני של התהליך יוחלף וכך הלאה. כיוון שניגשים n פעמים ל- n דפי נתונים וכל page-faults עבור תהליך. n פעם יש page-fault סה"כ סה"כ. n + n+ :page-faults מספר תשובות) (התקבלו ) בשיטת החלפת דפים גלובאלית אין משמעות להקצאה של מספר דפים לתהליך כיוון שהאלגוריתם מחליף את הדף הכי ישן שאחד התהליכים רצה בו. n+ ( n+ ) = דפים בזכרון הפיסי. נשים לב שגודל הזיכרון מאפשר לכך שיהיו יש צורך בדף אחד עבור הקוד ולכן נשארו +n frames עבור דפי הנתונים. כל תהליך ניגש ל- n דפים שונים ולכן סה"כ נצטרך עוד frames n עבור דפי הנתונים. לכן רק בגישה הראשונה של כל תהליך לדף המידע יתרחש page-fault סה"כ page-faults n עבור כל אחד מהתהליכים בגישה לדפי הנתונים. +n ( עבור גישה לדף הקוד). סה"כ :page-faults TLB המותאם למערכת multi-programming נכיל בכל שורת המרה גם את מספר התהליך (בנוסף לכתובת הוירטואלית) ולכן בעת ביצוע process context-switch אין צורך לבצע (invalidation) flush של כל הטבלה. לעומת תומך ב- multi-programming יש צורך לבצע flush לטבלה על מנת שהתהליך החדש לא ינסה שאיננו זאת ב- TLB לגשת לדף פיסי של תהליך אחר.

. קבצים NFS 5) נקודות) נתונה מערכת קבצים של LINUX אשר תומכת בשיתוף קבצים.(NFS) במערכת קיימים שלושה סוגי מבני נתונים: i-nodes r-nodes ו- v-nodes. הסבירו את תפקידו של כל אחד ממבני הנתונים הללו ואת הקשרים ביניהם (5 נקקק'''').ק נתון קטע הקוד הב ידוע שהקובץ data.txt יושב על גבי שרת חיצוני (ולא במערכת הקבצים המקומית). הסבירו אילו מן הפקודות שבקוד נשלחות לשרת ואילו ל נמקו תשובתכם בקצרה (6 נקקק'''').ק int fd=open("data.txt"o_rdonly0666); lseek(fd50seek_set); // Sets the offset to 50 write(fdbuf50); // Write 50 bytes from buf lseek(fd50seek_set); // Sets the offset to 50 read(fdbuf50); // Read 50 bytes into buf נתון קטע הקוד הב int fd=open("data.txt"o_rdonly0666); lseek(fd0seek_set); // Sets the offset to 0 read(fdbuf500); read(fdbuf500); read(fdbuf000); נתון גם כי לקליינט יש שכבת NFS caching והשרת שולח לקליינט בלוקים בגודל קבוע של.KB הסבירו אילו מן הפקודות בקוד שלמעלה נשלחות לשרת ואילו ל נמקו תשובתכם בקצרה (6 נקקק'''').ק ד. נתונים שני תהליכים. התהליך הראשון פותח את הקובץ data.txt לכתיבה ולקריאה. התהליך השני מנסה למחוק את הקובץ בעודו פתוח ע"י התהליך הראשון. (שני קליינטים שונים של השרת החיצוני). האם המחיקה שונים מחשבים בהנחה ששני התהליכים רצים על תצליח? נמקו בקצרה ( נקקק'''').ק (קליינט של השרת החיצוני). האם המחיקה תצליח? נמקו אותו מחשב על בהנחה ששני התהליכים רצים בקצרה ( נקקק'''').ק.i.ii : שאלה פתרון פי מה שנלמד בכיתה). (על STATELESS הוא NFS שרת הערה: :INODE מבנה נתונים המתאר קובץ במערכת הקבצים המקומית. ומתאר קובץ במערכת קבצים מרוחקת. נמצא אצל הקליינט אשר :RNODE מבנה נתונים :VNODE נמצא בשכבת ה- VFS ומצביע או ל- INODE או ל- RNODE (משמש לאבסטרקציה). ה- LAYER SYSTEM CALL "עובדת" רק עם.VNODES כלומר ה"דיבור" עם קבצים ב- SYSTEM CALL (VNODE ע"י (המוצבע RNODE יתבצע באותה "שפה" בלי קשר אם הקובץ מקומי או מרוחק. כאשר LAYER יתרגם את הפקודות להודעות לאיזשהו שרת מרוחק שעליו יושב הקובץ. ואילו INODE (המוצבע ע"י (VNODE יתרגם את הפקודות להודעות למערכת הקבצים המקומית של מערכת ההפעלה. 3

שורה : לא תשלח פקודת OPEN לשרת אלה פקודות LOOKUP אשר תחזיר לקליינט.FILEHANDLER לאחר קבלת ה- FILEHANDLER הקליינט ייצר VNODE ו- RNODE כאשר ה- VNODE יצביע ל- RNODE ואילו ה- יחזיק את ה- FILEHANDLER. RNODE לשורה התקבלו גם התשובות שבהן הנבחן רשם שה- OPEN נשלח והשרת מחזיר FD וגם התשובות שבהן הנבחן רשם שה- OPEN לא נשלח בגלל שהשרת הוא.STATELESS שורה : השרת הוא STATELESS ולכן מידע כגון ה- OFFSET של הקובץ נמצא אצל הקליינט. כלומר פקודת LSEEK תמיד תתבצע בצד של הקליינט בלבד. שורה 3: השרת הוא STATELESS ולכן מידע כגון הרשאות כתיבה/קריאה של הקובץ נמצאות אצל הקליינט. מכיוון שהקובץ נפתח כ- RD_ONLY הקליינט יזהה שאסור לבצע פעולת כתיבה לקובץ. ולכן פקודת ה- WRITE לא תשלח לשרת. שורה : (ראה הסבר לשורה ). שורה 5: מכיוון שהתוכן של הקובץ יושב אצל השרת (ולא אצל הקליינט) פקודת ה- READ תשלח לשרת ותבקש את 50 הביטים מ- OFFSET 00. הערה: בשאלה זו פקודת ה- READ יכולה להחזיר יותר מידע ממה שהקליינט ביקש. כאשר המוטבציה מאוחרי קבלת מידע "נוסף" היא שסביר להניח שבאיזשהו שלב הקליינט ירצה לקרוא את המידע הנוסף הזה. שכבת ה- CACHE אשר בה יאוחסן המידע יכולה לחסוך גישות לשרת. שורה : (ראה הסבר לשורה בסעיף ב') שורה : (ראה הסבר לשורה בסעיף ב') שורה 3: הקליינט יראה שה- CACHE ריק ולכן עליו לקבל את תוכן הקובץ מהשרת. פקודת ה- READ תשלח לשרת ותבקש את 500 הביטים מ- OFFSET 0. מכיוון שנתון שהשרת מחזיר תשובות בבלוקים של.kb הקליינט יקבל חזרה את תוכן הקובץ מ- 0 עד 0 בייט (או 000 בייט) ויאכסן את המידע ב- CACHE. שורה : כעת הקליינט רוצה את תוכן הקובץ מ- 500 עד 000 בייט. הפעם הקליינט יגלה שהמידע שהוא צריך יושב ב- CACHE ולכן פקודת ה- READ לאאאא תישלח לשרת אלה תיקח המידע ישירות מה- CACHE. שורה 5: כעת הקליינט רוצה את תוכן הקובץ מ- 000 עד 000 בייט. אולם ל- CACHE יש רק את המידע עד הבייט ה- 0 (או 000) ולכן הפעם פקודת ה- READ תישלח לשרת..i ד. השרת הוא STATELESS ולכן אין לו שום מידע לגבי איזה תהליכים פתחו את הקובץ.data.txt בהנחה שיש לקליינט הרשאות מתאימות המחיקה תצליח. מכיוון ששני התהליכים רצים על אותה מערכת הפעלה באותו מחשב מערכת ההפעלה של הקליינט יכולה לזהות שהקובץ פתוח (הקליינט הוא.(STATEFUL האם המחיקה תצליח? תלוי במערכת ההפעלה. נבחן שהבין שהפעם המחיקה תלויה בקליינט (ולא בשרת) ונתן הסבר מספק קיבל את מלוא הנקודות..ii 3. סינכרוניזציה - סמפורים (5 נקודות) נתונה בעייה של יצרן אחד ושלושה צרכנים שבה ישנם שלושה מוצרים שונים המסופקים על ידי היצרן וכל אחד מן הצרכנים נזקק לשניים מהם. היצרן מקבל כל כמה זמן אספקה של מהמוצרים (ראנדומאלית) ומציע אותם לצרכנים. הצרכן שאלו שני המוצרים הדרושים לו לוקח את שני המוצרים. רק לאחר שהמוצרים נלקחו חוזר היצרן על התהליך- ומציע שוב שני מוצרים. כך חוזר התהליך על עצמו שוב ושו נדרש פתרון לבעיה המשתמש אך ורק בסמפורים כאמצעי סנכרון. לבעייה הוצע הפיתרון הבא המשתמש במערך [..0]S של סמפורים ובסמפור נוסף בשם producer (אין זה משנה אם הסמפורים בינאריים או כלליים) המאותחלים לערך 0. בפתרון זה כל אחד מן הסמפורים S[i] מיצג אחד מן המוצרים. Code for Consumer i {0} Down(S[i]) Down(S[(i+) mod 3) Up(producer) Producer code Let i j be two random products from {0} Up(S[i]) Up(S[j]) Down(producer)

נקקק'''')ק תנו תסריט המוכיח כי בפתרון זה יתכן.deadlock (0 הציעו קוד חלופי הפותר בעייה זו ומשתמש בדיוק באותם משתנים (אך משנה את משמעותם). ניתן להניח כי נקקק'''').ק היצרן יודע מי הם הצרכנים ואילו מוצרים כל אחד מהם צריך (5 Producer: i=0 j= Up(S[0]) Up(S[]) Down(producer) ==> blocked C : Down(S[]) Down(S[]) ==> blocked C 0 : Down(S[0]) Down(S[]) ==> blocked C : Down(S[]) ==> blocked Deadlock! פתרון שאלה 3 התרחיש הבא יוביל ל- :deadlock נחליף את תפקיד הסמפורים שבמערך. כעת במקום לציין מוצרים ייצג סמפור תנאי עבור צרכן מסוים. לשם כך נגדיר (אך לא נממש) פונקציה (j consumer(int iint אשר בהינתן זוג מספרים המייצגים מוצרים תחזיר את מספר הצרכן שיוכל להשתמש במוצרים אלו. Code for Consumer i {0} Down(S[i]) Up(producer) Producer code Let i j be two random products from {0} Up(S[consumer(ij)]) Down(producer) (5 נקודות). סינכרוניזציה בעיית המניעה ההדדית exclusion) (mutual להלן אלגוריתם המא פיה (Bakery) של Lamport כפי שנלמד בכיתה. int number[..n] initially 0 boolean choosing[..n] initially 0 Code forprocess i : choosing[i] := true : number[i] := + max {number[j] ( j n)} 3: choosing[i] := false : for j := to n do 5: await choosing[j] = false 6: await (number[j] = 0) (number[j]j) (number[i]i) 7: od 8: critical section 9: number[i] := 0 5

כפי שהסברנו בכיתה אלגוריתם המאפיה מקיים את תכונות המניעה ההדדית exclusion) (mutual חופש מהרעבה.(first-in first-out) והוגנות (starvation freedom) נניח כי מחליפים את שורה מספר 6 של האלגוריתם בשורה הבאה. await (number[j] = 0) (number[j] number[i]) ציינו איזו מתכונות האלגוריתם מפסיקה להתקיים. תארו תסריט מדוייק המוכיח זאת. (7 נקקק'''')ק נניח כי מסירים את שורה מספר 5 מן האלגוריתם (שורה 6 המקורית נותרת). ציינו איזו מתכונות האלגוריתם מפסיקה להתקיים. תארו תסריט מדוייק המוכיח זאת. (8 נקקק'''')ק ד"ר אינטלקטועאלק מציע את הוריאציה הבאה של אלגוריתם המאפיה (הדגשנו בקו תחתון את קטע הקוד שהשתנה). Int number[..n] initially 0 Boolean choosing[..n] initially 0 Code forprocess i : choosing[i] := true : if i is even 3: number[i] := + max {number[j] ( j n) for all even j} : else 5: number[i] := + max {number[j] ( j n) for all odd j} 3: choosing[i] := false : for j := to n do 5: await choosing[j] = false 6: await (number[j] = 0) (number[j]j) (number[i]i) 7: od 8: critical section 9: number[i] := 0 עבור כל תכונה מתכונות האלגוריתם המקורי (מניעה הדדית חופש מהרעבה והוגנות) ציינו האם היא נשמרת או שהיא מופרת על ידי האלגוריתם החדש. עבור כל תכונה הנשמרת לדעתכם הסבירו בקצרה אך במדויק נקקק'''')ק מדוע היא נשמרת. עבור כל תכונה המופרת לדעתכם תנו תסריט מדויק המוכיח זאת. (0 : שאלה פתרון התכונה המופרת היא.mutual exclusion נסתכל בשני תהליכים תהליך 0 ותהליך - ששניהם מבצעים לקיחת מספר לתור באותו זמן. זה אפשרי כיוון שאין אף פעולה אטומית בשורות הקוד. לכן שני התהליכים יכולים לקבל את אותו מספר נאמר שמספרם הוא. שניהם בודקים מערך של אפסים ומוסיפים לו. כעת שני התהליכים מגיעים לשורה 6 בקוד ושניהם עוברים אותה כיוון שלכל אחד מהם מתקיים שהוא מהשני. לכן שניהם נכנסים בו זמנית לקטע הקוד הקריטי. שימו לב כי הקוד בסעיף שונה מהדוגמא בכיתה כיוון שכאן יש אי-שוויון חלש. בדוגמא בכיתה היה אי-שיוויון חזק והתהליכים יכלו להיקלע למצב של.deadlock גם כאן התכונה המפסיקה להתקיים היא.mutual exclusion ניקח שני תהליכים תהליך 0 ותהליך - הנמצאים בתהליך בחירת מספר בו זמנית ושניהם יקבלו בסופו של דבר את אותו המספר. אם התהליך יקבל את מספרו ראשון ותהליך 0 עדיין לא בחר מספר אזי עקב העדר שורה 5 תהליך לא ימתין וייכנס לקטע הקוד הקריטי. כל מתחריו כולל תהליך 0 הם עדיין בעלי מספר 0. כעת תהליך 0 מסיים לקבל את המספר וגם הוא ייכנס לקטע הקוד הקריטי כיוון שלקסיקוגרפית הוא קטן יותר. תכונה ברורה שנפגעת מסיבה שתיכף נבהיר היא ההוגנות ונוצרת אפשרות הרעבה. אפשר גם להראות שנשברת תכונת.mutual exclusion חלוקת מספרי התור נעשית לחוד לתהליכים זוגיים ואי-זוגיים ואילו התור לכניסה לקטע הקוד הקריטי מתנהל באופן יחיד. לכן תהליך אי-זוגי יחיד שמספרו יקבל את המספר ואילו שני תהליכים זוגיים למשל 0 ו- יקבלו את המספרים ו- בהתאמה. זהו כמובן תסריט אפשרי בקוד הנתון. כעת מצב של הרעבה הוא ברור כי תהליך ייכנס לקוד מספר פעמים בלתי מוגבל כל זמן שהוא האי-זוגי היחיד ואילו תהליך מס' ימתין כל 6

הזמן כי מספרו יהיה גדול יותר. התסריט הבא מוכיח כי גם תכונת mutual exclusion מופרת. תהליך רץ לבדו לוקח מספר ונכנס לקטע הקריטי. כעת רץ תהליך מספר. גם הוא לוקח מספר מצליח לעבור את ההשוואה הלקסיקוגראפית מול תהליך ונכנס אף הוא לקטע הקריטי. ב ה צ ל ח ה! 7