Зміст
Введення
. Аналіз проставленою завдання
. Розробка процедур, що реалізують процеси
. Розробка процедур планувальника
. Розробка процедур аналізу клавіш
. Організація інтерфейсу користувача
. Керівництво користувача
Висновок
Список літератури
Додаток
планувальник клавіша програма інтерфейс
Введення
У цій роботі розробляється планувальник процесів в ОС MS-DOS. Кількість модельованих процесів - 6. Планувальник викликається добровільно. Перемикання між процесами здійснюється за алгоритмом чергу з накопичують пріоритетами raquo ;. Для відображення роботи планувальника кожен процес малює лінії. Вихід з програми виконується комбінацією клавіш Ctrl + D .
У ході роботи повинен бути проведений аналіз поставленого завдання, складений алгоритм роботи програми, розроблені процедури, що реалізують процеси, розроблені процедури планувальника, розроблені процедури аналізу клавіш.
. Аналіз поставленої задачі
Відповідно до завдання програма повинна виконувати наступні дії:
) Добровільний виклик планувальника
2) Перемикання між процесами
) Аналіз натиснення клавіш Ctrl-D
Добровільний виклик планувальника базується на ідеї перехоплення переривання 60h (користувальницьке переривання). Для цього в таблицю векторів переривань записується адреса процедури планувальника процесів у форматі сегмент: зсув. Виклик планувальника відбувається після того як процес повністю витратить відведений йому квант часу. Тобто процес добровільно звільнить машинний ресурс для наступного процесу і перейде в режим очікування.
Перемикання між процесами виконується за алгоритмом чергу з накопичують пріоритетами raquo ;. Суть даного алгоритму в тому, що кожен процес має свій пріоритет і перемикання на нього буде відбуватися з певною ймовірністю P. Чим нижче число пріоритету, тим вище ймовірність P. Даний алгоритм може бути реалізований генератором випадкових чисел (ГВЧ). Нехай A n - масив розмірністю n, де n - кількість вибірок випадкової величини. Також нехай ГВЧ генерує числа від 1 до n з імовірністю P=1/n. Тоді кожен елемент масиву може бути вибраний випадково з однаковою ймовірністю 1/n. Якщо масив А заповнити числами від 1 до 6 так, що число m повторюється (7-m) раз то ймовірність вибірки випадкового числа m з масиву А буде дорівнює P=m/n. Тобто чим частіше повторюється число, тим вище ймовірність вибірки цього числа за допомогою ГВЧ. Для накопичення пріоритету через кожні K вибірок пріоритет кожного процесу збільшується. А саме A [i]:=A [i] +1. Якщо A [i] буде дорівнює максимальному числу пріоритету, то йому присвоюється мінімальне число пріоритету.
Для аналізу натискання клавіші необхідно перевірити той факт, що клавіша була натиснута. Якщо була натиснута яка-небудь клавіша, то проводиться аналіз та перевірка натиснутих комбінацій. У разі якщо була натиснута комбінація Ctrl + D, то програма завершує свою роботу і передає управління MS-DOS. Враховуючи особливість функцій введення з клавіатури в мові асемблер перевірка натискання клавіш буде проводиться 2 рази. Перший раз - перевірка клавіші Ctrl, другий - клавіші D. Для завершення роботи програми використовується переривання 20h.
Крім того, планувальник повинен:
) зберігати параметри процесу;
) завантажувати параметри процесу
Після того як процес призупиниться, але не завершиться, його параметри зміняться і їх необхідно зберегти. Для зберігання параметрів використовується спеціальним чином організована область пам'яті, така як стек. Під кожен процес виділяється деякий обсяг пам'яті (кол-во адресного простору). Таким чином стек умовно ділиться на кілька стеків. Для того щоб зберегти дані в стек, необхідно перемістити покажчик стека на дно стека поточного процесу. Потім занести в стек параметри і зберегти адреса вершини стека. Для завантаження параметрів в покажчик стека записується збережений адреса вершини стека. Тобто для стека кожного процесу необхідно мінімум дві змінні: 1 - зберігає адресу дна стека, 2 - адреса вершини стека.
Крім того для того щоб завантажувати або зберігати словосостояніе процесів необхідно на самому початку завантажити в стеки кожен з процесів.
2. Розробка процедур, що реалізують процеси
Кожен процес являє собою процедуру (proc_1, proc_2, proc_3, proc_4, proc_5, proc_6), що складається з адреси початку процедури, команд процесу і команди повернення. Для візуального відображення р...