פרויקט מערכת עבודות שאפשר להסביר¶
נבנה מערכת מקומית שמקבלת עבודות חישוב, שומרת את המצב שלהן ומאפשרת למשתמש לסגור את החלון ולחזור מאוחר יותר. היא צריכה להמשיך להיות מובנת גם כשworker קורס, כשהעדכון נקטע וכשבקשת cancel מגיעה יחד עם completion.
המערכת מחברת ממשק C#, שירות Windows, מנוע C++ ופרוטוקול מקומי. מעבדת הדרייבר מפרק 13 נשארת רכיב נפרד עם interface מוגבל; משלבים אותה במסלול המוצר רק אם אפשר להצביע על צורך אמיתי ביכולת שלה. בנוסף משלימים שתי מעבדות מתוך ששת מסלולי ההתמחות, ומוסרים לכל אחת מימוש, חוזה חיים וחקירת כשל לפי מדריך ההתמחויות.
המוצר שבונים¶
המשתמש יכול להגיש עבודה, לבדוק מצב, לבקש ביטול ולקבל תוצאה של עבודה קודמת. העבודה הבסיסית מחשבת count וchecksum של קלט מוגבל, ובגרסה הבאה מוסיפים סוג נוסף. השירות קובע מי רשאי להגיש ולקרוא, מגביל קיבולת ושומר journal של intent ותוצאה.
המנוע פועל בworker שמנוהל בjob. הממשק אינו מחזיק pointer לזיכרון השירות, והdriver אינו מקבל מבנה שמכיל pointers פרטיים של התהליך. לכל גבול יש version, מגבלת אורך וקוד שגיאה בעל משמעות מוגדרת.
הקלט של מסלול הייחוס הוא bytes שנמסרו כחלק מהבקשה בתוך מגבלה מפורשת. הרחבה שקוראת קובץ מוסיפה חוזה נפרד של פתיחה, זהות וTOCTOU; היא אינה נותנת לשירות בעל הרשאות לקרוא נתיב שרירותי רק מפני שמשתמש סיפק אותו.
שלבי ההגשה¶
השלב הראשון מקבע חוזים ותרשימי בעלות לפני UI. מריצים מודל קבלת עבודה, retry וcompletion מאוחר ומקבלים ביקורת על מצבי הכשל.
השלב השני מחבר transport, אימות זהות, worker וjournal. מריצים client פשוט ללא GUI ומוכיחים recovery בכל נקודות הקריסה המוגדרות. אחריו מחברים את ממשק C# ואת מעטפת הinterop בלי לשנות את משמעות התוצאה.
השלב השלישי מוסיף tracing, חבילת אבחון ותקציבי עומס. מוסרים לחוקר אחר תקלה עיוורת עם build ID ונתוני שחזור. התיקון צריך לשמור על החוזים שכבר אושרו.
השלב הרביעי בונה ומתקין במכונה נקייה, משדרג מגרסה קודמת ובודק rollback בהתאם לschema. בסיום מקבלים סוג עבודה חדש שלא היה בפתרון הראשוני ומוסיפים אותו בלי לשבור client ישן בתוך טווח התאימות שהוגדר.
הראיות שמגישים¶
ההגשה כוללת source וקבצי build, חבילה, manifest, רשימת תלויות, symbols, תרשימי ownership, מטריצת הרשאות ודוח בדיקות. מצרפים trace של פעולה אחת שחוצה את כל השכבות, חקירת crash או hang, ונתוני עומס עם שיעור הצלחה וtimeouts.
המעבדה של הקרנל כוללת גרסת WDK, תצורת VM, debugger ותוצאות הבדיקות מפרק 13. מעבדת ההתמחות כוללת source version של הדוגמה שנבחרה ומסלול failure ייעודי. אין לטעון שבוצעה בדיקת חומרה כאשר הורץ רק מודל במצב משתמש.
איך בודקים את ההבנה¶
הציון מתחלק לנכונות וחוזים, 20 נקודות; בעלות ומקביליות, 25; recovery, 15; הבנת OS, 15; ביצועים, 10; שחזור ומסירה, 10; והרחבה עצמאית, 5. ציון המעבר הוא 80, עם תיקון חובה של כשל lifetime, data race, עקיפת הרשאה או אובדן מידע שכבר אושר בניגוד לחוזה.
ההגנה כוללת שינוי קוד והסבר של ראיות. הלומד צריך לדעת מדוע pointer עדיין חי, מדוע completion שייך לניסיון מסוים ואיך אפשר לדעת מה שרד קריסה. מספר הטכנולוגיות בתרשים אינו חלק מהציון.