Professional Documents
Culture Documents
הוראות כלליות:
יש להקפיד על כללי הנדסת התוכנה :
פונקציה לא אמורה להיות ארוכה מ 25שורות .אם יש קטע קוד
שניתן לתת לו כותרת מה הוא מבצע יש לכתוב אותו בפונקציה
נפרדת.
יש לחלק את הקוד לתת פונקציות מתאימות .אין לשכפל קוד .קוד זהה אמור
להיות בפונקציה מתאימה .
מבנה התכנית (הזחות) ותיעוד במידת הצורך .
חובה להשתמש בקבועים במקומות המתאימים .
יש להשתמש בפונקציות קצרות ,כלליות ,קריאות ושימושיות.
יש להקפיד על בדיקת תקינות קלט ,אפשר להניח שאם ביקשו
מהמשתמש מספר הוא הכניס מספר אך יתכן ולא בטווח הנכון .
הפלט צריך להיות כפי שניתן בתרגיל.
קוד קצר ,לא מסורבל ויעיל הן מבחינת כתיבתו והן מבחינת ריצת
התוכנית.
שאלות דיון תיכתבנה ב wordבעברית.
יצירת עצי תהליכים
sem_open,sem_init,sem_post,sem_wait,fork
p1
האב p1מייצר את חמשת ילדיו בסדר המצויין .מ p2ל , p6 -אבל פלט התכנית איננו לפי סדר היצירה .פלט
p4, p3,p5,p1,p6,p2 התכנית הוא כדלהלן:
תרגיל ) 30 ( 2
p1
p4
p2
p5
p3 p6
p2יולד את ,p3
צא(י) מהדוגמאות שלמדנו בכיתה עבור PRODUCERו CONSUMERהמופיעות במודול בשיעור א.
מספר .4השתמש(י) בסמפורים שלמטה כפי שלמדת בכיתה כך שה PRODUCER -יכתוב לשטח
זיכרון משותף בהיסט אפס בייט יחיד המכיל את האות האנגלית ,Aה CONSUMER -יתעורר על יד ה
PRODUCERוידפיס את ,Aואחר יעיר את ה . PRODUCER -ה PRODUCER -מצידו ,כעת ימלא
בהיסט אפס את האות Bוחוזר חלילה עד .Z
Producer Consumer
)Signal(S1 )Wait(S1
)Wait(S2
)Signal(S2
)Wait(S1
כאשר:
)Signal(Sx )Wait(Sx
;)usleep(100
mem[Sx offset]=0x00
עבור waitו Signalהכתובות למעלה ,אם נשתמש בפרימיטיבים אלה (פונקציות) על מנת ב.
ליצור קטע קוד קריטי .כאשר אין הנחה שהפונקציות אטומיות ,האם התכונות הבאות נכונות:
מניעה הדדית ( ) MUTUAL EXCLUSION .a
התקדמות ( ,)PROGRESSמבוי סתום ( ) DEADLOCK .b
הוגנות ,הרעבה. .c