1 מספר זהות : סמסטר ב תשפ" ב תאריך : 2 .202 06 13 שעה : :00 14 משך הבחינה : 3 שעות חומר עזר : כל חומר עזר כתוב מותר בחינה בקורס: מערכות הפעלה מרצה: משה סולאמי הנחיות: בבחינה 4 שאלות בעלות ניקוד זהה, בסך של 100 נקודות את התשובות יש לכתוב ב טופס הבחינה במקום המיועד לכך מיד לאחר כל שאלה. מחברת הבחינה לא תיבדק. הבחינה הינה עם חומר פתוח )כל חומר עזר כתוב מותר(, כ ולל מחשבון. לכל תשובה יש לצרף הסבר קצר ) 3 - 2 שורות בלבד ( . תשובה ללא הסבר לא תזכה בנקודות. עמימות או כתיבת תשובות )או חלקן( שלא קשורות לשאלה תוריד נקודות. טופס הבחינה כולל 9 עמודים )כולל עמוד זה(. בהצלחה! מדבקית ברקוד 2 שאלה 1 לכל אחד מהסעיפים יש לענות נכון/לא נכון ולצרף הסבר. תשובה נכונה עם הסבר שגוי או לא קשור לא תזכה בנקודות א ) 5 נק'( בכונן SSD , קריאות מרובות מ אותו קובץ אינן מאיצות את שחיקת הדיסק. __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ ב ) 5 נק'( ה - turnaround time הממוצע של תזמון FIFO תמיד עדיף או שווה ל - RR __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ ג ) 5 נק'( במשתנ י תנא י , אם נבטל את תפיסת המנעול המובנית ב - wait ובמקום זאת נבצעה באופן ידני, זה לא ישפיע על הנכונות ולא יוסיף בעיות חדשות. __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ ד ) 5 נק'( חוטים במרחב המשתמש ) user threads ( יכולים לשפר את ביצועי התוכנית ___ _____________________________________________________ __ _____________________________________________________ _____ _____________________________________________________ _____ _____________________________________________________ _____ __________________________________________________________ __________________________________________________________ ה ) 5 נק'( שימוש ב - DMA חוסך את העברת הנתונים מ/אל ההתקן בלבד. ___ _____________________________________________________ __ _____________________________________________________ _____ _____________________________________________________ _____ _____________________________________________________ _____ __________________________________________________________ __________________________________________________________ 3 שאלה 2 בשאלה זו יש לממש מנעול קוראים - כותבים ) Reader-Writer Lock ( אשר מקיים את כל שלוש התכונות שנלמדו עבור מנעולים : מניעה הדדית , חופש מק י פאון , ו הוגנות ראשית, יש להגדיר מחדש את תכונות אלו באופן שתואם למנעול קוראים - כותבים, ולאחר - מכן יש לספק מימוש מנעול אשר מקיים את התכונות א ) 5 נק'( עבור מנעולים נלמדו שלוש תכונות שמימוש מנעול יכול לקיים: מניעה הדדית, חופש מקיפאון, והוגנות. תכונות אלו אפיינו את הפעולה של מנעול רגיל. הגדירו מחדש את שלוש תכונות אלו , כך שיאפיינו באופן מדויק את הפעולה של מנעול קוראים - כותבים כלומר, יש לנסח מחדש את ההגדרות כך שיהיו תואמות באופן ספציפי לתנאים הנדרשים במימוש מנעול קוראים - כותבים. שימו לב: ההגדרות אינן בהכרח זהות לאלו של מנעול רגיל. מניעה הדדית ) mutual exclusion ( : ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ חופש מקיפאון ) deadlock-freedom ( : ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ הוגנות ) fairness ( : ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ 4 ב ) 15 נק'( ממשו מנעול קוראים - כותבים אשר מקיים את שלוש התכ ונות , עם שימוש בסמפורים בלבד ) ללא פעולות אטומיות או אובייקטי סנכרון אחרים(: typedef struct __RW_LOCK { __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ } RWLock ; void init ( RWLock *lock) { __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ } void destroy ( RWLock *lock) { __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ } void acquire_writelock ( RWLock *lock) { __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ } 5 void release_writelock ( RWLock *lock) { __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ } void acquire_readlock ( RWLock *lock) { __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ } 6 void release_readlock ( RWLock *lock) { __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ __________________________________________________________ } ג ) 5 נק'( הוכיחו בקצרה שמימוש המנעול בסעיף ב' אכן מקיים את שלוש התכונות. מניעה הדדית: ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ חופש מקיפאון: ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ הוגנות: ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ 7 שאלה 3 נתונה מערכת קבצים VSFS עם superblock בבלוק 1 , ושאר מערכת הקבצים מבלוק 2 והלאה . תוכן ה - superblock מיוצג ע"י המבנה הבא: strcut superblock { int bsize; // block size int inode_size; // sizeof(struct inode) int nblocks; // number of data blocks on the disk int ninodes; // number of inodes int inode_start; // start of inodes area int data_start; // start of data block area int i_bmap_start; // start of inode bit map int d_bmap_start; // start of data bit map int max_file_size; // maximum size of file .......... } כל inode מכיל 12 מצביעים ל - data , מתוכם 9 הראשונים בגישה ישירה, 2 הבאים בגישה עקיפה, והאחרון בגישה עקיפה כפולה ) double indirect .( גודל מצביע הוא 4 בתים. נתונים הערכים הבאים: bsize = 4096 inode_size = 128 nblocks = 200 * 1000 * 1000 ninodes = 12 * 1000 * 1000 א ) 10 נק'( לגבי כל אחד מהשדות הבאים, ציינו האם ניתן לדעת את ערכו ) מחקו את המיותר( ואם כן מה הערך? יש ל צרף נימוק או פירוט החישוב עבור כל ערך. inode_start לא ניתן לדעת ניתן לדעת ___ _____________________________________________________ __ ___ _____________________________________________________ __ data_start לא ניתן לדעת ניתן לדעת ___ _____________________________________________________ __ ___ _____________________________________________________ __ i_bmap_start לא ניתן לדעת ניתן לדעת ___ _____________________________________________________ __ ___ _____________________________________________________ __ d_bmap_start לא ניתן לדעת ניתן לדעת ___ _____________________________________________________ __ ___ _____________________________________________________ __ max_file_size לא ניתן לדעת ניתן לדעת ___ _____________________________________________________ __ ___ _____________________________________________________ __ 8 ב ) 5 נק'( נתון קובץ בגודל המקסימלי האפשרי. המשתמש ביצע מחיקה של קובץ זה ממערכת הקבצים )לחלוטין, כלומר לא נותרו hard links אל הקובץ .( במקרה הגרוע ביותר, מה מספר הבלוקים המקסימלי שנצטרך לקרוא ולכתוב תוך כדי המחיקה ? יש לפרט את כל הבלוקים. ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ג ) 10 נק'( בתיקייה עם קובץ יחיד בשם .txt a ב גודל 40,000 , במערכת קבצים חדשה ו ריקה )מלבד הנתון(, משתמש ביצע: mkdir d1 cp a.txt d1/x.txt ln a.txt d1/y.txt ln -s a.txt d1/z.txt מיד לאחר מכן, המשתמש ביצע את הפקודה הבאה: rm -r d1 # remove all files in d1, and d1 itself תאר את הפעולות במערכת הקבצים, לפי סדר הגישה, בביצוע הפקודה rm כמה בלוקים צריך לקרוא , לכתוב , ומאיזה סוג ) data, inode, inode bitmap וכו'( ? ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ 9 שאלה 4 תזכורת: יש לפרט ולנמק את כל החישובים. נתונה מערכת עם גודל דף של 4KB , כל כניסה בטבלת הדפים ) PTE ( מכילה מספר מסגרת ועוד ביט Present , וכל טבלה מאוחסנת בדף אחד בדיוק. א ) 10 נק'( נתון שבמצב התאורטי שבו תהליך מ שתמש ב כל הדפים במרחב ה זיכרון שלו, טבלת ד פים ב - 3 רמות תדרוש 2 2048 1+2048+ בלו קים בזיכרון הפיזי מה מרחב הכתובות של תהליך, ומה גודל הזיכרון הפיזי המקסימלי במערכת זו? ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ב ) 5 נק'( כיצד תשתנה התשובה לסעיף א' אם עבור תהליך שמשתמש בכל הדפים שלו , טבלת דפים ב - 2 רמות תדרוש 1+1024 בלוקים בזיכרון הפיזי ? ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ג ) 10 נק'( נתון תהליך אשר משתמש ב - 5 דפים של זיכרון, כאשר 2 מהדפים רצופים בזיכרון הוירטואלי של התהליך. מה הגודל המינימלי ו מה המקסימלי של הזיכרון הפיזי שתתפוס טבלת הדפים של התהליך, לפי נתוני סעיף א' וסעיף ב' ? סה"כ י ש לספק 4 תשובות ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __ ___ _____________________________________________________ __