תרגול 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
Q

מצב תהליך - TASK_ZOMBIE

A

התהליך סיים - כלומר קרא ל
EXIT

עדיין אף אב שלא לא עשה עליו
WAIT

26
Q

מצב תהליך - TASK_INTERRUPTIBLE
TASK_UNINTERRUPTIBLE

A

TASK_INTERRUPTIBLE
התהליך במצב שהוא ממתין
לדוגמה לאחר שקרא לWAIT
ניתן לעצור את התהליך

TASK_UNINTERRUPTIBLE
מצב המתנה עמוק אי אפשר לעצור את התהליך
לדוגמה תהליך שרץ בגרעין וקורא לקובץ שהוא ממתין לפתיחה שלו הרבה זמן

27
Q

איך עוצרים
TASK_UNINTERRUPTIBLE

A

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

28
Q

מצב תהליך - TASK_STOPPED

A

תהליך שנעצר בצורה מבוקרת - לדוגמה בתהליך דיבוג

29
Q

מה מכיל תור ריצה
וכמה כאלה יש

A

תור של תהליכים במצב
TASK_RUNNING

לכל ליבת מעבד יש תור כזה

30
Q

האם תהליך יכול להיות בו זמנית בכמה תורי ריצה

A

לא
רק באחד

31
Q

תור המתנה

A

תור של תהליכים במצב
TASK_INTERRUPTIBLE
או
ASK_UNINTERRUPTIBLE

מגיעים למצב הזה לדוגמה אחרי שקראו ל
WAIT או
READ

32
Q

איך מעבירים תהליך לתור הריצה

A

קריאת מערכת
activate_task(),

33
Q

פקודת kill

A

פקודה בלינוקס לשליחת סיגנלים לתהליכים

34
Q

מהם שני הסיגנלים שלא ניתן להתעלם מהם

A

SIGKILL
SIGSTOP

35
Q

מה ההבדל בין
SIGKILL - SIGSTOP

A

KILL הורג את התהליך
STOP משהה אותו

36
Q

איך מחזירים תהליך אחרי
SIGSTOP

A

SIGCONT

37
Q

מהם הסיגנלים
USR1 USR2

A

2 סיגנלים לא מגוגדים
לשימוש התהליך להחליט מה הוא עושה איתם

38
Q

איך מגדירים את שגרת הטיפול בסיגנל?

A

signal(SIGNALTYPE, handlerFUNC)

39
Q

למה משמשת הפונקציה
sigprocmask()

A

אפשר למסך איתה את הסיגנלים שהתליך יתעלם מהם

יכול להיות רלוונטי כשאר רוצים לעשות משהו שלא יקרוס באמצע בגלל אילוצי מערכת
לדוגמה עדכון חשוב של
DB

40
Q

איך shell עובד לכל פקודה

באיזה מצבים הוא יכול לעשות זה

איך זה עובד בפועל?

A

לכל פקודה הוא מייצר תהליך בן שיריץ את הפקודה

יכול ברקע ויכול בחזית

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

הרקע מייצר בן וישר ממשיך לפקודה הבאה
בפועל כן יעשה לו wait בשלב מסוים כדי לשחרר לו משאבים

41
Q

מה זה demon
איך מריצים כזה

A

תהליך שרץ ברקע ללא התערבות משתמש

בshelll
nohum cmd&

42
Q

חוץ מSIGKILL SIGSTOP
איזה עוד סינגל לא ניתן להתעלמות

A

SIGCONT
כי כשהוא יפעל על התהליך הוא יהיה במצב המתנה והטיפול בו יחזיר אותו לתור הריצה
אפשר להגדיר לו שגרת טיפול ומה שהיא תעשה זה ברגע שיחזור לפעולה ישר יריץ את זה

אפשר לתקשר איתו בעזרת USR1 USR2 סיגנלים

43
Q

SIGCHLD

A

אבות מקבלים את זה בכל פעם שהבנים שלהם סיומו או שהבנים קיבלו SIGSTOP

44
Q

SIGALARM

A

סיגנל שמקבלים אחרי הרצה של
alarm(t)
אחרי t זמן

45
Q

SIGFPE

A

כל השגיראות האריתמתיות

46
Q

SIGILL

A

פקודה לא חוקית
אין למשתמש פריוולגיה להריץ אותה

47
Q

SIGXCUP

A

התראה על שימוש שעבר את הsoftlimit CPU
במעבר אמיתי של הlimit התהליך ימות

set with syscall setrlimit()

48
Q

man 1 cmd
man 2 cmd

A

1 is for shell cmd
2 is for syscalls

49
Q

איך משתמש יכול לחסום סיגנלים ואיזה יכול

A

הכל חוץ מSIGKILL SIGSTOP

SYSCALL:
sigprocmask(SIG_BLOCK, &mask, &orig_mask);
SIG_BLOCK (+=), SIG_UNBLOCK (-=), SIG_SETMASK (=)

50
Q

מה קורה אם תהליך מקבל סיגנל באמצע read

A

הוא יקבל EINVAL על הקריאה
זאת דוגמה ללמה כדאי לבדוק את הערך ולנסות לקרוא שוב

51
Q

מה השיטה שלמדנו לקריאה בטוחה של SYSCALLS בהרצאה

A

לעטוף אותן במאקרו
שיקרא לקריאת המערכת דרך
DO WHILE
ולא דרך IF כי אז
תהיה בעיה שנעטוף בעוד IF

52
Q

מה ההבדל בין האופן שתהליכים מדברים לבין האופן שבו חוטים מדברים

A

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

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

53
Q
A