תרגול 3 Flashcards

(44 cards)

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
האם pipe הוא חד או דו כיווני
חד כיווני אחד קורא אחד כותב
26
איך כותבים וקוראים מpipe
בסוף התנהלות כמו כל קובץ Read/write..
27
איך ממומש pipe מבחינת fd
אחד לקריאה ואחד לכתיבה
28
איך מייצרים pipe חדש מה מקבל ומה מחזיר
Pipe() מקבל מערך באורך 2 של ints מקצה 2 fd הראשון במערך לכתיבה השני לקריאה מחזיר 0 בהצלחה -1 בכשלון
29
אז לpipe אין fo?
יש לו כמו לכל קובץ אחד שמתאים לfd קריאה ואחד לכתיבה
30
איזה תהליכים יכולים לדבר בpipe
רק אבות ובנים כי הם משתפים fdt האב צריך ליצור את הפייפ ואז לייצר את הבן כל אחד מהם יכול לקרוא ולכתוב לקצוות הפייפ
31
מה קורה אם האב עושה read לפייפ לפני שהבן התחיל לרוץ
זאת תהיה קריאה חוסמת והוא ימתין עד שהילד ימלא את החוצץ
32
מה קורה אם אב יצר הרבה בנים ואז סגר את קצה קריאה של הpipe
הוא לא יוכל לכתוב יותר אבל הם יוכלו
33
מה קורה אם תהליך כותב לפייפ אבל אין מי שמאזין לו מה יקרה חתהליך
הכתיבה תכשל והתהליך יקבל סיגנל SigPipe שגרת הטיפול הסטדרטית שלו היא להרוג את התהליך
34
מה הגודל המקסימלי של pipe
64k
35
מה קורה אם תהליך רוצה לכתוב לpipe יותר מהגודל שלו
אם אין מספיק מקום פנוי זאת תהפוך לקריאה חוסמת עד אשר הבנים יקראו ויפנו מקום מהpipe
36
מה קורה אם מנסים לקרוא מpipe כשהוא ריק כשכל הfd לכתיבה נסגרו? למה חשוב לסגור קצוות מיותרים?
אם ריק וגם הכל נסגר נקבל eof אם כולם סגרו ועדיין יש שם מידע נקרא אותו אם ריק ועדיין יש כותבים אז זה יהפוך לקריאה חוסמת עד אשר אחד האחרים יכתוב כדי למנוע מצב שתהליך קורא יחכה לנצח להתליך אחד שעדיין מחזיק קצה כתיבה אבל לא מתכנן להשתמש בו או מצב שתהליך כותב יכתוב לpipe עד שיתמלא ויתקע בלי אף תהליך שיקרא את המידע וישחרר אותו
37
איך משנים fd של קובץ
קריאות מערכת משכפלתתתתתתתתתת Duplicate!!!!!!! dup מקבל fd ומשנה אותו לנמוך ביותר האפשרי Dup2 מקבל fd נוכחי וfd שנרצה לעבור אליו
38
איך מייצרים pipe שכל התהליכים במערכת הפעלה יכולו לדבר איתו
Fifo
39
Fifo איפה נשמר
נשמר בקובץ קובץ מיוחד שלא נשמר על הדיסק
40
מה זה anonymous fifo
Pipe
41
איך מייצרים fifo
Syscall MkFifo מקבל נתיב לקובץ ששם ישמר הpipe Mode הרשאות הקובץ 0777 is like 777
42
האם fifo הוא חד כיווני?
לא הוא דו כיווני אפשר לקרוא ולכתוב לאותו הfd
43
מה קורה אם תהליך פותח fifo לקריאה בלבד כתיבה בלבד כתיבה וקריאה
קריאה בלבד או כתיבה בלבד זה יהיה חוסם ויחכה עד שעוד מישהו יפתח באופן משלים קריאה וכתיבה זה לא חוסם
44
מה ההבדל בניקוי לאחר סיום בין Fifo and pipes
Fifo הוא אובייקט ממופה לקובץ לכן צריך לנקות אותו במפורש בסיום צריך למחוק את הקובץ המתאים אליו למשל עם פקודת rm או קריאת מערכת unlink