2) Генерація випадкової величини;
) Вибірка з масиву процесів по згенерувати випадкове індексом;
) Запис адреси обраного процесу;
) Запис номера обраного процесу.
У мові асемблер відсутній вбудований генератор випадкових чисел. Тому він повинен бути описаний у вигляді процедури. Для даної програми можна вибрати мінімальний генератор Парка-Міллера. Даний генератор складається з процедури WIrandom, Wrandom і WIRandomInit. Отримане випадкове число записується в регістр EAX. Так як диапозон генеруються чисел від 0 до 20 то можна будь використовувати регістр AX.
Отримане число використовується як індекс елемента масиву. Використовуючи індексний адресацію зі зміщенням, значення з масиву mass записується в регістр DX. Необхідне значення зберігається в молодшому байті регістра.
Порівнюючи значення в регістрі DL виконується перехід за певною мітці, в якій в змінну proc_p записується адреса процедури процесу, а в змінну p номер процесу.
Мітка main вказує на адресу початку основного коду програми в якому відбувається виклик планувальника, завантаження і збереження процесу. Виклик процедури процесу, зміна пріоритетів, перевірка натискання Ctrl + D.
. Розробка процедур аналізу клавіш
Процедура аналізу клавіш розташована в основному коді програми після мітки main. Перевірка натиснення клавіш відбувається поетапно:
) перевірка факту натиснення клавіші
) перевірка натискання клавіші Ctrl
) перевірка натискання клавіші D
Для перевірки факту натискання клавіші використовується функція 0bh переривання 21h. Ця функція перевіряє кільцевий буфер клавіатури. Якщо він містить код натиснутої/віджатою клавіші, то прапор Z=1 інакше Z=0. Тому використання даної функції дозволить виконувати наступні, після перевірки, команди без очікування натискання клавіш. Якщо була натиснута яка-небудь клавіша, то викликається функція 02h переривання 16h. При натисканні на клавішу Ctrl в регістр AL поміщається байт. Наявність 1 в третьому бите говорить про те, що була натиснута клавіша Ctrl. Якщо натиснута Ctrl, то командою in з порту 60h в регістр AL буде поміщений код наступної натиснутоюклавіші. При цьому, незалежно від того як довго минуло часу між натисканням клавіші Ctrl і наступної клавішею, в регістр AL при зчитуванні з порту 60h буде поміщений скан-код останньої натиснутоюклавіші. Тобто У разі комбінації D + Ctrl Програма не завершить свою роботу і не передасть управління MS-DOS.
5. Організація інтерфейсу користувача
Програма працює в графічному режимі 320х200, 256 кольорів. Моделювання процесів відбувається відразу після запуску програми. У лівому верхньому кутку виводиться текст DLya vihoda iz programmi nazhmite Ctrl + D raquo ;. На малюнку 1 представлений інтерфейс користувача.
Малюнок 1 - інтерфейс користувача
6. Керівництво користувача
Програма є виконуваним com файлом. Призначена для моделювання роботи планувальника, керуючого 6-ю процесами з наперед заданими параметрами. Процеси перемикаються добровільно. Вибір наступного процесу здійснюється за алгоритмом чергу з накопичують пріоритетами raquo ;. Кожні 100 викликів процесів їх пріоритети змінюються.
Системні вимоги:
IBM-PC сумісний комп'ютер з процесором 80368,
4Мб пам'яті,
відеоадаптер EGA,
ОС MS-DOS 3.3.
Для кожного процесу виділяється однакову кількість кванта часу і вимірюється в циклах. Кожен процес малює 5 точок. Кожна точка малюється із затримкою в 2000 циклів.
Після запуску програми введення даних не потрібно.
Вихід здійснюється натисканням комбінації клавіш Ctrl + D.
Висновок
У роботі розроблена програма планувальника для 6 процесів. Кожен процес виконується із заданим пріоритетом. Візуально можна помітити що ті процеси які мають нижчий пріоритет виконуються менш часто. Однак не дивлячись на те, що процес має найнижчий пріоритет, йому гарантовано буде виділений квант часу.
Завантаження і збереження словосостояніе кожного процесу виконується не в самому перериванні 60h а перед викликом процесу і після. Після того як процес витратив свій квант часу він не викликає переривання 60h. Переривання викликається після перевірки комбінації клавіш.
Однією з основних завдань, що вирішуються в даній курсов...