מבחן Flashcards
איך המשתמש יכול תקשר עם מערכת ההפעלה או החומרה
קריאות מערכת
מה הגודל של pid
ובכמה ביטים באמת משתמשים
32 ביט
ברוב הלינקוסים משתמשים ב15 ביטים תחתונים
אפשר להגיד שיהיה יותר
מהו תהליך idle
Pid?
למה טוב?
מתי נוצר
התהליך הראשון שמערכת ההפעלה מעלה
0 pid
טוב כדי לחסוך אנרגיה לדוגמה בשרתים של
חברות גדולות
נוצר בעת העלאת מערכת ההפעלה
מי זה תהליך init
מה הpid שלו
Pid 1
נוצר עי idle
יהיה האב של כל שאר התהליכים
Hlt
מהי הפקודה?
X86 פקודת אסמבלי
משמשת לכך שהמעבד יחכה עד שתתקבל
פסיקה מהחומרה
זוהי דוגמה להכנסת המערכת למצב idle
Fork
מה מקבל ומה מחזיר
לא מקבל פרמטרים
מחזיר -1 אם נכשל ואין בן
אם הצליח מחזיר לאבא את הpid של הבן ולבן מחזיר 0
Printf
האם הוא thread safe
פעם לא היה
היום כן
מה שזה אומר זה שהפעולה שלו היא אטומית ואם תהליך דוחף מחרוזת לstdout היא תודפס במלואה
Wait
מהו
מה מקבל ומה מחזיר
התהליך ממתין עד שבן כלשהו שלו מסתיים כלומר קורא לexit
מקבל כפרמטר מצביע שבו יעודכן הסטטוס של הבן אם לא רוצים אפשר לשלוח null
אם אין בנים מוחזר -1
אם יש בנים זומבים יחזור ישירות הpid של הזומבי
אחרת נמתין עד שתהליך בן יסיים
Malloc and free are like:
Fork - wait
מהי קריאת מערכת חוסמת
קריאת מערכת שתוקעת את ריצת התוכנית כמו
Wait waitpid
Waitpid
במה שונה מwait
דומה לwait
רק שמחכה לתהליך מסויים
אפשר להפוך אותה לקריאת מערכת לא חוסמת כלומר שתרוץ מיד לדוגמה עי שליחה של WHaoHANG באופציות
אם אין תהליך שכבר סיים אז יחזור 0 אחרת יחזור המזהה תהליך שסיים
Exit
מה מקבלת
ומה מחזירה
ומה עושה
מסיימת את ריצת התהליך
ומעבירה את התהליך למצב זומבי עד שתהליך האב יחכה לו
מחזיר 8 ביטים של ערך סיום
לא יכול להכשל ולא מחזיר ערך
למה צריך את exit
ולמה return מmain לא מספיק
איך קוראים לפונק המעטפת הראשית
Main
עטופה עי
libc start main
שהיא קוראת לexit
חוץ מזה היא נוחה אם אנחנו עמוק בתוך הקוד ורוצים לסיים את הריצה
מה קורה לתהליך שהאבא שלו עשה
Exit
איך קוראים לפונק בגרעין שעושה את זה
הוא הופך לבן של init
בעזרת הפונקציה forget original parent בקרנל
למה חשוב שיהיה את תהליך init חוץ מזה שהוא מתחיל את התהליכים הראשונים
הוא גם האב של כל התהליכים היתומים
והוא דואג לחכות לכולם ולפנות את הנתונים שלהם כשהם מסיימים