Introduction to Operating Systems Chapter 4
Transcript of Introduction to Operating Systems Chapter 4
Chapter 4 - Processes Communication 1
מבוא למערכות הפעלה1
תהליכים2
תזמון תהליכים3
תקשורת בין תהליכים פנימיים4
(תקיעה)נעילה 5
תהליכים קלי משקל6
ניהול זיכרון7
זיכרון וירטואלי ומדיניות ניהול זיכרון וירטואלי8
ניהול מערכת הקבצים9 ניהול מערכת קבצים מבוזרת10 מערכת שרת לקוח11 מכונה וירטואלית12
Shayke Bilu PhD
תקשורת בין תהליכיםbull
תקשורת ישירה ותקשורת עקיפהbull
בעיית יצרן צרכן וטיפול במקטעים קריטייםbull
מניעה הדדיתbull
הגדרה ושימוש סמפוריםbull
תיאום בין תהליכיםbull
שימוש בפסיקות ומנעוליםbull
IPC הוא מנגנון שבו התהליכים יכולים לתקשר
את הפעולות שלהם ללא משתנים משותפים ולתאם
העברת הודעות ביניהםבאמצעות
תקשורת בין תהליכיםסוגי
לסווג את התקשורת בין תהליכים לשני סוגים ניתן
ישירה תקשורת
תקשורת עקיפה
Chapter 4 - Processes Communication 3
Shayke Bilu PhD
העוברות במערכת ישנם הרבה בעיות שיש להודעות ובעיות תכנון במיוחד אם התהליכים אתגרבהן
הם במחשבים שונים המקושרים ברשתהמקושרים
דוגמאהודעות יכולות ללכת לאיבוד ברשת השולח והמקבל כדי לשמור שהודעות לא יאבדו
המקבל ישלח מתקבלתלהסכים שכשההודעה יכולים חזרה הודעת אישור מיוחדת
בזמן קבוע אם השולח לא קיבל את הודעת האישור הוא ישלח את ההודעה שוב כלשהו
Chapter 4 - Processes Communication 4
Shayke Bilu PhD
נניח שההודעה שנשלחה הגיעה בשלמותה ליעדכעת אבדההאישור אולם הודעת
והמקבל יקבל אותה ישלח שוב את ההודעההשולח פעמיים
אז שהמקבל יוכל להבחין בין הודעה חדשה לבין חיוני ישנה
כלל בעיה זו נפתרת על ידי מספור ההודעות בדרך רציפיםבמספרים
אותו רצף מספרים כמו עם המקבל מקבל הודעה אםויש להתעלם יודע שזהו העתקהוא בהודעה הקודמת
ממנה
Chapter 4 - Processes Communication 5
Shayke Bilu PhD
מספק שתי שגרות IPC-ה
שגרת שליחת הודעה send (P message) ndash שלח הודעה לתהליךP שגרת קבלת הודעה
receive(Q message) ndash קבל הודעה מתהליךQ אם אין אף הודעה המקלט יכול להיחסם עד שמתקבלת הודעה
רוצים לתקשר ביניהם הם צריכים Q-ו Pאם שני תהליכים ליצור ערוץ תקשורת ביניהם -
( ערוץ התקשורת יכול להיות פיזי או לוגי ) sendreceiveהודעות דרך להעביר -
Chapter 4 - Processes Communication 6
Shayke Bilu PhD
כך מערכת הודעות צריכה להתמודד עם שאלת שמות התהליכיםודו בברור RECEIVEאו SENDשתהליך יצוין בקריאת
משמעות תמנע לעיתים קרובות משתמשים בשמות כגון
processmachine אוmachineprocess יכול לקרות ואין שליטה על מתן השמות למחשבים מספר המחשבים גדול מאודאם
בעיה של דו משמעות יכולה ארגונים יקראו למחשבים שלהם בשם זההששני
להתעורר הפתרון לבעיה על ידי חלוקת המחשבים לשטחי פעולה מזהים
(domain )ולקרוא למחשבים processmachinedomain
בתנאי שהם נמצאים בתחום שונה לא תתעורר בעיה אם לשני מחשבים יש שם זההכך
Chapter 4 - Processes Communication 7
Shayke Bilu PhD
הערוץ נוצר באופן אוטומטיbull
הערוץ נוצר בין שני תהליכים בלבדbull
בין כל זוג תהליכים קיים רק ערוץ תקשורת אחדbull
הערוץ יכול להיות חד כיווני אבל בדרך כלל הוא דו bull
כיווני
Chapter 4 - Processes Communication 8
Shayke Bilu PhD
בצורת תקשורת ישירה בין תהליכים קיימים שני
חסרונות עיקריים
זו מוגבלת לשני תהליכים בלבדתקשורת -
קיימת תלות ישירה בין התהליכים-
Chapter 4 - Processes Communication 9
Shayke Bilu PhD
תקשורת זו ניתן לפתור את החסרונות שקיימים בצורת בתקשורת ישירה
מס שיטות למימוש תקשורת עקיפה בין קיימות תהליכים BUFFERSשימוש בחוצצים -
MAILBOXתיבות דואר -
Chapter 4 - Processes Communication 10
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
תקשורת בין תהליכיםbull
תקשורת ישירה ותקשורת עקיפהbull
בעיית יצרן צרכן וטיפול במקטעים קריטייםbull
מניעה הדדיתbull
הגדרה ושימוש סמפוריםbull
תיאום בין תהליכיםbull
שימוש בפסיקות ומנעוליםbull
IPC הוא מנגנון שבו התהליכים יכולים לתקשר
את הפעולות שלהם ללא משתנים משותפים ולתאם
העברת הודעות ביניהםבאמצעות
תקשורת בין תהליכיםסוגי
לסווג את התקשורת בין תהליכים לשני סוגים ניתן
ישירה תקשורת
תקשורת עקיפה
Chapter 4 - Processes Communication 3
Shayke Bilu PhD
העוברות במערכת ישנם הרבה בעיות שיש להודעות ובעיות תכנון במיוחד אם התהליכים אתגרבהן
הם במחשבים שונים המקושרים ברשתהמקושרים
דוגמאהודעות יכולות ללכת לאיבוד ברשת השולח והמקבל כדי לשמור שהודעות לא יאבדו
המקבל ישלח מתקבלתלהסכים שכשההודעה יכולים חזרה הודעת אישור מיוחדת
בזמן קבוע אם השולח לא קיבל את הודעת האישור הוא ישלח את ההודעה שוב כלשהו
Chapter 4 - Processes Communication 4
Shayke Bilu PhD
נניח שההודעה שנשלחה הגיעה בשלמותה ליעדכעת אבדההאישור אולם הודעת
והמקבל יקבל אותה ישלח שוב את ההודעההשולח פעמיים
אז שהמקבל יוכל להבחין בין הודעה חדשה לבין חיוני ישנה
כלל בעיה זו נפתרת על ידי מספור ההודעות בדרך רציפיםבמספרים
אותו רצף מספרים כמו עם המקבל מקבל הודעה אםויש להתעלם יודע שזהו העתקהוא בהודעה הקודמת
ממנה
Chapter 4 - Processes Communication 5
Shayke Bilu PhD
מספק שתי שגרות IPC-ה
שגרת שליחת הודעה send (P message) ndash שלח הודעה לתהליךP שגרת קבלת הודעה
receive(Q message) ndash קבל הודעה מתהליךQ אם אין אף הודעה המקלט יכול להיחסם עד שמתקבלת הודעה
רוצים לתקשר ביניהם הם צריכים Q-ו Pאם שני תהליכים ליצור ערוץ תקשורת ביניהם -
( ערוץ התקשורת יכול להיות פיזי או לוגי ) sendreceiveהודעות דרך להעביר -
Chapter 4 - Processes Communication 6
Shayke Bilu PhD
כך מערכת הודעות צריכה להתמודד עם שאלת שמות התהליכיםודו בברור RECEIVEאו SENDשתהליך יצוין בקריאת
משמעות תמנע לעיתים קרובות משתמשים בשמות כגון
processmachine אוmachineprocess יכול לקרות ואין שליטה על מתן השמות למחשבים מספר המחשבים גדול מאודאם
בעיה של דו משמעות יכולה ארגונים יקראו למחשבים שלהם בשם זההששני
להתעורר הפתרון לבעיה על ידי חלוקת המחשבים לשטחי פעולה מזהים
(domain )ולקרוא למחשבים processmachinedomain
בתנאי שהם נמצאים בתחום שונה לא תתעורר בעיה אם לשני מחשבים יש שם זההכך
Chapter 4 - Processes Communication 7
Shayke Bilu PhD
הערוץ נוצר באופן אוטומטיbull
הערוץ נוצר בין שני תהליכים בלבדbull
בין כל זוג תהליכים קיים רק ערוץ תקשורת אחדbull
הערוץ יכול להיות חד כיווני אבל בדרך כלל הוא דו bull
כיווני
Chapter 4 - Processes Communication 8
Shayke Bilu PhD
בצורת תקשורת ישירה בין תהליכים קיימים שני
חסרונות עיקריים
זו מוגבלת לשני תהליכים בלבדתקשורת -
קיימת תלות ישירה בין התהליכים-
Chapter 4 - Processes Communication 9
Shayke Bilu PhD
תקשורת זו ניתן לפתור את החסרונות שקיימים בצורת בתקשורת ישירה
מס שיטות למימוש תקשורת עקיפה בין קיימות תהליכים BUFFERSשימוש בחוצצים -
MAILBOXתיבות דואר -
Chapter 4 - Processes Communication 10
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
IPC הוא מנגנון שבו התהליכים יכולים לתקשר
את הפעולות שלהם ללא משתנים משותפים ולתאם
העברת הודעות ביניהםבאמצעות
תקשורת בין תהליכיםסוגי
לסווג את התקשורת בין תהליכים לשני סוגים ניתן
ישירה תקשורת
תקשורת עקיפה
Chapter 4 - Processes Communication 3
Shayke Bilu PhD
העוברות במערכת ישנם הרבה בעיות שיש להודעות ובעיות תכנון במיוחד אם התהליכים אתגרבהן
הם במחשבים שונים המקושרים ברשתהמקושרים
דוגמאהודעות יכולות ללכת לאיבוד ברשת השולח והמקבל כדי לשמור שהודעות לא יאבדו
המקבל ישלח מתקבלתלהסכים שכשההודעה יכולים חזרה הודעת אישור מיוחדת
בזמן קבוע אם השולח לא קיבל את הודעת האישור הוא ישלח את ההודעה שוב כלשהו
Chapter 4 - Processes Communication 4
Shayke Bilu PhD
נניח שההודעה שנשלחה הגיעה בשלמותה ליעדכעת אבדההאישור אולם הודעת
והמקבל יקבל אותה ישלח שוב את ההודעההשולח פעמיים
אז שהמקבל יוכל להבחין בין הודעה חדשה לבין חיוני ישנה
כלל בעיה זו נפתרת על ידי מספור ההודעות בדרך רציפיםבמספרים
אותו רצף מספרים כמו עם המקבל מקבל הודעה אםויש להתעלם יודע שזהו העתקהוא בהודעה הקודמת
ממנה
Chapter 4 - Processes Communication 5
Shayke Bilu PhD
מספק שתי שגרות IPC-ה
שגרת שליחת הודעה send (P message) ndash שלח הודעה לתהליךP שגרת קבלת הודעה
receive(Q message) ndash קבל הודעה מתהליךQ אם אין אף הודעה המקלט יכול להיחסם עד שמתקבלת הודעה
רוצים לתקשר ביניהם הם צריכים Q-ו Pאם שני תהליכים ליצור ערוץ תקשורת ביניהם -
( ערוץ התקשורת יכול להיות פיזי או לוגי ) sendreceiveהודעות דרך להעביר -
Chapter 4 - Processes Communication 6
Shayke Bilu PhD
כך מערכת הודעות צריכה להתמודד עם שאלת שמות התהליכיםודו בברור RECEIVEאו SENDשתהליך יצוין בקריאת
משמעות תמנע לעיתים קרובות משתמשים בשמות כגון
processmachine אוmachineprocess יכול לקרות ואין שליטה על מתן השמות למחשבים מספר המחשבים גדול מאודאם
בעיה של דו משמעות יכולה ארגונים יקראו למחשבים שלהם בשם זההששני
להתעורר הפתרון לבעיה על ידי חלוקת המחשבים לשטחי פעולה מזהים
(domain )ולקרוא למחשבים processmachinedomain
בתנאי שהם נמצאים בתחום שונה לא תתעורר בעיה אם לשני מחשבים יש שם זההכך
Chapter 4 - Processes Communication 7
Shayke Bilu PhD
הערוץ נוצר באופן אוטומטיbull
הערוץ נוצר בין שני תהליכים בלבדbull
בין כל זוג תהליכים קיים רק ערוץ תקשורת אחדbull
הערוץ יכול להיות חד כיווני אבל בדרך כלל הוא דו bull
כיווני
Chapter 4 - Processes Communication 8
Shayke Bilu PhD
בצורת תקשורת ישירה בין תהליכים קיימים שני
חסרונות עיקריים
זו מוגבלת לשני תהליכים בלבדתקשורת -
קיימת תלות ישירה בין התהליכים-
Chapter 4 - Processes Communication 9
Shayke Bilu PhD
תקשורת זו ניתן לפתור את החסרונות שקיימים בצורת בתקשורת ישירה
מס שיטות למימוש תקשורת עקיפה בין קיימות תהליכים BUFFERSשימוש בחוצצים -
MAILBOXתיבות דואר -
Chapter 4 - Processes Communication 10
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
העוברות במערכת ישנם הרבה בעיות שיש להודעות ובעיות תכנון במיוחד אם התהליכים אתגרבהן
הם במחשבים שונים המקושרים ברשתהמקושרים
דוגמאהודעות יכולות ללכת לאיבוד ברשת השולח והמקבל כדי לשמור שהודעות לא יאבדו
המקבל ישלח מתקבלתלהסכים שכשההודעה יכולים חזרה הודעת אישור מיוחדת
בזמן קבוע אם השולח לא קיבל את הודעת האישור הוא ישלח את ההודעה שוב כלשהו
Chapter 4 - Processes Communication 4
Shayke Bilu PhD
נניח שההודעה שנשלחה הגיעה בשלמותה ליעדכעת אבדההאישור אולם הודעת
והמקבל יקבל אותה ישלח שוב את ההודעההשולח פעמיים
אז שהמקבל יוכל להבחין בין הודעה חדשה לבין חיוני ישנה
כלל בעיה זו נפתרת על ידי מספור ההודעות בדרך רציפיםבמספרים
אותו רצף מספרים כמו עם המקבל מקבל הודעה אםויש להתעלם יודע שזהו העתקהוא בהודעה הקודמת
ממנה
Chapter 4 - Processes Communication 5
Shayke Bilu PhD
מספק שתי שגרות IPC-ה
שגרת שליחת הודעה send (P message) ndash שלח הודעה לתהליךP שגרת קבלת הודעה
receive(Q message) ndash קבל הודעה מתהליךQ אם אין אף הודעה המקלט יכול להיחסם עד שמתקבלת הודעה
רוצים לתקשר ביניהם הם צריכים Q-ו Pאם שני תהליכים ליצור ערוץ תקשורת ביניהם -
( ערוץ התקשורת יכול להיות פיזי או לוגי ) sendreceiveהודעות דרך להעביר -
Chapter 4 - Processes Communication 6
Shayke Bilu PhD
כך מערכת הודעות צריכה להתמודד עם שאלת שמות התהליכיםודו בברור RECEIVEאו SENDשתהליך יצוין בקריאת
משמעות תמנע לעיתים קרובות משתמשים בשמות כגון
processmachine אוmachineprocess יכול לקרות ואין שליטה על מתן השמות למחשבים מספר המחשבים גדול מאודאם
בעיה של דו משמעות יכולה ארגונים יקראו למחשבים שלהם בשם זההששני
להתעורר הפתרון לבעיה על ידי חלוקת המחשבים לשטחי פעולה מזהים
(domain )ולקרוא למחשבים processmachinedomain
בתנאי שהם נמצאים בתחום שונה לא תתעורר בעיה אם לשני מחשבים יש שם זההכך
Chapter 4 - Processes Communication 7
Shayke Bilu PhD
הערוץ נוצר באופן אוטומטיbull
הערוץ נוצר בין שני תהליכים בלבדbull
בין כל זוג תהליכים קיים רק ערוץ תקשורת אחדbull
הערוץ יכול להיות חד כיווני אבל בדרך כלל הוא דו bull
כיווני
Chapter 4 - Processes Communication 8
Shayke Bilu PhD
בצורת תקשורת ישירה בין תהליכים קיימים שני
חסרונות עיקריים
זו מוגבלת לשני תהליכים בלבדתקשורת -
קיימת תלות ישירה בין התהליכים-
Chapter 4 - Processes Communication 9
Shayke Bilu PhD
תקשורת זו ניתן לפתור את החסרונות שקיימים בצורת בתקשורת ישירה
מס שיטות למימוש תקשורת עקיפה בין קיימות תהליכים BUFFERSשימוש בחוצצים -
MAILBOXתיבות דואר -
Chapter 4 - Processes Communication 10
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
נניח שההודעה שנשלחה הגיעה בשלמותה ליעדכעת אבדההאישור אולם הודעת
והמקבל יקבל אותה ישלח שוב את ההודעההשולח פעמיים
אז שהמקבל יוכל להבחין בין הודעה חדשה לבין חיוני ישנה
כלל בעיה זו נפתרת על ידי מספור ההודעות בדרך רציפיםבמספרים
אותו רצף מספרים כמו עם המקבל מקבל הודעה אםויש להתעלם יודע שזהו העתקהוא בהודעה הקודמת
ממנה
Chapter 4 - Processes Communication 5
Shayke Bilu PhD
מספק שתי שגרות IPC-ה
שגרת שליחת הודעה send (P message) ndash שלח הודעה לתהליךP שגרת קבלת הודעה
receive(Q message) ndash קבל הודעה מתהליךQ אם אין אף הודעה המקלט יכול להיחסם עד שמתקבלת הודעה
רוצים לתקשר ביניהם הם צריכים Q-ו Pאם שני תהליכים ליצור ערוץ תקשורת ביניהם -
( ערוץ התקשורת יכול להיות פיזי או לוגי ) sendreceiveהודעות דרך להעביר -
Chapter 4 - Processes Communication 6
Shayke Bilu PhD
כך מערכת הודעות צריכה להתמודד עם שאלת שמות התהליכיםודו בברור RECEIVEאו SENDשתהליך יצוין בקריאת
משמעות תמנע לעיתים קרובות משתמשים בשמות כגון
processmachine אוmachineprocess יכול לקרות ואין שליטה על מתן השמות למחשבים מספר המחשבים גדול מאודאם
בעיה של דו משמעות יכולה ארגונים יקראו למחשבים שלהם בשם זההששני
להתעורר הפתרון לבעיה על ידי חלוקת המחשבים לשטחי פעולה מזהים
(domain )ולקרוא למחשבים processmachinedomain
בתנאי שהם נמצאים בתחום שונה לא תתעורר בעיה אם לשני מחשבים יש שם זההכך
Chapter 4 - Processes Communication 7
Shayke Bilu PhD
הערוץ נוצר באופן אוטומטיbull
הערוץ נוצר בין שני תהליכים בלבדbull
בין כל זוג תהליכים קיים רק ערוץ תקשורת אחדbull
הערוץ יכול להיות חד כיווני אבל בדרך כלל הוא דו bull
כיווני
Chapter 4 - Processes Communication 8
Shayke Bilu PhD
בצורת תקשורת ישירה בין תהליכים קיימים שני
חסרונות עיקריים
זו מוגבלת לשני תהליכים בלבדתקשורת -
קיימת תלות ישירה בין התהליכים-
Chapter 4 - Processes Communication 9
Shayke Bilu PhD
תקשורת זו ניתן לפתור את החסרונות שקיימים בצורת בתקשורת ישירה
מס שיטות למימוש תקשורת עקיפה בין קיימות תהליכים BUFFERSשימוש בחוצצים -
MAILBOXתיבות דואר -
Chapter 4 - Processes Communication 10
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
מספק שתי שגרות IPC-ה
שגרת שליחת הודעה send (P message) ndash שלח הודעה לתהליךP שגרת קבלת הודעה
receive(Q message) ndash קבל הודעה מתהליךQ אם אין אף הודעה המקלט יכול להיחסם עד שמתקבלת הודעה
רוצים לתקשר ביניהם הם צריכים Q-ו Pאם שני תהליכים ליצור ערוץ תקשורת ביניהם -
( ערוץ התקשורת יכול להיות פיזי או לוגי ) sendreceiveהודעות דרך להעביר -
Chapter 4 - Processes Communication 6
Shayke Bilu PhD
כך מערכת הודעות צריכה להתמודד עם שאלת שמות התהליכיםודו בברור RECEIVEאו SENDשתהליך יצוין בקריאת
משמעות תמנע לעיתים קרובות משתמשים בשמות כגון
processmachine אוmachineprocess יכול לקרות ואין שליטה על מתן השמות למחשבים מספר המחשבים גדול מאודאם
בעיה של דו משמעות יכולה ארגונים יקראו למחשבים שלהם בשם זההששני
להתעורר הפתרון לבעיה על ידי חלוקת המחשבים לשטחי פעולה מזהים
(domain )ולקרוא למחשבים processmachinedomain
בתנאי שהם נמצאים בתחום שונה לא תתעורר בעיה אם לשני מחשבים יש שם זההכך
Chapter 4 - Processes Communication 7
Shayke Bilu PhD
הערוץ נוצר באופן אוטומטיbull
הערוץ נוצר בין שני תהליכים בלבדbull
בין כל זוג תהליכים קיים רק ערוץ תקשורת אחדbull
הערוץ יכול להיות חד כיווני אבל בדרך כלל הוא דו bull
כיווני
Chapter 4 - Processes Communication 8
Shayke Bilu PhD
בצורת תקשורת ישירה בין תהליכים קיימים שני
חסרונות עיקריים
זו מוגבלת לשני תהליכים בלבדתקשורת -
קיימת תלות ישירה בין התהליכים-
Chapter 4 - Processes Communication 9
Shayke Bilu PhD
תקשורת זו ניתן לפתור את החסרונות שקיימים בצורת בתקשורת ישירה
מס שיטות למימוש תקשורת עקיפה בין קיימות תהליכים BUFFERSשימוש בחוצצים -
MAILBOXתיבות דואר -
Chapter 4 - Processes Communication 10
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
כך מערכת הודעות צריכה להתמודד עם שאלת שמות התהליכיםודו בברור RECEIVEאו SENDשתהליך יצוין בקריאת
משמעות תמנע לעיתים קרובות משתמשים בשמות כגון
processmachine אוmachineprocess יכול לקרות ואין שליטה על מתן השמות למחשבים מספר המחשבים גדול מאודאם
בעיה של דו משמעות יכולה ארגונים יקראו למחשבים שלהם בשם זההששני
להתעורר הפתרון לבעיה על ידי חלוקת המחשבים לשטחי פעולה מזהים
(domain )ולקרוא למחשבים processmachinedomain
בתנאי שהם נמצאים בתחום שונה לא תתעורר בעיה אם לשני מחשבים יש שם זההכך
Chapter 4 - Processes Communication 7
Shayke Bilu PhD
הערוץ נוצר באופן אוטומטיbull
הערוץ נוצר בין שני תהליכים בלבדbull
בין כל זוג תהליכים קיים רק ערוץ תקשורת אחדbull
הערוץ יכול להיות חד כיווני אבל בדרך כלל הוא דו bull
כיווני
Chapter 4 - Processes Communication 8
Shayke Bilu PhD
בצורת תקשורת ישירה בין תהליכים קיימים שני
חסרונות עיקריים
זו מוגבלת לשני תהליכים בלבדתקשורת -
קיימת תלות ישירה בין התהליכים-
Chapter 4 - Processes Communication 9
Shayke Bilu PhD
תקשורת זו ניתן לפתור את החסרונות שקיימים בצורת בתקשורת ישירה
מס שיטות למימוש תקשורת עקיפה בין קיימות תהליכים BUFFERSשימוש בחוצצים -
MAILBOXתיבות דואר -
Chapter 4 - Processes Communication 10
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
הערוץ נוצר באופן אוטומטיbull
הערוץ נוצר בין שני תהליכים בלבדbull
בין כל זוג תהליכים קיים רק ערוץ תקשורת אחדbull
הערוץ יכול להיות חד כיווני אבל בדרך כלל הוא דו bull
כיווני
Chapter 4 - Processes Communication 8
Shayke Bilu PhD
בצורת תקשורת ישירה בין תהליכים קיימים שני
חסרונות עיקריים
זו מוגבלת לשני תהליכים בלבדתקשורת -
קיימת תלות ישירה בין התהליכים-
Chapter 4 - Processes Communication 9
Shayke Bilu PhD
תקשורת זו ניתן לפתור את החסרונות שקיימים בצורת בתקשורת ישירה
מס שיטות למימוש תקשורת עקיפה בין קיימות תהליכים BUFFERSשימוש בחוצצים -
MAILBOXתיבות דואר -
Chapter 4 - Processes Communication 10
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
בצורת תקשורת ישירה בין תהליכים קיימים שני
חסרונות עיקריים
זו מוגבלת לשני תהליכים בלבדתקשורת -
קיימת תלות ישירה בין התהליכים-
Chapter 4 - Processes Communication 9
Shayke Bilu PhD
תקשורת זו ניתן לפתור את החסרונות שקיימים בצורת בתקשורת ישירה
מס שיטות למימוש תקשורת עקיפה בין קיימות תהליכים BUFFERSשימוש בחוצצים -
MAILBOXתיבות דואר -
Chapter 4 - Processes Communication 10
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
תקשורת זו ניתן לפתור את החסרונות שקיימים בצורת בתקשורת ישירה
מס שיטות למימוש תקשורת עקיפה בין קיימות תהליכים BUFFERSשימוש בחוצצים -
MAILBOXתיבות דואר -
Chapter 4 - Processes Communication 10
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
בעיית זמן ביצוע העתקת הודעות מתהליך אחד למשנהו תמיד איטית
על צרכן-באלגוריתם היצרןפתרון לבעיה הוא שימוש ידי שימוש בהעברת הודעות בשטח זיכרון משותף
חריצים שהיו N-אנלוגיה ל)הודעות Nניתן להעביר זהבפתרון
( המשותףבחוצץ הזיכרון הודעות ריקות ליצרן Nמתחיל על ידי שליחת הצרכן
הוא לוקח הודעה פעם שליצרן יש פריט להעביר לצרכןבכל חזרה מלאהריקה ושולח אותה
Chapter 4 - Processes Communication 11
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
סך כל ההודעות נשאר קבוע כל הזמן כך שניתן זובדרך בגודל מסוים של זיכרוןלאחסנם
כל ההודעות יסתיימו היצרן פועל מהר יותר מהצרכןאם היצרן יחסם כשהוא ממתין להודעה וממתינות לצרכןכמלאות
שתגיעריקה כל ההודעות יהיו אזי קורה ההפך הצרכן פועל מהר יותראם
אזי יחסם הצרכן עד כשהוא וימתינו ליצרן שימלא אותןריקות להודעה מלאהממתין
עבודה עם חוצצים מורידה את התלות אך מאפשרת תקשורת
בין שני תהליכים בלבד
Chapter 4 - Processes Communication 12
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
יצירת סגמנט משותף בעזרת פקודה Sigrid=shmget(IPC_PRIVATEsizeS_IWUSR|S_IWUSR)
פקודהצרוף הסגמנט הנוצר אל התהליך בעזרת Shared_memory=(char)shmat (seg_idNULL0)
י פקודה ניתן לכתוב בזיכרון שנוצר ע
Sprintf(shared_memoryrdquoHi thererdquo( להדפיס את ההודעה ניתן
Printf)ldquosrdquoShared_memory) להפריד את הסגמנטניתן
Shmdt(Shared_memory) ולבסוף ניתן להסיר את הסגמנט מהזיכרון
bull Shmctl(seg_idIPC_RMIDNULL)
Chapter 4 - Processes Communication 13
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
תא דואר הוא מקום לאחסון מספר מסוים של הודעות מופנות או מתקבלות מתאי דואר הודעות(ports)
ייחודי IDבעל portכל bull
תהליכים יכולים לתקשר רק אם הם בעלי תאי דואר משותפיםbull
תכונות ערוץ התקשורת
תקשורת נוצרת רק אם לתהליכים יש תיבת דואר משותפתbull
קשר יכול לשרת הרבה תהליכיםbull
כל זוג תהליכים יכולים להיות בעלי ערוצי תקשורת רביםbull
ערוץ תקשורת יכול להיות דו כיווני או חד כיווניbull
Chapter 4 - Processes Communication 14
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
פעולות השליחה והקבלה מוגדרות באופן הבא שליחת הודעה
send(A message) A לשלוח הודעה לתיבת דואר
קבלת הודעה receive(A message)
לקבל הודעה מתיבת דואר
תהליך ביצוע התקשורת מכיל את השלבים הבאים
יצירת תיבת דוארbull לשלוח ולקבל הודעות דרך תיבת הדוארbull לסגור את תיבת הדוארbull
Chapter 4 - Processes Communication 15
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
שיתוף תאי דואר מאפשר ליותר משני תהליכים
ביניהםלתקשר
לדוגמא
bullP1 P2P3 משתפים תא דוארA
bullP1 שולח P2 ו-P3 מקבלים
מי מקבל את ההודעה
Chapter 4 - Processes Communication 16
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
פתרון
רק לזוג תהליכים ליצור קשרלאפשר bull
-receiveרק לתהליך אחד פעולת קבלה לאפשר bull
למערכת לבחור בצורה אקראית את המקבללאפשר bull
השולח מקבל הודעה מי קיבל
Chapter 4 - Processes Communication 17
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
הבעלים של התא יכול להיות תהליך או מערכת
ההפעלה
היחיד שיכול לקבל הוא הבעלים אבל הוא המקבל bull
יכול להעביר הרשאות קבלה גם לאחרים
תהליך מסתיים התא נסגר וצריך להודיע על כאשר bull
כך
Chapter 4 - Processes Communication 18
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
הודעות העוברות יכולות להיות משני סוגים
חוסמים או לא חוסמים
נחשבים סינכרוניים חוסמים
שולח חוסם השולח חסום עד שההודעה נתקבלהbull
מקבל חוסם המקבל חסום עד שההודעה התקבלהbull
נחשב לאסינכרוני לא חוסם
שולח לא חוסם השולח שולח את ההודעה וממשיךbull
nullמקבל לא חוסם מקבל הודעה או bull
Chapter 4 - Processes Communication
19 Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
תור של הודעות מוצמד לערוץ התקשורת והוא יכול
להיות ממומש באחד מהדרכים הבאות
השולח חייב לחסום הודעות בתור 0 ndash 0קיבולת 1
עד שההודעה תעבור
הודעות nאורך מוגדר של ndashקיבולת מוגבלת 2
השולח חייב לחכות עם התור מלא
ndashאורך התור אין סופי ndashקיבולת לא מוגבלת 3
השולח אינו ממתין אף פעם
Chapter 4 - Processes Communication 20
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
השולח הוא נושא חשוב במערכת הודעותזיהוי
יכול לקוח לדעת שהוא מקושר לשרת שהוא צריך איך
מקושר אליו ולא למתחזהלהיות
יכול שרת לדעת איזה לקוח ביקש את הבקשהאיך
של הצמדת קוד ייחודי להודעה הידוע רק הפתרון
מורשהלמשתמש
Chapter 4 - Processes Communication 21
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
ה- buffer הוא משתנה משותף לצרכן וליצרן
Chapter 4 - Processes Communication 22
Producer Process
תהליך יצרני
Consumer Process
תהליך צרכני
Produce
Put in buffer Consume
Get from buffer
BUFFER
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
זמן נקודת באותה יחד מתחילים התהליכים שני
ישן התחלתי בערך משתמש והצרכן
Chapter 4 - Processes Communication 23
3 instead of 2
Producer
Consum
er 1 2 c2
p1 p4 p3 p2 4 3 2 1
t
Buffer
c1
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
יתחיל מהתהליכים מי וקובע התזמון את מכוון
hellipהלאה וכך שני מי ראשון
יביאו שונים תהליכים שהרצת הסיכוי גדול תמיד
שונות תוצאות עם הסיום לנקודת אותם
Chapter 4 - Processes Communication 24
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
הקריטי המקטע
נגישות וקיימת משתנה התהליך שבו מהקוד החלק bull
משותפים למשתנים
(shared variables)
הדדית מניעה (Mutual Exclusion)
מספר או שאחד מבטיחה אשר מניעה של שיטה bull
קריטי במצב יםנמצא תהליכים
Chapter 4 - Processes Communication 25
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
כדי לקיים סנכרון בין ביצועי תהליכים במעבד
להחלפת מידע ונתונים ביניהם
למניעת ביצוע כפול של פרוצדורות פנימיות
עיבוד משימות לניצול יעיל יותר של משאבי מחשב
ושימוש בציוד היקפי
Chapter 4 - Processes Communication 26
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
קריטי למקטע זמן באותו תהליכים שני יכנסו לא 1
לגבי או התהליך מהירות לגבי הנחה לבצע אין 2
עבורו הנדרשות המרכזיות העיבוד יחידות מספר
נעילה יגרום לא הקריטי למקטע מחוץ תהליך 3
אחרים שכנים לתהליכים
למקטע לכניסה עד סוף אין עד ימתין לא תהליך 4
הקריטי
Chapter 4 - Processes Communication 27
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
דחייה של מוגדרת לא כבעיה גם ידועה הגדרה
העדפת כדי תוך תהליך של הזמנים לוח של מוגדרת לא דחייהbull פניו על אחר תהליך
סיבה ) ההפעלה מערכת של התזמון מדיניות של נטייה כלל בדרך bull
(שגוי תזמון אלגוריתם של בעיה
פתרון (rdquoמהירה הזדקנותldquo) הזמן הארכת של מסוימת צורה יישום bull
Chapter 4 - Processes Communication 28
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
וממתינים נעולים (יותר או) תהליכים שני bull
יתרחש לא שלעולם לאירוע
מה דבר לבצע B -ל ממתין A כללי באופן bull
A -ל ממתין B עת ובאותה
שני אזי דבר עושים אינם B -ו A שניהם bull
לעולם יתרחשו לא שלהם האירועים
Chapter 4 - Processes Communication 29
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
אפשרויות שלוש בתוכנית נטמעת אשר שיטה בונה מתכנת יישום1 המניעה ליישום מוקצה ייחודי חומרה ציוד חומרה2
ההדדית לשימוש ניתנים אשר שירותים מקצה הפעלה מערכת3
המתכנת יrdquoע עבור מסוים קוד על מבוססות השיטות כל
קריטיים למקטעים כניסהbull קריטיים ממקטעים יציאהbull הקריטיים המקטעים על סוגרות הפונקציות
Chapter 4 - Processes Communication 30
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
הם הדדית מניעה של יישומים
המתכנת יrdquoע ומבוצעים מתוכננים bull
שגיאות וללא ישים נכון לביצוע קשים bull
שבהם היעילות בחוסר ידועים bull
תפוס כrdquoבד שהמעבד כך על מבוססים אלה כל
בלולאה ממשיך הוא המעבד מצב את בודק תהליךbull
מצבו משנה כתפוס שהוגדר שהתהליך עד
Chapter 4 - Processes Communication 31
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
מודרניות הפעלה במערכות כלולה נכבדת התקדמות
כגון
Linux
Win8
MAC OS X
Android
הוא סמפור
שלילי שאינו שלם bull
ניתנות שאינן משמעות בעלות פעולות שתי לו יש bull
לחלוקהChapter 4 - Processes Communication
32 Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
נפוצים סמפורים סוגי שני קיימים
1 או 0 של מצבים לקבל שיכול בינארי סמפור bull
שלילי לא שלם משתנה כל לקבל שיכול מונה סמפור bull
מערכת יrdquoע הניתנים שירותים יישומי הם סמפורים
מכבר זה שהוצגו בשיטות המשתמשים ההפעלה
לפרקי פסיקות מצבי ומניעת פסילת יrdquoע כלל בדרך bull
מראש וקצובים קצרים זמן
Chapter 4 - Processes Communication 33
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
בתחילה ערכו של סמפור ה- mutex = 1
Chapter 4 - Processes Communication 34
Produce
Wait (mutex)
Put in buffer
Signal (mutex)
Wait (mutex)
Get from buffer
Signal (mutex)
Consume
CS
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
באופן והודעות נתונים מידע העברת מאפשרת
מסונכרן
הודעות הפעלת
הודעה ותוכן כתובתיעד מחייב - (Send) שלח bull
הודעה ותוכן כתובתמקור מחייב - (Receive) קבל bull
Chapter 4 - Processes Communication 35
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
שימוש בחומרה למימוש מנעולים
מנגנוני מערכת הפעלה לתיאום
סמפוריםמימוש משתני תנאי סמפורים
מנגנון תיאום וניהול
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 37
lock_acquire(L)
disableInterrupts()
while LFREE do
enableInterrupts()
disableInterrupts()
L = BUSY
enableInterrupts()
lock_release(L)
L = FREE
חסימת פסיקות מונעת החלפת
חוטים ומבטיחה פעולה אטומית
על המנעול
למה מאפשרים פסיקות בתוך
הלולאה
queue lock מונעbusy wait
באמצעות ניהול תור של החוטים
המחכים
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 38
בעיות במערכת עם מעבד יחיד
תוכנית מתרסקת כאשר הפסיקות חסומותbull
פסיקות חשובות הולכות לאיבודbull
גורם להרעת ביצועים IOעיכוב בטיפול בפסיקות bull
לא די בחסימת פסיקות במערכות עם כמה מעבדים
(על מעבדים שונים)זמנית -חוטים יכולים לרוץ בוbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 39
bullL = false ndash מנעול פנוי
bullL = true ndash מנעול תפוס
lock_acquire(L)
while
testampset(L)
do nop
lock_release(L)
L = false
testampset(boolvar)
boolvar-ל trueכתוב bull
והחזר ערך קודם
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 40
compareampswap(mem R1 R2)
כתוב את הערך R1ערך זהה לרגיסטר memאם בכתובת הזיכרון bull
הצלחהוהחזר R2אשר ברגיסטר
כישלוןאחרת החזר bull
IA32 Sunנתמך בהרבה ארכיטקטורות
load-linked store conditional bullLL(mem) ndash קרא את הערך בכתובת הזיכרוןmem bullSC(mem val) ndash כתיבה ל היתהאם לא-mem מאז ה-
LL(mem) כתוב ערך האחרון שלךval ל-mem הצלחהוהחזר (כשלוןאחרת )
90-נתמך בארכיטקטורות החל משנות ה bullHPrsquos Alpha IBMrsquos PowerPC MIPS4000
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 41
מימוש מנעול באמצעותbusy waiting (ידי גישה למשתנה-על)בדוק האם המנעול תפוס bull
בדוק שנית אם המנעול תפוסbull
חולים-גם בקופתbull
מאוד בזבזני cpuחוט שמגלה כי המנעול תפוס מבזבז זמן bull
בזמן הזה החוט שמחזיק במנעול לא יכול להתקדםbull
priority inversion כאשר לחוט הממתין עדיפות גבוהה
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 42
של החוטים הממתינים תור לנהל
נמצא במנגנוני תיאום עיליים
סמפוריםbull
משתני תנאיbull
מוניטורים
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 43
שני שדות
ערך שלםbull
תור של חוטים bull
ממתיניםתהליכים
[Dijkstra 1968]
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication
44
wait(semaphore)
1-מקטין את ערך המונה בbull
ממתינים עד שערכו של bull
אינו שלילי הסמפור
P() probenנקרא גם bull
signal(semaphore)
1-מגדיל את ערך המונה בbull
משחרר את אחד הממתיניםbull
V() verhogenנקרא גם bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 45
יבינארסמפור
זה גם הערך המקסימאלי 1=ערך התחלתי bull
(בדומה למנעול)מאפשר גישה בלעדית למשאב bull
מונהסמפור
Ngt0ערך התחלתי bull
עותקים זהים Nשולט על משאב עם bull
כל עוד יש עותק פנוי של בסמפור ()waitחוט יכול לעבור bull
המשאב
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 46
שני חוטים רצים באותו מרחב זיכרון
(משימות למשל)מיצר אלמנטים לטיפול היצרןbull
(מבצע את המשימות למשל)מטפל באלמנטים הצרכןbull
מכיל את העצמים המיוצרים( מעגלי) חסוםמערך
0 n-1
cp pp
c
המקום הפנוי הבא האלמנט המוכן הבא
מספר האלמנטים המוכנים
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 47
global variable
int c = 0
Producer
repeat
wait until (c lt n)
buff[pp] = new item
pp = (pp+1) mod n
c = c + 1
until false
Consumer
repeat
wait until (c ge 1)
consume buff[cp]
cp = (cp+1) mod n
c = c - 1
until false
c-זמנית ל-ואם ניגשים בו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 48
semaphore freeSpace
initially n
Semaphore availItems
intiailly 0
Producer
repeat
wait( freeSpace)
buff[pp] = new item
pp = (pp+1) mod n
signal( availItems)
until false
מספר המקומות הפנויים
מספר האיברים המוכנים
Consumer
repeat
wait( availItems)
consume buff[cp]
cp = (cp+1) mod n
signal( freeSpace)
until false
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 49
כותביםוחוטים קוראיםחוטים
זמנית-מספר חוטים יכולים לקרוא בו
או אסור שחוטים אחרים יכתבו ו כאשר חוט כותב
יקראו
טבלת גישהReader Writer
Reader
Writer
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 50
int r = 0 semaphore sRead initially 1 semaphore sWrite initially 1 Writer wait(sWrite) [Write] signal(sWrite)
מונה מספר הקוראים מגן על מונה מספר הקוראים
מניעה הדדית בין קוראים לבין כותבים
(ובין כותבים לעצמם)Reader wait(sRead) r=r+1 if r=1 then wait(sWrite)
signal( sRead) [Read] wait( sRead) r=r-1 if r=0 then signal(sWrite)
signal( sRead)
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 51
struct semaphore_t
int value
queue waitQ
void wait(semaphore_t s)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
block
void signal(semaphore_t s)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 52
struct semaphore_t
int value
queue waitQ
lock_t l
void wait(semaphore_t s)
lock(amps-gtl)
s-gtvalue--
if (s-gtvalue lt 0)
enQ(self amps-
gtwaitQ)
unlock(amps-gtl)
block
else unlock(amps-gtl)
void signal(semaphore_t s)
lock(amps-gtl)
s-gtvalue++
if (s-gtvalue lt= 0)
P = deQ( amps-gtwaitQ)
wakeup(P)
unlock(amps-gtl)
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 53
לסמפורעל הגישה לתור השייך עדיין יש נעילה
עדיין ישbusy waiting
אבל הקטע הקריטי קצר
להוריד אלמנט מתור רק לשים bull
זמנית בשני הקצוות של -אפשר לתכנת כך שתהיה עבודה בוbull
ריק-תור לא
ההשלכות שלbusy-waiting מוקטנות
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 57
לא מפרידים נעילהbull
המתנהbull
ניהול משאביםbull
נקודות מפגש במשתני תנאי רעיון מודרני יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 58
wait(condamplock)
(חייב להחזיק בו)שחרר את המנעול bull
signalהמתן לפעולת bull
(כשחוזר מחזיק במנעול)המתן למנעול bull
signal(cond)
אשר עובר להמתין למנעול condהממתינים ל אחדהער את bull
הולך לאיבוד אם אין ממתיניםbull
broadcast(cond)
הער את כל התהליכים הממתיניםbull
עוברים להמתין למנעולbull
הולך לאיבוד אם אין ממתיניםbull
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 59
כאשר תהליך מקבלsignal הוא אינו מקבל את
ועדיין צריך לחכות להשגתו המנעול באופן אוטומטי
bullmesa-style
משתני תנאי הולכים נפלא עם מנעולים
bullwait(condamplock) קודם משחררת את המנעולlock
לסמפוריםבניגוד signal לא זוכר היסטוריה
bullsignal(cond) הולך לאיבוד אם אין ממתינים עלcond
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 60
lock QLock
condition notEmpty
Enqueue (item)
lock_acquire( QLock)
put item on queue
signal(notEmpty)
lock_release( QLock)
Dequeue (item)
lock_acquire( QLock)
while queue empty
wait(notEmpty ampQLock)
remove item from queue
lock_release( QLock)
ממתינים כאשר התור ריק נעילה להגן על הגישה לנתונים קטע קריטי קצר
משתנה תנאי מאפשר לחכות עד
מבלי לבצע שיתווסף איבר לתורbusy-wait
למה צריךwhile
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 61
condition not_full
not_empty
lock bLock
producer
lock_acquire(bLock)
while (buffer is full)
wait(not_fullampbLock)
add item to buffer
signal(not_empty)
lock_release(bLock)
consumer
lock_acquire(bLock)
while (buffer is empty)
wait(not_emptyampbLock)
get item from buffer
signal(not_full)
lock_release(bLock)
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 62
ההקשר המקורי של משתני תנאי[CAR Hoare 1974]
אובייקט(תכנות -במובן של שפתobject-oriented) הכולל
פרוצדורת אתחול וגישה
(מפורש-באופן לא)הגישה לאובייקט מקנה שליטה במנעול bull
משחררת את המנעול ומעבירה את השליטה בו signalשליחת bull
signalלמקבל ה
(Java ובראשן)תכנות מודרניות -נתמך בכמה שפותShayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 63
אובייקטים לתיאום
נמצאים בזיכרון המשותףbull
נגישים לחוטים של תהליכים שוניםbull
mutex locks (pthread_mutex_XXX)
init destroy השמדה יצירהbull
bulllock unlock trylock
condition variables (pthread_cond_XXX)
init destroy השמדה יצירהbull
bullwait signal broadcast
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 64
כל רכיב במערכת ההפעלה הוא אובייקט תיאום
או לשחררניתן להמתין וbull
אובייקטים מיוחדים
bullmutexndash מנעול הוגן
bullevent ndash עם אפשרות ל)משתנה תנאי-broadcast כדי להעיר
(את כל הממתינים
bullsemaphore ndash לא הוגן סמפור מונה
bullcritical section ndash light-weight mutex המיועד לחוטים
באותו תהליך
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 65
המדדים העיקריים הם קצר-עבור זימון טווח
(זמן ביצוע+ זמן המתנה )= מינימאלי זמן שהייה
מינימאלית תקורה
(trade-off)אפשר לנצח בשני המדדים -אי
לפעמים מעוניינים במטרות נוספות
כמה זמן המעבד פעיל של המעבד ניצול
תפוקה (throughput) כמה תהליכים מסתיימים בפרק
זמן
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 66
C תהליך עתיר חישובים
I1hellipIn תהליכים עתיריIO
מה קורה
תהליךC תופס את המעבד
מצטברים בתור המוכנים Ijתהליכי bull
פלט מובטלים התקני קלט bull
C
I4 I3 I2 I1
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 67
פי -על אומדן סטטיסטי של הזמן עד לוויתור על המעבד
הפעמים הקודמות שהתהליך החזיק במעבד
bulli ndash הערכת זמן הביצוע לסיבוב ה-i
bull ti ndash זמן הביצוע בפועל בסיבוב ה-i
לדוגמא
t0 = 1
= frac12
= frac34
iii tα)(τατ 11 10 α
0
05
1
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 68
לכל תהליך יש עדיפות התחלתית עדיפות התחלתית גבוהה ניתנת
שסיומם דחוף לתהליכים bull
אינטראקטיבייםלתהליכים bull
התהליך עם העדיפות הגבוהה ביותר מקבל את המעבד
bullSJF הוא זימון לפי עדיפויות כאשר העדיפות היא ההופכי של זמן הביצוע
של תהליכים עם עדיפות נמוכה הרעבה של תהליכים גורמת להגדלת ( זמן שהייה ארוך) הזדקנות
( selfish round-robinלדוגמא)העדיפות שלהם
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 69
קיימים מספר תורים לפי סדר עדיפות
תור גבוה לתהליכים בעלי עדיפות גבוהה יותרbull
לתורים הנמוכים מוקצה אחוז קטן יותר של זמן bull
מעבד
bullquantum גדול יותר לתורים נמוכים יותר
תהליך מתחיל בתור הגבוה ביותר
בסוף ה-quantum יורד לתור נמוך יותר
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 70
פ לעומת לתהליכים עתירי קאפליה מתקנת
חישוב-תהליכים עתירי
-quantumתהליך שמשחרר את המעבד לפני סוף הbull
חוזר לתור גבוה יותר (פלט בגלל פעולת קלט )
לפי השימוש במעבד עדיפויות דינמיות +
(עדיפות התחלתית)
מגדילה את העדיפות -המתנה ארוכה למעבד bull
מקטינה את העדיפות ndashריצה ארוכה במעבד bull
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 71
זימון לפי עדיפויות
עדיפות טובה יותר= עדיפות מספרית נמוכה
אקספונינציאליתחישוב העדיפות מתבסס על דעיכה
תהליך שהשתמש לא מזמן במעבד מקבל עדיפות גבוהה bull
(גרועה)
(משתפרת)עדיפותו של התהליך קטנה ככל שעובר הזמןbull
( פ עתירי ק )תהליכים שיוותרו מרצונם על המעבד
עתירי )יחזרו אליו מהר יותר מתהליכים שעברו הפקעה
(חישוב
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 72
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
Base priority of Process
User controlable adjustment factor
( ) Average processor utilization by
( ) Processor utilization of in interval
j
j
j
j
Base j
NICE
CPU i j
U i j i
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 73
ji היא -עדיפות תהליך בתחילת יחידת הזמן ה
1 1
2 2
( 1)( )
2
( ) ( ) ( 1)
j
j j j
j j j
CPU iP i Base NICE
CPU i U i CPU i
40
10
Base
NICE
0
10
20
30
40
50
60
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 74
גרסה נוספת של תורי עדיפויות נדון רק בזימון תהליכים רגילים
יתואר בתרגול( real time)אמת -זימון תהליכי זמןbull
בדומה ל-unix לכל תהליך יש עדיפות המורכבת בונוס דינמי+ מערך בסיס קבוע
המתכנת יכול לשנות את ערך הבסיס באמצעות קריאת bull ()niceהמערכת
עד לערך )הבונוס הדינמי גדל כשתהליך חוזר מהמתנה וקטן bull כאשר התהליך נמצא הרבה בטווח הקצר ( שלילי
פ צפוי לקבל עדיפות גבוהה יותר מתהליך תהליך עתיר ק עתיר חישוב בעל אותה עדיפות בסיס
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 75
תהליך מקבלtime slice שאורכו תלוי בעדיפות
הבסיס
ארוך יותר time sliceתהליך עדיף מקבל bull
תהליך משובץ לתור עדיפות בהתאם לערך הנוכחי של
עדיפותו הכוללת
תקופותזמן המעבד מחולק ל (epoch)
החל המערכת נותנת לכל התהליכים לרוץ בכל תקופהbull
מאלו הנמצאים בתור העדיפות הגבוה ביותר
שלו time slice-כל תהליך רץ עד סיום הbull
חדש עבור התקופה הבאה time sliceואז מקבל
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD
Chapter 4 - Processes Communication 76
אבל יכולים רוצים הרבה זמן מעבדחישוביים תהליכים bull
לחכות
מיידאבל רוצים מעט זמן מעבד אינטראקטיבייםתהליכים bull
רוצים לתת לתהליכים אינטראקטיביים כמה זמן
שנחוץ לריצה נוספת בתקופה הנוכחית time sliceמחדשים את ה bull
מאפיינים תהליך כאינטראקטיבי אם ממתין הרבה זמן
כחלק מזמן הריצה הכולל (בטווח הבינוני)מיוזמתו
שלו
Shayke Bilu PhD