25. الجدولة التعاونية
تناوب بين المهام وميّز سياسة الجدولة عن تعليمات المعالج.
فتح هذا الدرس →
1. توقّع وتتبّع
قبل تشغيل برنامج التجربة، توقّع مخرجاته وتتبّع أول ثلاث تعليمات تُنفّذ. راقب السجلات أو الرايات أو الذاكرة ذات الصلة حسب الحاجة. ثم نفّذ البرنامج خطوةً خطوة للمقارنة.
LOAD 1
CALL taskA
CALL taskB
HALT
taskA: PRINT
SLEEP 500
RETURN
taskB: LOAD 101
PRINT
RETURN
أضف المدخلات إلى الطابور: لا يوجد
هيّئ الذاكرة: جميع البايتات صفر في البداية
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:
#
RETURN
taskB:
#
RETURN
برنامجك وملاحظاتك
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
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:
#
RETURN
oddWorker:
#
RETURN
برنامجك وملاحظاتك
3. اشرح الآلة
هل حساب مجموعَي عاملين بالتتابع يثبت تنفيذًا متوازيًا؟
27. المقاطعات ومعالجات الأحداث
عالج حدثًا واستعد قيمة المهمة الأمامية التي قوطعت.
فتح هذا الدرس →
1. توقّع وتتبّع
قبل تشغيل برنامج التجربة، توقّع مخرجاته وتتبّع أول ثلاث تعليمات تُنفّذ. راقب السجلات أو الرايات أو الذاكرة ذات الصلة حسب الحاجة. ثم نفّذ البرنامج خطوةً خطوة للمقارنة.
STORE 4 240
LOAD 17
CALL handler
PRINT
LOAD [241]
PRINT
HALT
handler: PUSH
LOAD [240]
ADD 1
STORE 241
POP
RETURN
أضف المدخلات إلى الطابور: لا يوجد
هيّئ الذاكرة: جميع البايتات صفر في البداية
2. ابنِ وافحص
اقرأ عددًا صحيحًا للمهمة الأمامية ثم بايتًا لحدث. خزّن الحدث في العنوان 240. استدعِ معالجًا يكتب الحدث + 1 في ذاكرة البايتات 241 ويحافظ على R0 الأمامي باستخدام PUSH وPOP. اطبع القيمة الأمامية المستعادة ثم نتيجة الحدث المخزّنة.
أنواع التعليمات المطلوبة: INPUT, PUSH, POP, CALL, STORE
برنامج البداية
INPUT
COPY R0 R1
INPUT
STORE 240
LOAD R1
CALL handler
PRINT
LOAD [241]
PRINT
HALT
handler:
#
RETURN
برنامجك وملاحظاتك
3. اشرح الآلة
ما الذي يجب أن يستعيده المعالج قبل استئناف المهمة الأمامية؟