תרגול 2 וחלק מ3 Flashcards

1
Q

כמה מצבים יכול להיות לתהליך
ומה הם

A

3
Ready
Running
Waiting

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

מה ההבדל בין תוכנית להתליך

A

תוכנית זה הקוד
תהליך זה הביצוע של הקוד

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

PID
ומה הגודל שלו?

A

המזהה של תהליך
הגודל שלו בלינקוס הוא 32 ביט

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

מה הבעיה בהסתמכות על
PID
מסויים? לדוגמה קוד שמוודא ש
PID
מסויים סגור כל כמה דקות

A

PID מתמחזר
לכן יכול להיות שעוד כמה דקות הוא יהיה בשימוש של תהליך אחר

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

PID = 0 מי זה

A

זה התהליך ה
IDLE
מעביר את המעבר למצב שינה וחוסך חשמל

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

PID = 1 מי זה

A

זה התהליך ה
INIT
מאתחל את שאר התהליכים במערכת

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

מה זה FORK

A

קריאת מערכת
מייצרת תהליך חדש
שממשיך באותה נקודה כמו התהליך שעשה לו
FORK
עבור תהליך האב יחזור המזהה של תהליך הבן
עבור תהליך הבן יחזור 0 ככה הוא גם יודע שהוא הבן

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

ערכי החזרה אפשריים FORK

A

-1 בעת שגיאה
0 לתהליך הבן
מזהה תהליך הבן לתהליך האב

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

קריאת מערכת WAIT
וערכי חזרה אפשריים

A

נקראת ע”י תהליך אב
מחכה עד שתהליך בן כלשהו יסיים
תחזיר את הערך חזרה של תהליך הבן שהסתיים
אם אין בנים או שכולם כבר הסתיימו ולא זומבים יחזור -1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

תהליך זומבי

A

תהליך שהסתיים
מחכה שהאב שלו יעשה עליו
WAIT
לאחר מכן יסתיים

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

WAITPID קריאת מערכת

A

קריאת מערכת עבור תהליך אב לחכות לבן מסויים שיסתיים
אפשר גם להוסיף אליו אופציות

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

קריאת מערכת EXIT

A

מסיימת את הריצה של התהליך
כמו כן מגדירה את ערך החזרה של התהליך
לאחריה התהליך הופכת לזומבי ומחכה שיעשו עליה
WAIT

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

גודל סטטוס התהליך שהסתיים

A

8 ביט

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

מה קורה לזומבי יתום?

A

התהליך הראשי
INIT
מאמץ אותו

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

EXECV קריאת מערכת

A

FORK משכפלת את התהליך
אבל אנחנו צריכים לייצר תהליכים חדשים שיריצו קוד שונה מהקוד של התהליך המשוכפל
EXECV
מקבלת נתיב לקובץ קוד
היא טוענת אותו ומריצה אותו בתהליך
כמו כן מצרפת את הארגיומטים להרצה של התוכנית

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

קריאת מערכת
GETPID GETPPID
ומה ההבדל ביניהם

A

GETPID - מחזיר את המזהה של התהליך עצמו
GETPPID - מחזיר את המזהה של האבא הישיר שלי

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

מה זה אומר ש
GETPPID = 1

A

זה אומר שהתליך בן הוא יתום
כלומר האבא שלו סיים את הריצה ולא חיכה לו

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

רשימת תהליכים

A

רשימה מקושרת דו כיוונית שהראש שלה הוא תהליך ה
IDLE

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

איזה קריאות מערכת עושות מניפולציות לרשימת תהליכים

A

FORK - מוסיף
EXIT - מוציא

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

process descriptor - PCB

A

STRUCT שמכיל מידע על כל תהליך

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

מה הקשר בין
PCB
וקריאת המערכת GETPID

A

GETPID פשוט קוראת
מה PCB
את השדה
PID

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

איפה מנהלים קשרי המשפחה בין התהליכים
ובאיזה שדות מופיע המידע

A

בPCB

real_parent aperent
מכיל את המזהה של תהליך האב האמיתי שלי - לדוגמה במצבי דיבוג התהליך אב שלי הוא לא באמת תהליך האב כי יש תהליך מדבג שמחכה בכל שורה בקוד

siblings
כל האחים של התהליך
כמובן שלא חשוב לתהליך אלה רק לגרעין

children
כל הבנים של התהליך

23
Q

למה משתמשים ב
HASH TABLE
בניהול תהליכים?

A

מערכת ההפעלה משתמשת בהם כדי לחפש תהליכים הרבה יותר מהר ברשימת התהליכים

24
Q

מצב תהליך - TASK_RUNNING

A

תהליך רץ או מוכן לריצה

