תרגול 2 וחלק מ3 Flashcards
כמה מצבים יכול להיות לתהליך
ומה הם
3
Ready
Running
Waiting
מה ההבדל בין תוכנית להתליך
תוכנית זה הקוד
תהליך זה הביצוע של הקוד
PID
ומה הגודל שלו?
המזהה של תהליך
הגודל שלו בלינקוס הוא 32 ביט
מה הבעיה בהסתמכות על
PID
מסויים? לדוגמה קוד שמוודא ש
PID
מסויים סגור כל כמה דקות
PID מתמחזר
לכן יכול להיות שעוד כמה דקות הוא יהיה בשימוש של תהליך אחר
PID = 0 מי זה
זה התהליך ה
IDLE
מעביר את המעבר למצב שינה וחוסך חשמל
PID = 1 מי זה
זה התהליך ה
INIT
מאתחל את שאר התהליכים במערכת
מה זה FORK
קריאת מערכת
מייצרת תהליך חדש
שממשיך באותה נקודה כמו התהליך שעשה לו
FORK
עבור תהליך האב יחזור המזהה של תהליך הבן
עבור תהליך הבן יחזור 0 ככה הוא גם יודע שהוא הבן
ערכי החזרה אפשריים FORK
-1 בעת שגיאה
0 לתהליך הבן
מזהה תהליך הבן לתהליך האב
קריאת מערכת WAIT
וערכי חזרה אפשריים
נקראת ע”י תהליך אב
מחכה עד שתהליך בן כלשהו יסיים
תחזיר את הערך חזרה של תהליך הבן שהסתיים
אם אין בנים או שכולם כבר הסתיימו ולא זומבים יחזור -1
תהליך זומבי
תהליך שהסתיים
מחכה שהאב שלו יעשה עליו
WAIT
לאחר מכן יסתיים
WAITPID קריאת מערכת
קריאת מערכת עבור תהליך אב לחכות לבן מסויים שיסתיים
אפשר גם להוסיף אליו אופציות
קריאת מערכת EXIT
מסיימת את הריצה של התהליך
כמו כן מגדירה את ערך החזרה של התהליך
לאחריה התהליך הופכת לזומבי ומחכה שיעשו עליה
WAIT
גודל סטטוס התהליך שהסתיים
8 ביט
מה קורה לזומבי יתום?
התהליך הראשי
INIT
מאמץ אותו
EXECV קריאת מערכת
FORK משכפלת את התהליך
אבל אנחנו צריכים לייצר תהליכים חדשים שיריצו קוד שונה מהקוד של התהליך המשוכפל
EXECV
מקבלת נתיב לקובץ קוד
היא טוענת אותו ומריצה אותו בתהליך
כמו כן מצרפת את הארגיומטים להרצה של התוכנית
קריאת מערכת
GETPID GETPPID
ומה ההבדל ביניהם
GETPID - מחזיר את המזהה של התהליך עצמו
GETPPID - מחזיר את המזהה של האבא הישיר שלי
מה זה אומר ש
GETPPID = 1
זה אומר שהתליך בן הוא יתום
כלומר האבא שלו סיים את הריצה ולא חיכה לו
רשימת תהליכים
רשימה מקושרת דו כיוונית שהראש שלה הוא תהליך ה
IDLE
איזה קריאות מערכת עושות מניפולציות לרשימת תהליכים
FORK - מוסיף
EXIT - מוציא
process descriptor - PCB
STRUCT שמכיל מידע על כל תהליך
מה הקשר בין
PCB
וקריאת המערכת GETPID
GETPID פשוט קוראת
מה PCB
את השדה
PID