טריקים ממבחנים Flashcards
מה יכול לקרות למרחק בין ההתחלה לסוף של מערך במסגרות הפיזיות
אם גודל המערך הוא יותר מדף1
יכול להיות שהסוף של המערך ימופה למסגרת שלפני ההתלה והמחרב בניהם יהיה 0
מה יכולות להיות הסיבות ששמרתי מחרוזת במשתנה אבל כשאני מסתכל על הזיכרון לא מוצא אותה
יכול להיות שהיא דופדפה לדיסק
יכול להיות שהיא נפרסת על גבי מסגרות שונות ולכן לא תימצא בשלמותה
יכול להיות שכתבנו אותה אבל היא עוד לא נכתבה באמת לזיכרון אלה רק נכתבה למטמון הדפים
איזה סיגנל מתקבל כאשר מנסים לגשת לnull
Sigsegv
באיזה מצב
משתמש/גרעין
מטופלת שגרת טיפול בסיגנל
דיפולטית ולא דיפולטי
תמיד במצב משתמש
תאר את התהליך שקורה בעת נסיון גישה לnull
משתמש מנסה לגשת לnull ומתקבלת חריגת דף
הגרעין מטפל בחריגת הדף ומבין שנבעה מגישה לא חוקית ולכן רושם לתהליך סיגנל sigsegv
במצב משתמש בעת
החזרה ממצב גרעין מופעלת שגרת הטיפול שמסיימת את הריצה
מה הכתובת ההתחלתית של מרחב הזכרון של משתמש והסוף
וגרעין
משתמש
מתחיל ב0 נגמר בביט 47
קרנל משם עד ביט 64
כמה ביטים משתמשים למרחב הזכרון בx64
48
מחסנית וערימה
מי למטה מי למטלה
מחסנית גודלת למטה
היא למעלה
מי פסיקה מסוג restartable
Segfault
Page fault
שתיהן
פתחתי קובץ עם mmap
MAP_private
ואני מנסה לשנות ביט אחד בו
אחרי שכבר עשינו קריאה
כמה חריגות דף
וכמה מסגרות יוקצו
ומה קורה ברקע
בגלל שmmap עושה מיפוי עצל
בגלל שזה מיפוי פרטי הצבענו על מטמון הדפים עם הרשאות קריאה בלבד
בעת הכתיבה נקבל בגלל זה חריגת דף
ויועתק מסגרת חדשה ופרטית לחלק הזה כדי שנוכל לשנות אותו
כמה מסגרות חדשות יוקצו
אם יש קובץ
ואני קורא אותו דרך חוצץ בגודל 2 דפים
4 מסגרות
2 בעבור החוצץ שזו קריאה ראשונה אליו
ו2 בעבור מטמון הדפים שהתוכן נקרא אליו
זה גם הבזבוז של read
הוא מעתיק פעמיים תוכן וגורם ל2 לשתי חריגות דף
מי מהרמות של טבלת הדפים תמיד מוקצןת
הרמה הראשית
הראשונה
אם אני רוצה לכתוב מודל במערכת מרובת משתמשים שמשנה את הpcb
מה אני חייב לעשות בשביל שיהיה תקין מבחינת סנכרון
בגלל שהpcb נגיש גם לפסיקות חומרה
צריך לנטרל פסיקות חומרה וגם להשתמש בspin lock
איך נקרא הקבוע שקובע את גודל הקוונטום המינימלי בcfs
min_granularity
למה נותנים לתהליכים שחזרו מהמתנה בcfs את המינימום בין התהליכים בליבת המעבד?
גם כדי למנוע הרעבה של שאר התהליכים
וגם כדי לפרגן לו ולשמור על ההגנות הוא יצא הרבה להמתנה ולכן הוגן לתת לו לרוץ שוב על המעבד בקרוב
מה זה אומר שיש מעל 100 תהליכים מבחינת cfs
שהקוונטום לכל תהליך יהיה
min_granuality
איך קיצור בחצי של הmin_granuality ישפיע על תהליכים אינטרקטיבים ואיך על חישוביים
מבחינת זמן המתנה לאינטרקטיבים
ותגובה לחישוביים
זה ישפר את זמן ההמתנה לאינטרקטיבים
כי עכשיו יעבור פחות זמן עד הבאה הבאה שהתהליך יקרא
לחישוביים זה לא ישנה
כי באותו פרק זמן הוא פשוט יקרא פעמיים לחצי מהמזמן ויתקדם אותו דבר
אם כמובן החלפת הקשר התקצרה בחצי
איזה סוג תהליכים יעדיפו להשתמש במגנון שנותן יותר זמן ריצה ככל שתהליך עובר יותר ephocs במעבד
תהליכים חישוביים
משום שהם צריכים הרבה זמן מעבד והם יאהבו גישה שתיתן להם יותר מהאינטרקבים
מה עושה xchng
איך הייתה נראית החתימה שלה בC
הפקודה מקבלת כתובת בזכרון וערך, ומשימה את הערך אל הכתובת הנתונה. ערך החזרה שלה יהיה
הערך הקודם שהיה בכתובת לפני ההשמה. אם הייתה ממומשת בשפת C חתימתה היתה:
uint xchg( uint *address, uint newval );