- •Лабораторна робота n6
- •Зміст роботи
- •Довідкові дані
- •Суть переривань від зовнішніх пристроїв.
- •Використання апаратних переривань, пріоритети.
- •Вимоги до процедур обробки переривань.
- •"Перехоплення" переривань.
- •Повторне входження
- •Порядок виконання роботи.
- •Організація однопроцесорних мультипрограмних систем.
- •Ознайомлення з прикладом організації обробки переривань від зовнішніх пристроїв
- •Ознайомлення з прикладом організації мультипрограмного режиму
- •Виконання варіанту завдання
- •Послідовність дій для зупинки задачі.
- •Послідовність дій для зняття задачі з виконання.
- •Початковий модуль моделі мультипрограмної системи
- •Int 21h ; закінчити роботу
- •Завдання на лабораторну роботу.
- •Питання для перевірки:
Ознайомлення з прикладом організації обробки переривань від зовнішніх пристроїв
На прикладах підпрограм Setint8, Setint9, Userint8, Userint9, Retint8, Retint9 ознайомитись:
З організацією "перехоплення" апаратних переривань (Setint8, Setint9).
З організацією процедур користувача для обробки апаратних переривань від клавіатури (Userint9 - варіати 1 та 2) та таймера (Userint8 - варіант 3)
Відновлення "перехоплених" векторів переривань (Retint8, Retint9).
Ознайомлення з прикладом організації процедури з повторним входженням на прикладі процедури Vcount.
Процедура Vcount є процедурою, яка допускає повторне входження. Процедури із повторним входженням дозволяють "одночасне" виконання з різними значеннями фактичних параметрів. Під "одночасним" виконанням мається на увазі наступий процес. Процедура запускається з першим набором фактичних параметрів, під час свого виконання переривається і в процедурі обробки переривання запускається повторно з другим набором фактичних параметрів, знову переривається і повторно запускається з наступним набором фактичних параметрів і т.д. Процедура обробки переривань в свою чергу може ініціалізувати продовження виконання процедури Vcount з любим, раніше заданим, набором фактичних параметрів. Таким чином, процедура Vcount не потребує наявності своєї окремої копії в пам'яті для кожного запуску при "одночасному" виконанні. Необхідною умовою для процедур з повторним входженням є розміщення даних в стеці.
Для вивчення процедури Vcount необхідно:
Написати власну програму на мові Ассемблера з визовами процедури Vcount з різними фактичними параметрами
Помістити у власну програму текст процедури Vcount
Запускати власну программу з різними значеннями фактичних параметрів процедури Vcount під управлінням налагоджувача. Звернути увагу на порядок використання стека для збереження даних процедури.
ПРИМІТКА. Допускається створення та подальше використання власної процедури, аналогічної Vcount.
Ознайомлення з прикладом організації мультипрограмного режиму
В моделі мультипрограмної системи використовуються такі стани задач (масив init):
Ready (0) - задача готова до початкового запуску
Execute (1)- задача виконується (виділені їй кванти часу не вичерпались)
Hesitation (2) - задача чекає на чергові кванти часу
Close (4)- задача закінчила свою роботу
Stop (8)- задача зупинена (їй не виділяються кванти часу)
Absent (16)- задача відсутня
В менеджері квантів (процедура Userint8) відпрацьовуються стани Ready, Execute, Hesitation , стани Execute, Hesitation, Close встановлюються, задачі зі станами Close, Stop, Absent ігноруються. Стан Ready для всіх задач установлюється під час запуску моделі. Фонова задача має постійний статус типу Hesitation, вона запускається під час запуску моделі . Фонова задача виконується тільки при умові відсутності других задач, або при неможливості виконання інших задач, по тих чи інших причинах.
Виконання варіантів завдань може бути пов'язане із установкою та відпрацюванням станів Stop і Absent, відпрацювання стану Close (перехід в стан Ready або Absent), заміною початкового стану задач із Ready на Absent, установка стану Ready і т.п.
Для ознайомлення з роботою мультипрограмної системи необхідно:
На основі програми п.4 створити exe-файл та, запустивши його, провести моделювання без змін у початковому файлі. (запуск 10 задач, всі задачі використовують по одному кванту часу, квант часу - період системного таймера). Закінчення роботи моделі наступає після виконання фонової задачі або при відтисканні клавіші Esc.
Шляхом зміни розміру кванту часу (time_slice) у директиві equ добитися візуальної "одночасності" виконання задач.
Провести експерименти по зміні кількості задач (max_prg не більше 16!) та зміні кількості квантів на різні задачі (масив clock)
Провести експерименти п.п.b) та c) при зміні розрядності лічильника в процедурі Vcount
