שבוע #3 תהליכים חלק א' קורס מערכות הפעלה א': תכנות מערכת ומבוא לתכנות מקבילי מכללת הדסה -מכללה חרדית צבי מלמד [email protected] הרצאות הקורס מבוססות במידה רבה ביותר על ההרצאות של ד"ר יורם ביברמן © כל הזכויות שמורות לד"ר יורם ביברמן ולצבי מלמד ©צבי מלמד 1 הנושאים בהרצאה זאת )שבוע (#3 • • • • • • • • • • • • מבוא מושג התהליך התהליך מתי תהליך נוצר מתי תהליך מסתיים מצב התהליך הערות לגבי לגבי מצבי התהליך – PCBגוש בקרת תהליך מתזמנים schedulers החלפת הקשר context switch פעולות על תהליכים יצירת תהליך ©צבי מלמד 2 מבוא במערכות ) time-sharingנקראות גם:(multi-tasking : • המחשב מריץ מספר תכניות המצויות בו זמנית בזיכרון • אשלית מקבילות על ידי הרצת כל תכנית לסירוגין למשך זמן קצר == שיתוף זמן. • זה אכלא! אבל ...נדרש הרבה בכדי לאפשר זאת -שהתכניות לא תפגענה זו בזו: – פעולות כגון הקצאת זכרון ,ביצוע קו"פ ,ייצור תוכנית נוספת להרצה – צריכות להתבצע על ידי מערכת ההפעלה • התוצאה :מושג התהליך ≈ תכנית מורצת .או יחידת העבודה' ,ישות' ,במערכת שיתוף זמן מודרנית. • גרעין מערכת ההפעלה אחראי על ניהול התהליכים ,הקצאת הזיכרון הראשי, ניהול הציוד ,ומשימות קריטיות נוספות ©צבי מלמד 3 מושג התהליך • • • • במערכת אצווה ) (batchהריצו ג'ובים אחד אחרי השני .בהסתיים ג'וב מסוים - מערכת ההפעלה בחרה את הג'וב הבא מבין הממתינים כשהג'וב המורץ מבצע ק\פ המעבד מושבת השיפור: – מערכת ריבוי תכניות ) (multiprogrammingבזיכרון יוחזקו כמה תכניות\ג'ובים במקביל. – כאשר ג'וב א' מבצע ק\פ ,יריץ המעבד את ג'וב ב'. – ג'וב מוותר על המעבד מרצונו הטוב שיפור נוסף: – לאחר Xיחידות זמן שבהם רץ ג'וב א' -המעבד יעבור לבצע את ג'וב\תהליך\משימה ב' – גם ללא פניה לקו"פ – או – מפסיקים את פעולתו של א' בגלל עדיפות גבוהה יותר של ג'וב ב' – לשיטה זאת אנו קוראים :שיתוף זמן ).(time sharing ©צבי מלמד 4 התהליך • תהליך =≈ תכנית בהרצה • מבחינת מערכת ההפעלה :ישות שניתן להקצות לה משאבים • תהליכים כמו "אנשים" :נולדים ,חיים ,עשויים להוליד מספר ילדים ,מתים. • שלא כמו אנשים: – "זכר ונקבה ברא אותם" – לא את התהליכים ..יש רק הורה אחד – אין עולם הבא... ©צבי מלמד 5 התהליך • לכל תהליך מרחב כתובות ) (address spaceשלו – אליהן ,ורק אליהן ,הוא רשאי לפנות ©צבי מלמד 6 מרחב הכתובות ) (address spaceשל התהליך - text segment .1פקודות התכנית )בשפת מכונה( = ]בד"כ מוגן מפני כתיבה[ - Stack .2מחסנית )פרמטרי התוכנית ,קריאות לפונקציות ומשתנים לוקליים( heap .3ערמה )להקצאה דינאמית( – data section .4משתנים סטטיים וגלובליים (block started by symbol) bss .5משתנים גלובליים וסטטיים שאינם מאותחלים )וע"כ אינם נשמרים ב ַ קובץ המכיל את התכנית( .6מרכיבים נוספים )נכיר בהמשך( .7מידע נוסף על התהליך )רשימת קבצים שפתח ,עדיפות ,זמן ריצה ,מצב האוגרים ב context switch-האחרון] - ( .. ,מתוחזק על ידי מערכת ההפעלה[ ©צבי מלמד 7 מרחב הכתובות של התהליך -הערות • לוגית -רציף בזיכרון, • פיזית – אינו רציף .מחולק לדפים .מנגנון Paging • כשתהליך מוליד תהליכים ילדים – כל אחד מהם נולד עם עותק זהה של אביו .זהה אך נפרד! ©צבי מלמד 8 מתי תהליך נוצר • בתהליך העליה ) (bootשל מערכת ההפעלה ,היא מייצרת את התהליך )כמעט( הראשון במערכת ,INIT, pid=1 :אשר רץ לנצח. • כשעושים :loginתהליך INITמייצר בן = ה .login shell :אשר עובר 'מוטציה' ונהפך מעותק של INITלshell : • הקלדת פקודה :ה shell -מייצר תהליך שמריץ את התכנית )פקודה =≈ תוכנית +ארגומנטים(. • תהליכים נוספים נוצרים על ידי מערכת ההפעלה או תוכניות משתמש ממגוון סיבות )לספק שירותים ,הפעלה מקבילית ..וכו'( • scriptמייצר סדרתית תהליכים ,על פי הפקודות והריצה בקובץ הscript- ©צבי מלמד 9 מתי תהליך מסתיים • • תהליך נולד ומת בKernel-mode - תהליך מסתיים במקרים הבאים: (1הוא סיים את פעולתו )בהצלחה או בגלל שנכשל( וביצע קריאת מערכת )(.exit (2הוא מועף ע"י מערכת ההפעלה בגלל בעית ריצה: (aחלוקה באפס (bחריגה מהזיכרון (cעבר עת מכסת הזמן שהוקצתה לו (dניסה להגדיל קובץ מעבר למותר (eניסה לבצע פקודה מיוחסת ) (priviledgedבuser-mode- (3מערכת ההפעלה "צוותה עליו" להסתיים 'שלא בעוונותיו' :חסימה הדדית. (4אביו החליט )מסיבות השמורות עימו( להרגו. (5המשתמש עשה .logout ©צבי מלמד 10 מצבי התהליך מצב התהליך ≈ מה התהליך עושה עתה. מצבים אפשריים של תהליך: - New .1חדש – התהליך נוצר )'נולד'( .מוקצים לו מבני הנתונים הדרושים שיאפשרו לו 'חיים' =לרוץ במערכת. .2התהליך רץ במצב משתמש ) =(running, user modeהוא זכה במעבד ,ורץ .3רץ במצב גרעין ) – (running, kernel modeבוצעה בקשת שירות = קריאת מערכת )שגרמה לשינוי( .הבקרה עוברת לקטע קוד של מערכת ההפעלה. .4חסום\ישן ) - (blocked/sleepingהתהליך ממתין לאירוע כלשהו )יוזן לו נתון ,יישלח לו סיגנל( .למצב זה נעבור ממצב ג'. ©צבי מלמד 11 מצבי התהליך .5תהליך מוכן להרצה ) – (readyהתהליך ממתין שהמעבד יוקצה לו. • המעבר למצב זה ממצב ד' – "קרה כבר" האירוע שהתהליך חיכה לו • מעבר ממצב ב' – הסתיים קוואנטום הזמן ,והמעבד הוקצה לתהליך אחר • )בגירסאות לינוקס לפני 2.6לא היה אפשרי "לגזול" את המעבד( .6סיים – zombieביצע ) exitק.מ (.וממתין שאביו יתעניין בגורלו ,ורק אז הוא יעלם סופית מהמערכת) .המעבר לכאן ממצב ג'(. • האב מקבל הודעה ) (Signalשהבן שלו מת • האב מוציא קריאה )( waitאו )( – waitpidבכדי לקבל נתונים על מצב הבן שסיים )או יסיים( לרוץ .מערכת ההפעלה אינה "מחסלת" את התהליך ,כי אולי האב זקוק לנתונים אלו. ©צבי מלמד 12 מצבי התהליך .6מושהים - suspendבשל עומס על המערכת ,תהליך 'חסום' או 'מוכן' מוּצא מהזיכרון לדיסק )אשר מהווה מעין הרחבה של הזיכרון(. • מבחינים בין התהליכים החסומים ) (Blockedוהמוכנים ) :(Readyהאם הם בזכרון הראשי או מושהים • עירור - activationהכנסה של תהליך מושהה לזיכרון ©צבי מלמד 13 דיאגרמת מצבי תהליך – process state chart עד כאן – יום ד' 16.11.11 ©צבי מלמד 14 הערות לגבי לגבי מצבי התהליך • • • • • תהליכים מוכנים :נחלק למוכנים במצב גרעין לעומת מוכנים במצב משתמש. למעשה את התהליכים הממתינים\חסומים אנו מחלקים לקבוצות ,קבוצות )תורים ,תורים( ע"פ האירוע לו התהליכים ממתינים )ק"פ מציוד א' ,קלט מהעכבר ,נתונים מהרשת(. כל תור מכיל רשימת מתארים ) (PCBשל התהליכים הממתינים "אצלו". חלק מהטיפול בפסיקה הוא ,במידת הצורך ,העברת התהליך המתאים מהתור בו הוא המתין לתור אחר )הפסיקה מטופלת בלי קשר לתהליך שמורץ באותו רגע( תהליך נולד ומת במצב גרעין. ©צבי מלמד 15
© Copyright 2024