25
מצב תהליך - TASK_ZOMBIE
התהליך סיים - כלומר קרא ל EXIT עדיין אף אב שלא לא עשה עליו WAIT
26
מצב תהליך - TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE
TASK_INTERRUPTIBLE התהליך במצב שהוא ממתין לדוגמה לאחר שקרא לWAIT ניתן לעצור את התהליך TASK_UNINTERRUPTIBLE מצב המתנה עמוק אי אפשר לעצור את התהליך לדוגמה תהליך שרץ בגרעין וקורא לקובץ שהוא ממתין לפתיחה שלו הרבה זמן
27
איך עוצרים TASK_UNINTERRUPTIBLE
לוחצים על הכפתור כיבוי במחשב
28
מצב תהליך - TASK_STOPPED
תהליך שנעצר בצורה מבוקרת - לדוגמה בתהליך דיבוג
29
מה מכיל תור ריצה וכמה כאלה יש
תור של תהליכים במצב TASK_RUNNING לכל ליבת מעבד יש תור כזה
30
האם תהליך יכול להיות בו זמנית בכמה תורי ריצה
לא רק באחד
31
תור המתנה
תור של תהליכים במצב TASK_INTERRUPTIBLE או ASK_UNINTERRUPTIBLE מגיעים למצב הזה לדוגמה אחרי שקראו ל WAIT או READ
32
איך מעבירים תהליך לתור הריצה
קריאת מערכת activate_task(),
33
פקודת kill
פקודה בלינוקס לשליחת סיגנלים לתהליכים
34
מהם שני הסיגנלים שלא ניתן להתעלם מהם
SIGKILL SIGSTOP
35
מה ההבדל בין SIGKILL - SIGSTOP
KILL הורג את התהליך STOP משהה אותו
36
איך מחזירים תהליך אחרי SIGSTOP
SIGCONT
37
מהם הסיגנלים USR1 USR2
2 סיגנלים לא מגוגדים לשימוש התהליך להחליט מה הוא עושה איתם
38
איך מגדירים את שגרת הטיפול בסיגנל?
signal(SIGNALTYPE, handlerFUNC)
39
למה משמשת הפונקציה sigprocmask()
אפשר למסך איתה את הסיגנלים שהתליך יתעלם מהם יכול להיות רלוונטי כשאר רוצים לעשות משהו שלא יקרוס באמצע בגלל אילוצי מערכת לדוגמה עדכון חשוב של DB
40
איך shell עובד לכל פקודה באיזה מצבים הוא יכול לעשות זה איך זה עובד בפועל?
לכל פקודה הוא מייצר תהליך בן שיריץ את הפקודה יכול ברקע ויכול בחזית בחזיר מייצר תהליך בן ועושה עליו wait רק שיחזור יוכל להתקדם לקרוא את בפקודה הבאה הרקע מייצר בן וישר ממשיך לפקודה הבאה בפועל כן יעשה לו wait בשלב מסוים כדי לשחרר לו משאבים
41
מה זה demon איך מריצים כזה
תהליך שרץ ברקע ללא התערבות משתמש בshelll nohum cmd&
42
חוץ מSIGKILL SIGSTOP איזה עוד סינגל לא ניתן להתעלמות
SIGCONT כי כשהוא יפעל על התהליך הוא יהיה במצב המתנה והטיפול בו יחזיר אותו לתור הריצה אפשר להגדיר לו שגרת טיפול ומה שהיא תעשה זה ברגע שיחזור לפעולה ישר יריץ את זה אפשר לתקשר איתו בעזרת USR1 USR2 סיגנלים
43
SIGCHLD
אבות מקבלים את זה בכל פעם שהבנים שלהם סיומו או שהבנים קיבלו SIGSTOP
44
SIGALARM
סיגנל שמקבלים אחרי הרצה של alarm(t) אחרי t זמן
45
SIGFPE
כל השגיראות האריתמתיות
46
SIGILL
פקודה לא חוקית אין למשתמש פריוולגיה להריץ אותה
47
SIGXCUP
התראה על שימוש שעבר את הsoftlimit CPU במעבר אמיתי של הlimit התהליך ימות set with syscall setrlimit()
48
man 1 cmd man 2 cmd
1 is for shell cmd 2 is for syscalls
49
איך משתמש יכול לחסום סיגנלים ואיזה יכול
הכל חוץ מSIGKILL SIGSTOP SYSCALL: sigprocmask(SIG_BLOCK, &mask, &orig_mask); SIG_BLOCK (+=), SIG_UNBLOCK (-=), SIG_SETMASK (=)
50
מה קורה אם תהליך מקבל סיגנל באמצע read
הוא יקבל EINVAL על הקריאה זאת דוגמה ללמה כדאי לבדוק את הערך ולנסות לקרוא שוב
51
מה השיטה שלמדנו לקריאה בטוחה של SYSCALLS בהרצאה
לעטוף אותן במאקרו שיקרא לקריאת המערכת דרך DO WHILE ולא דרך IF כי אז תהיה בעיה שנעטוף בעוד IF
52
מה ההבדל בין האופן שתהליכים מדברים לבין האופן שבו חוטים מדברים
לחוטים מרחב זכרון משותף ולכן יכולים להתקשר דרך זכרון משותף בפועל זה יכול לייצר כאב ראש של סנכון אבל אם יש מימוש שעוטף את זה ומסתיר את זה מאיתנו זה יכול להיות יותר פשוט מתהליכים תהליכים מתקשרים דרך פיפים או דרך סיגנלים וזה דורש הרבה קריאות מערכת וכנראה יהיה גם פחות יעיל
53