कार्य: RTT का उपयोग करके एक खिलौना OS को इंस्ट्रूमेंट करें 🧪#

(नियंत्रण के बिना अवलोकन)

उद्देश्य#

इस असाइनमेंट में, आप एक सरल ऑपरेटिंग सिस्टम को उपकरणित करेंगे ताकि RTT-प्रेरित विचारों का उपयोग करके समय के साथ संगति का अवलोकन किया जा सके।

आप बग्स को ठीक नहीं करेंगे, नियमों को लागू नहीं करेंगे, या व्यवहार को अनुकूलित नहीं करेंगे।
आपका लक्ष्य धारणाओं को स्पष्ट करना है।


पृष्ठभूमि (आप क्या अभ्यास कर रहे हैं)#

पारंपरिक ओएस कार्य अक्सर पूछता है:

हम बुरे व्यवहार को कैसे रोकें?

आरटीटी पूछता है:

हम कैसे जानें कि हमारी धारणाएँ कब रुकती हैं?

यह असाइनमेंट अवलोकन पर केंद्रित है, नियंत्रण पर नहीं।


सेटअप#

निम्नलिखित में से कोई एक का उपयोग करें:

  • एक शिक्षण OS (जैसे, xv6, Pintos, Nachos)
  • आपके प्रशिक्षक द्वारा प्रदान किया गया एक खिलौना कर्नेल या सिम्युलेटर
  • एक न्यूनतम प्रक्रिया शेड्यूलर या मेमोरी प्रबंधक जो आपने पहले से बनाया है

आपको पूर्ण लिनक्स कर्नेल की आवश्यकता नहीं है।


कार्य का अवलोकन#

आप अपने सिस्टम में RTT‑शैली के उपकरण को जोड़ेंगे:

  1. एक धारणा की घोषणा करना
  2. समय के साथ व्यवहार का अवलोकन करना
  3. जब धारणा अब लागू नहीं होती है, तो एक संरचित संकेत (“बैज”) निकालना

आपको नहीं करना चाहिए कि सिस्टम व्यवहार में बदलाव करें।


चरण 1: एक धारणा घोषित करें 🧠#

अपने सिस्टम द्वारा वर्तमान में बनाई गई एक धारणा चुनें।

उदाहरण:

  • “एक प्रक्रिया अंततः CPU समय प्राप्त करेगी।”
  • “मेमोरी एक्सेस आवंटित क्षेत्रों के भीतर रहते हैं।”
  • “संदर्भ स्विच प्रक्रिया की स्थिति को बनाए रखते हैं।”
  • “महत्वपूर्ण अनुभाग में केवल एक प्रक्रिया चलती है।”

इस धारणा को एक वाक्य में लिखें।


चरण 2: एक संगति गलियारा परिभाषित करें 🛤️#

बताएं कि उस धारणा के लिए सामान्य व्यवहार कैसा दिखता है।

उदाहरण:

  • शेड्यूलिंग से पहले अधिकतम प्रतीक्षा समय
  • मान्य मेमोरी पता सीमा
  • संदर्भ स्विच से पहले और बाद की अपेक्षित स्थिति

यह गलियारा अपेक्षित व्यवहार को परिभाषित करता है, न कि सहीता।


चरण 3: एक सीमा का अवलोकन करें 🔄#

पहचानें कहाँ प्रणाली में धारणा भटक सकती है।

उदाहरण:

  • शेड्यूलर टिक
  • संदर्भ स्विच
  • मेमोरी एक्सेस
  • लॉक अधिग्रहण / रिलीज

इस सीमा पर साधन केवल जोड़ें।


चरण 4: एक बैज जारी करें 🏷️#

जब व्यवहार गलियारे से बाहर निकलता है, तो एक बैज जारी करें।

एक बैज में शामिल होना चाहिए:

  • क्या हुआ
  • यहाँ हुआ
  • कब हुआ
  • यह क्यों महत्वपूर्ण हो सकता है

उदाहरण (सैद्धांतिक):

[BADGE]
type: CORRIDOR_BREACH
module: scheduler
context: process_wait_time_exceeded
timestamp: 123456

बैज को प्रिंट, लॉग, या स्टोर किया जा सकता है - प्रारूप लचीला है।


चरण 5: कुछ और न करें 🚫#

यह महत्वपूर्ण है।

आपकी प्रणाली को:

  • चलते रहना चाहिए
  • कार्य निष्पादन को अवरुद्ध नहीं करना चाहिए
  • समस्या को ठीक नहीं करना चाहिए
  • अनुसूची या मेमोरी व्यवहार को नहीं बदलना चाहिए

केवल अवलोकन।


डिलिवरेबल्स 📦#

जमा करें:

  1. आपकी धारणा और गलियारे का एक संक्षिप्त विवरण
  2. आपने जो कोड जोड़ा (सामग्री केवल)
  3. नमूना बैज आउटपुट
  4. एक संक्षिप्त विचार (5–7 वाक्य):
    • आपने कौन सा अंतर देखा?
    • क्या यह अपेक्षित था?
    • क्या कुछ आपको आश्चर्यचकित किया?

ग्रेडिंग मानदंड#

आपका ग्रेड इस पर आधारित है:

  • धारणाओं की स्पष्टता
  • अवलोकन की सहीता
  • बैज सिग्नल की गुणवत्ता
  • संयम (कोई प्रवर्तन तर्क नहीं)

आपका नहीं ग्रेड इस पर आधारित है:

  • प्रदर्शन
  • बग ठीक करना
  • विफलता को रोकना

यह क्यों महत्वपूर्ण है#

अधिकांश वास्तविक प्रणाली विफलताएँ इस कारण होती हैं:

  • धारणाएँ चुपचाप बदलती हैं
  • सीमाएँ नहीं देखी जातीं
  • समय को स्पष्ट रूप से ट्रैक नहीं किया जाता

यह असाइनमेंट आपको कार्य करने से पहले बदलाव देखने के लिए प्रशिक्षित करता है।

यह कौशल ऑपरेटिंग सिस्टम से कहीं अधिक बढ़ता है।


वैकल्पिक विस्तार 🌱#

अपने सिस्टम को तनाव में चलाएँ (अधिक प्रक्रियाएँ, तंग मेमोरी, तेज़ टिक) और देखें कि बैज की आवृत्ति कैसे बदलती है।

कुछ भी “ठीक” न करें — बस देखें।


शिक्षक नोट#

यह असाइनमेंट RTT आरेखों के साथ अच्छी तरह से मेल खाता है और इसे एकल प्रयोगशाला सत्र या छोटे प्रोजेक्ट विंडो में पूरा किया जा सकता है।

Updated