शेड्यूलिंग, कोर और घटनाएँ · 30 में पाठ 26 · लगभग 15 मिनट
कोर में काम बाँटना
स्वतंत्र काम बाँटें और परिणाम जोड़ें।
01 / समझाएँ
विचार समझें
कई कोर अलग कार्य स्वतंत्र चला सकते हैं। स्वतंत्र काम पहले बाँटा जा सकता है: एक कार्यकर्ता सम क्रमांक और दूसरा विषम क्रमांक वाले काम लेता है। परिणाम जोड़ने के लिए फिर भी सहमत तरीका चाहिए।
सिस्टम प्रयोगशाला कोर पट्टियों के लिए अलग VM बनाती है। यह चुनौती एक VM पर वही बँटवारा क्रम से निकालती है; आउटपुट विभाजन की जाँच करते हैं, समानांतर हार्डवेयर का दावा नहीं। स्वतंत्र परिणाम स्थान पर्याप्त हों तो साझा लिखाई से बचें।
02 / आज़माएँ
होते हुए देखें
सम क्रमांक वाला कार्यकर्ता पते 0 और 2 लेता है: 1² + 3² = 10। सिस्टम दृश्य दोनों पट्टियाँ दिखाता है।
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एक समय में एक निर्देश के लिए एक कदम लें। उदाहरण बदलकर फिर चला सकते हैं।
03 / चुनौती
इसे काम करने दें
मेमोरी 0–3 में चार काम के मान हैं। सम कार्यकर्ता value[0]² + value[2]² और विषम value[1]² + value[3]² निकाले। दोनों बुलाएँ। सम कुल, विषम कुल और संयुक्त कुल क्रम में छापें।
जाँचक संपादक के वर्तमान प्रोग्राम को हर 3 मामले के लिए नई मशीन में चलाता है। वह इनपुट और मेमोरी खुद देता है; प्रयोगशाला का वर्तमान आउटपुट और मेमोरी परिणाम तय नहीं करते।
CALL evenWorker
PRINT
CALL oddWorker
PRINT
LOAD R1
ADD R2
PRINT
HALT
evenWorker:
#
RETURN
oddWorker:
#
RETURNसंकेत चाहिए?
हर मान R0 में वर्ग करें, पहला वर्ग कार्यकर्ता के परिणाम रजिस्टर में रखें, फिर दूसरा जोड़ें।
हल किया समाधान दिखाएँ
प्रोग्राम पढ़ें, हर निर्देश का असर अनुमान करें, फिर प्रयोगशाला में एक-एक कदम चलाएँ।
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इमोजी CPU प्रयोगशाला
इमोजी प्रोग्राम
LOAD, ADD या दूसरा निर्देश नाम लिखकर Space दबाएँ ताकि इमोजी जुड़े। Ctrl/⌘ + Enter चलाता/रोकता है; Escape रोकता है; Ctrl/⌘ + ] इंडेंट करता है। Tab फोकस बदलता है। लेबल कोलन लेते हैं। जंप शून्य-आधारित निर्देश पते लेते हैं।
निर्देश मानचित्र और ब्रेकपॉइंट (0)
ब्रेकपॉइंट निर्देश से पहले रोकते हैं। चलाएँ रुके ब्रेकपॉइंट के पार एक बार बढ़ता है; एक कदम सीधे निर्देश चलाता है। स्रोत बदलने से पुराने ब्रेकपॉइंट और मशीन स्थिति साफ़ होते हैं।
CPU रजिस्टर
- R0
- 0
- R1
- 0
- R2
- 0
- R3
- 0
- R4
- 0
- R5
- 0
- R6
- 0
- R7
- 0
स्टैक और लूप फ़्रेम
SP = 255 − डेटा गहराई − कॉल गहराई। स्टैक मेमोरी से अलग है।
डेटा स्टैक (नीचे → ऊपर)
खाली
कॉल वापसी पते (नीचे → ऊपर)
खाली
लूप फ़्रेम
खाली
आउटपुट और इनपुट
आउटपुट देखने के लिए PRINT चलाएँ।
कतार का इनपुट: खाली
मेमोरी · 256 बाइट · 0 गैर-शून्य
हर खाना पता:मान दिखाता है। R = इस कदम में पढ़ा; W = इस कदम में लिखा। जाँचने या निष्पादन से पहले मान रखने के लिए खाना चुनें। तीर कुंजियों से चलें, पंक्ति के लिए Home/End और पूरी मेमोरी के लिए Ctrl/⌘ + Home/End लें।
निष्पादन रिकॉर्ड · 0 प्रविष्टियाँ
हाल की प्रविष्टियाँ नीचे हैं। अलग पूर्ण पहले/बाद की स्थिति के लिए कोई भी शून्य-आधारित क्रमांक जाँचें।
अपनी चुनौती जाँचें
जब चाहें जाँच सकते हैं। पूर्णता दर्ज करने के लिए हर मामला पास हो।
प्रगति केवल localStorage लेती है। इस ब्राउज़र में रहती है और सर्वर पर नहीं जाती।