תרגול 3 Flashcards
(44 cards)
כמה סינגלים אפשר לשלוח
ומה מספרם
1 עד 31
IPC
ראשי תיבות
Inter process communication
איזה סוגי ipc יש בלינוקס
Signals
Pipes and fifo
Sockets
האם לסיגנלים יש נגיעה גם בחומרה?
לא
זהו מנגנון תוכנתי בלבד!
מי מתקשר באמצעות סיגנלים
בין תהליך לתהליך
בין מה לתהליך
מה קורה אם תהליך קיבל סיגנל בעת שהוא היה במצב המתנה
Task interruptable
הסיגנל יגרום למערכת ההפעלה להוציא אותו ממצב ההמתנה כדי להריץ את שגרת הטיפול בסיגנל במצב משתמש
יוחזר תוצאת כשלון
EINTR
להמתנה
מה שמור ב
Signal_struct
ואיפה הוא שמור
הוא שמור בpcb
בכל כניסה יהיה שמור מה לעשות עם הסיגנל
SIG_DFL שגרת הטיפול הדיפולטית
SIG_IGN התעלם מהסיגנל
או קישור לפונקציה שהמשתמש הגדיר לטיפול בסיגנל
איך תהליך שולח סיגנל לתהליך אחר
פקודה
Kill(pid, num)
כמו בbash
מה ההבדל באופן גילוי הסיגנל
אם מערכת ההפעלה שלחה
או או תהליך אחר שלח
אפ מערכת ההפעלה שלחה
היא תסמן את הסיגנל כדלוק
ואז כשנרצה לחזור לתהליך במצב משתמש הסינגל יתגלה
אם תהליך שלח להתליך זה אסינכרוני ונגלה את זה רק בפעם הבאה שנחזור למצב משתמש
איפה הfdt נשמר
ובאיזה שדה
בpcb
files->fd
מה יש בכל כניסה בfdt
בפירוט מה מכיל האובייקט הפנימי
יש את הfile object
שהוא מכיל גם את הseek pointer שהוא המיקום בקובץ
נגיד בחוטים הוא משותף והם קוראים וכותבים מאותה נקודה
מה הקשר בין הfd
לfdt
זה המיקום הפנוי הראשון שנמצא בfdt והוקצה לקובץ שפתחנו עם open
מה close
עושה ל
Fdt
Fo
היא מעדכנת את המצביע המתאים בטבלה לnull
ומעדכנת את המונה בfo לאחד פחות
לא מוחקת כי יכול להיות שיש עוד תהליכים או חוטים משתמשים בו
מה זה
Ssize_t
כמו size_t
רק שיכול גם לקבל ערך שגיאה
-1
קריאת מערכת read
מה עושה ומה מקבלת
מקבלת
fd
Buffer to write to
Number of bytes to read
ברקע מעדכן את הseek pointer בfdt
Write
מה מקבלת
ומה עושה ברקע
מקבלת
Fd
Buffer pointing what to write
Number of bytes to write
גם משנה את הseek pointer
מה קורה בfdt בין חוטים
הוא משותף
הpcb של כל אחד מהם מצביע לאותו fdt
האם fork משכפל גם את הfo?
לא
רק הfdt של שניהם מתבצביע עליהם
איזה פקודות יש לנעילת קבצים בין חוטים
Flock() type: FL_lock
Fcntl() type: FL_posix
איזה סוגי נעילות אפשר לעשות לקבצים בלינוקס
לא בחומר
Advisory locking
תהליך נועל קובץ בצורה מפורשת כמו קטע קריטי
מי שרוצה שינעל
Mandatory locking
אם קובץ
Lease
מנעול ניתן לזמן מסויים ואפשר להאריך את זמן הזה
טוב במקרים שהתהליך קרס
מה קורה אם תהליך פותח פעמיים את אותו הקובץ
זה ייצור 2
Fo
כל אחד מהם יהיה עם
Seek ייחודי
מה קורה אם בתהליך האב קראנו 3 בתים מקובץ
ואז נקרא 10 מהבן
אז הבן ימשיך לקרוא מאיפה שהאבא הפסיק
כי הfo בניהם משותף וקריאה לאחד תגרור שינויseek בשניהם
מה execv
עושה לfdt
למה זה טוב?
לא משנה אותו
קבצים שהיו פתוחים לפני פתוחים גם עכשיו
לדוגמה כדי להכווין קלט פלט
אפשר שנפתח קובץ
ואז בexecv נריץ תוכנה כקופסא שחורה והיא כבר תקבל את הקבצים פתוחים
איפה נשמר pipe
מיוחד
לא נשמר בדיסק
אלה בחוצצים של מערכת ההפעלה