תרגול 3 Flashcards

1
Q

כמה סינגלים אפשר לשלוח
ומה מספרם

A

1 עד 31

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

IPC
ראשי תיבות

A

Inter process communication

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

איזה סוגי ipc יש בלינוקס

A

Signals
Pipes and fifo
Sockets

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

האם לסיגנלים יש נגיעה גם בחומרה?

A

לא
זהו מנגנון תוכנתי בלבד!

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

מי מתקשר באמצעות סיגנלים

A

בין תהליך לתהליך
בין מה לתהליך

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

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

A

הסיגנל יגרום למערכת ההפעלה להוציא אותו ממצב ההמתנה כדי להריץ את שגרת הטיפול בסיגנל במצב משתמש

יוחזר תוצאת כשלון
EINTR
להמתנה

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

מה שמור ב
Signal_struct
ואיפה הוא שמור

A

הוא שמור בpcb
בכל כניסה יהיה שמור מה לעשות עם הסיגנל

SIG_DFL שגרת הטיפול הדיפולטית
SIG_IGN התעלם מהסיגנל
או קישור לפונקציה שהמשתמש הגדיר לטיפול בסיגנל

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

איך תהליך שולח סיגנל לתהליך אחר
פקודה

A

Kill(pid, num)

כמו בbash

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

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

A

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

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

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

איפה הfdt נשמר
ובאיזה שדה

A

בpcb
files->fd

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

מה יש בכל כניסה בfdt
בפירוט מה מכיל האובייקט הפנימי

A

יש את הfile object
שהוא מכיל גם את הseek pointer שהוא המיקום בקובץ

נגיד בחוטים הוא משותף והם קוראים וכותבים מאותה נקודה

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

מה הקשר בין הfd
לfdt

A

זה המיקום הפנוי הראשון שנמצא בfdt והוקצה לקובץ שפתחנו עם open

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

מה close
עושה ל
Fdt
Fo

A

היא מעדכנת את המצביע המתאים בטבלה לnull

ומעדכנת את המונה בfo לאחד פחות
לא מוחקת כי יכול להיות שיש עוד תהליכים או חוטים משתמשים בו

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

מה זה
Ssize_t

A

כמו size_t
רק שיכול גם לקבל ערך שגיאה
-1

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

קריאת מערכת read
מה עושה ומה מקבלת

A

מקבלת
fd
Buffer to write to
Number of bytes to read

ברקע מעדכן את הseek pointer בfdt

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

Write
מה מקבלת
ומה עושה ברקע

A

מקבלת
Fd
Buffer pointing what to write
Number of bytes to write

גם משנה את הseek pointer

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

מה קורה בfdt בין חוטים

A

הוא משותף
הpcb של כל אחד מהם מצביע לאותו fdt

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

האם fork משכפל גם את הfo?

A

לא
רק הfdt של שניהם מתבצביע עליהם

19
Q

איזה פקודות יש לנעילת קבצים בין חוטים

A

Flock() type: FL_lock
Fcntl() type: FL_posix

20
Q

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

A

לא בחומר

Advisory locking
תהליך נועל קובץ בצורה מפורשת כמו קטע קריטי
מי שרוצה שינעל

Mandatory locking
אם קובץ

Lease
מנעול ניתן לזמן מסויים ואפשר להאריך את זמן הזה
טוב במקרים שהתהליך קרס

21
Q

מה קורה אם תהליך פותח פעמיים את אותו הקובץ

A

זה ייצור 2
Fo
כל אחד מהם יהיה עם
Seek ייחודי

22
Q

מה קורה אם בתהליך האב קראנו 3 בתים מקובץ
ואז נקרא 10 מהבן

A

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

23
Q

מה execv
עושה לfdt

למה זה טוב?

A

לא משנה אותו
קבצים שהיו פתוחים לפני פתוחים גם עכשיו

לדוגמה כדי להכווין קלט פלט
אפשר שנפתח קובץ
ואז בexecv נריץ תוכנה כקופסא שחורה והיא כבר תקבל את הקבצים פתוחים

24
Q

איפה נשמר pipe

A

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

25
Q

האם pipe הוא חד או דו כיווני

A

חד כיווני
אחד קורא אחד כותב

26
Q

איך כותבים וקוראים מpipe

A

בסוף התנהלות כמו כל קובץ
Read/write..

27
Q

איך ממומש pipe מבחינת fd

A

אחד לקריאה ואחד לכתיבה

28
Q

איך מייצרים pipe חדש
מה מקבל ומה מחזיר

A

Pipe()
מקבל מערך באורך 2 של ints
מקצה 2 fd הראשון במערך לכתיבה השני לקריאה

מחזיר 0 בהצלחה
-1 בכשלון

29
Q

אז לpipe אין fo?

A

יש לו כמו לכל קובץ
אחד שמתאים לfd קריאה
ואחד לכתיבה

30
Q

איזה תהליכים יכולים לדבר בpipe

A

רק אבות ובנים
כי הם משתפים fdt

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

31
Q

מה קורה אם האב עושה read לפייפ לפני שהבן התחיל לרוץ

A

זאת תהיה קריאה חוסמת והוא ימתין עד שהילד ימלא את החוצץ

32
Q

מה קורה אם אב יצר הרבה בנים
ואז סגר את קצה קריאה של הpipe

A

הוא לא יוכל לכתוב יותר אבל הם יוכלו

33
Q

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

A

הכתיבה תכשל והתהליך יקבל סיגנל
SigPipe
שגרת הטיפול הסטדרטית שלו היא להרוג את התהליך

34
Q

מה הגודל המקסימלי של pipe

A

64k

35
Q

מה קורה אם תהליך רוצה לכתוב לpipe יותר מהגודל שלו

A

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

36
Q

מה קורה אם מנסים לקרוא מpipe

כשהוא ריק

כשכל הfd לכתיבה נסגרו?

למה חשוב לסגור קצוות מיותרים?

A

אם ריק וגם הכל נסגר נקבל eof

אם כולם סגרו ועדיין יש שם מידע נקרא אותו

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

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

או מצב שתהליך כותב יכתוב לpipe עד שיתמלא ויתקע בלי אף תהליך שיקרא את המידע וישחרר אותו

37
Q

איך משנים fd של קובץ

A

קריאות מערכת

משכפלתתתתתתתתתת
Duplicate!!!!!!!

dup
מקבל fd ומשנה אותו לנמוך ביותר האפשרי

Dup2
מקבל fd נוכחי
וfd שנרצה לעבור אליו

38
Q

איך מייצרים pipe שכל התהליכים במערכת הפעלה יכולו לדבר איתו

A

Fifo

39
Q

Fifo איפה נשמר

A

נשמר בקובץ
קובץ מיוחד שלא נשמר על הדיסק

40
Q

מה זה anonymous fifo

A

Pipe

41
Q

איך מייצרים fifo

A

Syscall

MkFifo

מקבל נתיב לקובץ ששם ישמר הpipe
Mode הרשאות הקובץ
0777 is like 777

42
Q

האם fifo הוא חד כיווני?

A

לא הוא דו כיווני
אפשר לקרוא ולכתוב לאותו הfd

43
Q

מה קורה אם תהליך פותח fifo
לקריאה בלבד
כתיבה בלבד
כתיבה וקריאה

A

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

קריאה וכתיבה זה לא חוסם

44
Q

מה ההבדל בניקוי לאחר סיום בין
Fifo and pipes

A

Fifo
הוא אובייקט ממופה לקובץ
לכן צריך לנקות אותו במפורש בסיום
צריך למחוק את הקובץ המתאים אליו

למשל עם פקודת rm
או קריאת מערכת unlink