25. सहकारी शेड्यूलिंग
कार्य बारी-बारी चलाएँ और नीति को CPU निर्देशों से अलग समझें।
यह पाठ खोलें →
1. अनुमान और निष्पादन क्रम
प्रयोग प्रोग्राम चलाने से पहले आउटपुट अनुमान करें और पहले तीन चलाए निर्देशों का क्रम लिखें। आवश्यक रजिस्टर, फ्लैग या मेमोरी दर्ज करें। फिर एक-एक कदम चलाकर मिलाएँ।
LOAD 1
CALL taskA
CALL taskB
HALT
taskA: PRINT
SLEEP 500
RETURN
taskB: LOAD 101
PRINT
RETURN
इनपुट कतार में रखें: कोई नहीं
मेमोरी शुरू करें: शुरू में सभी बाइट शून्य
प्रयोग अनुमान कुंजी
आउटपुट: 1, 101
2. बनाएँ और जाँचें
0 से 3 तक चक्रों की संख्या पढ़ें। A का काउंटर 0 और B का 100 से शुरू करें। हर चक्र में A को बढ़ाने और छापने के लिए बुलाएँ, फिर B को।
ज़रूरी निर्देश प्रकार: INPUT, LOOP, CALL, RETURN
चुनौती समाधान उदाहरण
INPUT
COPY R0 R3
LOAD 0 R1
LOAD 100 R2
LOOP R3
CALL taskA
CALL taskB
RETURN
HALT
taskA: LOAD R1
ADD 1
COPY R0 R1
PRINT
SLEEP 0
RETURN
taskB: LOAD R2
ADD 1
COPY R0 R2
PRINT
SLEEP 0
RETURN
वास्तविक जाँच मामले
मामला 1
- इनपुट
0- शुरुआती मेमोरी
शुरू में सभी बाइट शून्य- अपेक्षित आउटपुट
कोई नहीं
मामला 2
- इनपुट
1- शुरुआती मेमोरी
शुरू में सभी बाइट शून्य- अपेक्षित आउटपुट
1, 101
मामला 3
- इनपुट
3- शुरुआती मेमोरी
शुरू में सभी बाइट शून्य- अपेक्षित आउटपुट
1, 101, 2, 102, 3, 103
3. मशीन समझाएँ
CALL/RETURN की बारी हार्डवेयर प्रीएम्प्शन जैसी है?
तर्क और शिक्षण टिप्पणी
नहीं। यह सहकारी वितरक मॉडल है; शेड्यूलर नीति/अवधि स्पष्ट सिस्टम अनुकरण में है।
26. कोर में काम बाँटना
स्वतंत्र काम बाँटें और परिणाम जोड़ें।
यह पाठ खोलें →
1. अनुमान और निष्पादन क्रम
प्रयोग प्रोग्राम चलाने से पहले आउटपुट अनुमान करें और पहले तीन चलाए निर्देशों का क्रम लिखें। आवश्यक रजिस्टर, फ्लैग या मेमोरी दर्ज करें। फिर एक-एक कदम चलाकर मिलाएँ।
STORE 1 0
STORE 2 1
STORE 3 2
STORE 4 3
LOAD [0]
MUL R0
COPY R0 R1
LOAD [2]
MUL R0
ADD R1
PRINT
HALT
इनपुट कतार में रखें: कोई नहीं
मेमोरी शुरू करें: 0: 1, 1: 2, 2: 3, 3: 4
प्रयोग अनुमान कुंजी
आउटपुट: 10
2. बनाएँ और जाँचें
मेमोरी 0–3 में चार काम के मान हैं। सम कार्यकर्ता value[0]² + value[2]² और विषम value[1]² + value[3]² निकाले। दोनों बुलाएँ। सम कुल, विषम कुल और संयुक्त कुल क्रम में छापें।
ज़रूरी निर्देश प्रकार: CALL, MUL, LOAD, ADD
चुनौती समाधान उदाहरण
CALL evenWorker
PRINT
CALL oddWorker
PRINT
LOAD R1
ADD R2
PRINT
HALT
evenWorker: LOAD [0]
MUL R0
COPY R0 R1
LOAD [2]
MUL R0
ADD R1
COPY R0 R1
RETURN
oddWorker: LOAD [1]
MUL R0
COPY R0 R2
LOAD [3]
MUL R0
ADD R2
COPY R0 R2
RETURN
वास्तविक जाँच मामले
मामला 1
- इनपुट
कोई नहीं- शुरुआती मेमोरी
0: 1, 1: 2, 2: 3, 3: 4- अपेक्षित आउटपुट
10, 20, 30- ज़रूरी मेमोरी पढ़ाई
0, 1, 2, 3
मामला 2
- इनपुट
कोई नहीं- शुरुआती मेमोरी
0: 0, 1: 4, 2: 5, 3: 1- अपेक्षित आउटपुट
25, 17, 42- ज़रूरी मेमोरी पढ़ाई
0, 1, 2, 3
मामला 3
- इनपुट
कोई नहीं- शुरुआती मेमोरी
0: 10, 1: 1, 2: 2, 3: 3- अपेक्षित आउटपुट
104, 10, 114- ज़रूरी मेमोरी पढ़ाई
0, 1, 2, 3
3. मशीन समझाएँ
दो कार्यकर्ता कुल क्रम से निकालना समानांतर निष्पादन साबित करता है?
तर्क और शिक्षण टिप्पणी
नहीं। यह विभाजन/संयोजन जाँचता है। अलग VM पट्टियाँ स्वतंत्र स्थिति दिखाती हैं, हार्डवेयर गति का दावा नहीं।
27. इंटरप्ट और हैंडलर
घटना संभालें और रोके गए मुख्य मान को बहाल करें।
यह पाठ खोलें →
1. अनुमान और निष्पादन क्रम
प्रयोग प्रोग्राम चलाने से पहले आउटपुट अनुमान करें और पहले तीन चलाए निर्देशों का क्रम लिखें। आवश्यक रजिस्टर, फ्लैग या मेमोरी दर्ज करें। फिर एक-एक कदम चलाकर मिलाएँ।
STORE 4 240
LOAD 17
CALL handler
PRINT
LOAD [241]
PRINT
HALT
handler: PUSH
LOAD [240]
ADD 1
STORE 241
POP
RETURN
इनपुट कतार में रखें: कोई नहीं
मेमोरी शुरू करें: शुरू में सभी बाइट शून्य
प्रयोग अनुमान कुंजी
आउटपुट: 17, 5
2. बनाएँ और जाँचें
मुख्य पूर्णांक, फिर घटना बाइट पढ़ें। घटना पता 240 पर रखें। हैंडलर बुलाएँ जो PUSH/POP से मुख्य R0 बचाते हुए घटना + 1 को बाइट मेमोरी 241 पर लिखे। बहाल मुख्य मान, फिर संग्रहित घटना परिणाम छापें।
ज़रूरी निर्देश प्रकार: INPUT, PUSH, POP, CALL, STORE
चुनौती समाधान उदाहरण
INPUT
COPY R0 R1
INPUT
STORE 240
LOAD R1
CALL handler
PRINT
LOAD [241]
PRINT
HALT
handler: PUSH
LOAD [240]
ADD 1
STORE 241
POP
RETURN
वास्तविक जाँच मामले
मामला 1
- इनपुट
17, 4- शुरुआती मेमोरी
शुरू में सभी बाइट शून्य- अपेक्षित आउटपुट
17, 5- अपेक्षित अंतिम मेमोरी
240: 4, 241: 5- ज़रूरी मेमोरी पढ़ाई
240, 241
मामला 2
- इनपुट
-8, 0- शुरुआती मेमोरी
शुरू में सभी बाइट शून्य- अपेक्षित आउटपुट
-8, 1- अपेक्षित अंतिम मेमोरी
240: 0, 241: 1- ज़रूरी मेमोरी पढ़ाई
240, 241
मामला 3
- इनपुट
33, 255- शुरुआती मेमोरी
शुरू में सभी बाइट शून्य- अपेक्षित आउटपुट
33, 0- अपेक्षित अंतिम मेमोरी
240: 255, 241: 0- ज़रूरी मेमोरी पढ़ाई
240, 241
3. मशीन समझाएँ
मुख्य कार्य लौटने से पहले हैंडलर क्या बहाल करे?
तर्क और शिक्षण टिप्पणी
वह मुख्य मान/स्थिति जिसकी बुलाने वाले को ज़रूरत है; घटना काउंटर जानबूझकर बदल सकते हैं। बाइट में 255 की अगली गिनती 0 होती है।