Download presentation
Presentation is loading. Please wait.
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 חוטים
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.