Presentation is loading. Please wait.

Presentation is loading. Please wait.

מערכות הפעלה ( אביב 2006) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות.

Similar presentations


Presentation on theme: "מערכות הפעלה ( אביב 2006) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות."— Presentation transcript:

1 מערכות הפעלה ( אביב 2006) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות

2 מערכות הפעלה ( אביב 2006) חגית עטיה ©2 עלות ריבוי תהליכים  תהליכים דורשים משאבי מערכת רבים מרחב כתובות, גישה לקלט / פלט (file table)...  זימון תהליכים הינו פעולה כבדה context switch לוקח הרבה זמן.  תקשורת בין תהליכים עוברת דרך מערכת ההפעלה מערכת ההפעלה שומרת על ה " שערים " בחומות שבנתה בין תהליכים שונים

3 מערכות הפעלה ( אביב 2006) חגית עטיה ©3 טבעי לי מקבילי... אך הרבה בעיות קל יותר לפתור באמצעות ריבוי תהליכים דוגמא א ', מעבד תמלילים : מציג פלט, ממתין לקלט מהמשתמש, בודק איות,... דוגמא ב ', שרת קבצים : ממתין לקבל בקשה כאשר מקבל בקשה, חייב להפסיק לחכות ולעבור לטפל בבקשה פתרון : לבצע fork תהליך הבן מטפל בבקשה שהגיעה האב ממשיך להמתין לבקשה זה פתרון לא - יעיל כי מחייב הקצאת מרחב כתובות, PCB...

4 מערכות הפעלה ( אביב 2006) חגית עטיה ©4 שומרי משקל  התהליכים שנוצרים לטיפול בבקשות דומים זה לזה : אותו קוד אותם משאבים ונתונים.  אבל לא זהים : מטפלים בבקשות שונות. נמצאים בשלבים שונים במהלך הטיפול. תהליכים - דייאט ( lightweight processes ) אשר משתפים מרחב כתובות, הרשאות ומשאבים

5 מערכות הפעלה ( אביב 2006) חגית עטיה ©5 תהליכים - דייאט = חוטים  חוט ( thread ) הינו יחידת ביצוע ( בקרה ) בתוך תהליך במערכות הפעלה קלאסיות " חוט " יחיד בכל תהליך במערכות הפעלה מודרניות תהליך הוא רק מיכל לחוטים  לכל חוט דרושים המשאבים : program counter מחסנית רגיסטרים נמצאים ב Thread Control Block (TCB) P1P1 P3P3 P2P2 P1P1 T1T1 T2T2 T3T3

6 מערכות הפעלה ( אביב 2006) חגית עטיה ©6 תזכורת : מרחב הכתובות של תהליך 0x00000000 0xFFFFFFFF address space code (text segment) static data (data segment) heap (dynamic allocated mem) stack (dynamic allocated mem) Program Counter Stack Pointer

7 מערכות הפעלה ( אביב 2006) חגית עטיה ©7 מרחב הכתובות של תהליך מרובה - חוטים 0x00000000 0xFFFFFFFF address space code (text segment) static data (data segment) heap (dynamic allocated mem) Stack for thread 1 PC thread 2 SP thread 1 Stack for thread 2 SP thread 2 PC thread 1

8 מערכות הפעלה ( אביב 2006) חגית עטיה ©8 ייחודי לתהליך ייחודי לחוט  Program Counter  Registers  Execution Stack  Address Space  Open Files  File position חוטים לעומת תהליכים √ √ √ √ √ √ √ √ X X X √

9 מערכות הפעלה ( אביב 2006) חגית עטיה ©9 ושוב, שרת קבצים  התהליך מחזיר : מחרוזת תווים ( במקרה של קריאה ) סטאטוס ( הצלחה / כישלון ) אורך קריאה / כתיבה ( בפועל )  תהליך מקבל בקשות עם הפרמטרים הבאים : סוג : קריאה / כתיבה זיהוי קובץ מיקום בקובץ אורך חוצץ (buffer)

10 מערכות הפעלה ( אביב 2006) חגית עטיה ©10 שרת קבצים : מימוש עם חוט יחיד פשטות  ניצול משאבים לקוי, למשל בהמתנה לקלט / פלט ניתן ליעל ע " י קלט / פלט אסינכרוני וטיפול במספר בקשות בו זמנית do forever get request; execute request; return results; end;

11 מערכות הפעלה ( אביב 2006) חגית עטיה ©11 מימוש באמצעות חוטים  חוט מנהל מקבל בקשה מייצר חוט עבודה, ומעביר אליו את הבקשה.  חוט עבודה מבצע את הבקשה מחזיר תשובה תפוקה גבוהה יותר  תכנות מורכב יותר בקשה חוט עבודה תשובה

