פרויקט מסכם: שירות מוגבל ומפוקח¶
מטרת הפרויקט¶
נהפוך את שרת שני ערוצי התקשורת מהפרק הקודם לשירות שמנהל המערכת מפעיל ומפקח עליו. נשתמש באותם פרוטוקולים ובאותן בדיקות תקינות, ונוסיף גבולות סמכות, מכסות משאבים, הודעת מוכנות וניקוז. השירות יקבל את נקודות הקצה ממנהל ההפעלה ויעבוד בזהות בלתי מיוחסת.
החוזה הנדרש¶
השירות יקבל בדיוק שני סוקטים מאזינים, אחד של רשת מקומית ואחד מקומי להעברת מתארים. בדיקת סוג הסוקטים תתבצע לפני מסירתם לשכבה האסינכרונית. לקוח מקומי יורשה לפי זהות מוגדרת מראש, בלי להניח שהוא חולק את הזהות הדינמית של השירות. השירות לא ייצור נקודת קצה חלופית כאשר הפעלה חסרה או שגויה.
השרת יחזיק לכל היותר שישה־עשר היתרים לעבודה, ופעולה חוסמת תמשיך להחזיק היתר גם אם הממתין לה בוטל. הודעת המוכנות תישלח לאחר הקמת לולאת השירות ורישום אותות העצירה. עצירה תפסיק קבלה, תנסה לנקז עבודה ותאפשר למפקח לאכוף גבול סיום. היומן יציג הצלחה, דחייה ותקלה בלי להדפיס את תוכן הקלט.
היחידה תחיל מגבלות מעבד, זיכרון ומשימות, תצוגת קבצים מוגבלת ומרחב רשת פרטי. ההגבלות ייבדקו באמצעות פעולות מותרות ואסורות מתוך ההקשר של השירות. יש להסביר במפורש מדוע הסוקטים המתקבלים ממשיכים לעבוד למרות מרחב הרשת הפרטי.
הגשה ובדיקות¶
הגישו קוד, שתי יחידות הפעלה, מפת סמכויות ודוח ניסויים. המפה תתאר לכל משאב מי פותח אותו, מי מחזיק בו, מי רשאי להעבירו ואיזה אירוע מסיים את חייו. הדוח יכלול התחלה לפי ביקוש, כשל בפענוח, לקוח מקומי לא מורשה, עצירה בזמן עבודה, לחץ מעבד וחריגת זיכרון בתהליך מעבדה נפרד עם אותה מדיניות.
אל תגרמו לשרת הייצור להקצות זיכרון בלתי מוגבל לצורך בדיקת המכסה. השתמשו בתוכנית המדידה מההרצאה על קבוצות בקרה וביחידת ניסוי נפרדת. הוספת ממשק טעינה מחדש וממשק בקרה מקומי היא הרחבה לאחר השלמת החוזה הבסיסי, והיא אינה פוטרת מבדיקות הסיום והבעלות.