Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

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

3 February 03 חגית עטיה © מערכות הפעלה, שקף 3 טבעי לי מקבילי... אך הרבה בעיות קל יותר לפתור באמצעות ריבוי תהליכים לדוגמא, שרת : ממתין לקבל בקשה כאשר מקבל בקשה, חייב להפסיק לחכות ולעבור לטפל בבקשה פתרון : לבצע fork תהליך הבן מטפל בבקשה שהגיעה האב ממשיך להמתין לבקשה לא - יעיל כי מחייב הקצאת מרחב כתובות, PCB...

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

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

6 February 03 חגית עטיה © מערכות הפעלה, שקף 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 February 03 חגית עטיה © מערכות הפעלה, שקף 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 February 03 חגית עטיה © מערכות הפעלה, שקף 8 ייחודי לתהליך ייחודי לחוט  Program Counter  Registers  Execution Stack  Address Space  Open Files  File position  ערך משתנה מקומי  ערך משתנה גלובלי חוטים לעומת תהליכים √ √ √ √ √ √ √ √ √ √ X √ X X X √

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

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

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

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

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

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

15 February 03 חגית עטיה © מערכות הפעלה, שקף 15 דוגמא : חוטי POSIX  ממשק סטנדרטי IEEE 1003.1c ) ) ליצירת וניהול חוטים.  דומה מאוד לפעולות המתאימות עבור ניהול תהליכים : pthread_create pthread_exit pthread_join  כולל מנגנונים רבים לתיאום בין חוטים. בקרוב מאוד !  נתמך בהרבה מערכות “ UNIX ” : מימוש לא - זהה !

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

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


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

Similar presentations


Ads by Google