12 מערכות הפעלה ( אביב 2006) חגית עטיה ©12 יתרונות וחסרונות יצירת חוט יעילה יותר – רק יצירת thread control block והקצאת מחסנית – החלפת הקשר בין חוטים של אותו תהליך מהירה יותר ניצול טוב יותר של משאבים – חוט אחד נחסם ( למשל על IO), חוטים אחרים של אותו תהליך ממשיכים לרוץ – מקביליות אמיתית במערכות מרובות מעבדים תקשורת נוחה יותר בין חוטים השייכים לאותו תהליך – זיכרון משותף תכנות מובנה יותר  חוסר הגנה בין חוטים באותו תהליך – חוט עלול לדרוס את המחסנית של חוט אחר – גישה לא מתואמת למשתנים גלובליים

13 מערכות הפעלה ( אביב 2006) חגית עטיה ©13 חוטי משתמש וחוטי מערכת  חוט משתמש ( user threads ) מוגדרים ע " י סביבת התכנות  לא דורשים קריאות מערכת  זימון בשיתוף פעולה ( ע " י פקודה yield)  אין החלפת הקשר בגרעין מה קורה כאשר חוט נחסם ?  חוט מערכת ( kernel threads ) מוכרים למערכת ההפעלה נקראים lightweight processes חוטי משתמש מאפשרים לאפליקציה לחקות ריבוי חוטים גם במערכת הפעלה single-threaded. kernel process

14 מערכות הפעלה ( אביב 2006) חגית עטיה ©14 תמיכת מערכת הפעלה בחוטים  יצירת והריסת חוטים, לדוגמא thread_create(char *stack) thread_exit(…) thread_join(…) thread_kill(…)  מבני נתונים פנימיים thread control block Program counter, stack, registers  מנגנוני סנכרון למשל, תיאום גישה לזיכרון משותף

15 מערכות הפעלה ( אביב 2006) חגית עטיה ©15 דוגמא : חוטי POSIX  ממשק סטנדרטי IEEE 1003.1c ) ) ליצירת וניהול חוטים. רק application program interface.  דומה מאוד לפעולות המתאימות עבור ניהול תהליכים : pthread_create pthread_exit pthread_join  כולל מנגנונים רבים לתיאום בין חוטים. בקרוב מאוד !  נתמך בהרבה מערכות “ UNIX ” בפרט, Pthreads ב Linux. מימושים שונים  נתמך גם ב Windows

16 מערכות הפעלה ( אביב 2006) חגית עטיה ©16 השוואת ביצועים זמן יצירה / סיום : במיקרו שניות, על 700MHz Pentium, עם Linux 2.2.16 [Steve Gribble, 2001] תהליכים fork / exit251 חוטי גרעין pthread_create / pthread_join 94 חוטי משתמש pthread_create / pthread_join 4.5

17 מערכות הפעלה ( אביב 2006) חגית עטיה ©17 דוגמא : Windows NT  היחידה הבסיסית הינה תהליך.  תהליך יכול להכיל כמה חוטים – kernel threads.  חוט יכול להכיל כמה סיבים (fibers), שהם בעצם user threads  זימון נעשה ברמת החוטים  תהליך רק מגדיר את מרחב הזיכרון, ומהווה מיכל לחוטים

18 מערכות הפעלה ( אביב 2006) חגית עטיה ©18 כמה חוטים " שווה " ליצר ?  נחזור לדוגמת השרת נניח שזמן הריצה הממוצע שכל חוט מקבל בשניה הוא c, וזמן המעבד הממוצע שכל תהליך מקבל בשניה הוא p. כמה חוטים כדאי לייצר ? תשובה : אין טעם לייצר יותר מ -p/c חוטים.  כמות כזו מבטיחה ניצול מלא של זמן המעבד המוקצה לתהליך  יותר חוטים רק מגדילים את התקורה של החלפת ההקשר, ואת הזמן המבוזבז על פעולות סינכרון ( יותר פרטים, בשיעור הבא )  עודף חוטים מקטין את שטח המחסנית של כל חוט הפתרון : thread pooling

19 מערכות הפעלה ( אביב 2006) חגית עטיה ©19 Thread Pooling  נייצר רק כמות סופית של חוטים  החוט הראשי, במקום לייצר חוט עבודה עבור כל בקשה, יאכסן את הבקשות המגיעות בתור FIFO  כל חוט יריץ בלולאה אינסופית את הקוד הבא : 1. הבא את במשימה הבאה מהתור 2. בצע את המשימה 3. שלח תשובה ללקוח 4. חזור ל -1  מנגנון זה יתבצע במקביל ע " י כל החוטים העובדים

20 מערכות הפעלה ( אביב 2006) חגית עטיה ©20 Thread Pooling  בעיה כיצד נחשב את c ו -p? יתכן שבכלל אינם קבועים, ויתכן שערך c משפיע על p  פתרון : גודל pool דינמי מתחילים עם גודל pool מסויים אם לא מספק, כלומר, אורך תור המשימות גדל והתהליך לא מספיק לנצל את כל ה -quantum שלו, אזי מגדילים ב -k נוספים ( עד לסף עליון קבוע ) אם במשך הרבה זמן ישנם חוטים מובטלים, ניתן לבטל k חוטים


Download ppt "מערכות הפעלה ( אביב 2006) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות."

Similar presentations


Ads by Google