Introduction to Operating Systems Chapter 4

73
Chapter 4 - Processes Communication 1 .1 מבוא למערכות הפעלה.2 תהליכים.3 תזמון תהליכים.4 תקשורת בין תהליכים פנימיים.5 נעילה( תקיעה) .6 תהליכים קלי משקל.7 ניהול זיכרון.8 זיכרון וירטואלי ומדיניות ניהול זיכרון וירטואלי.9 ניהול מערכת הקבצים.10 ניהול מערכת קבצים מבוזרת.11 מערכת שרת לקוח.12 מכונה וירטואליתShayke Bilu PhD

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