Download presentation
Presentation is loading. Please wait.
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 זימון נעשה ברמת החוטים תהליך רק מגדיר את מרחב הזיכרון, ומהווה מיכל לחוטים
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.