Функции планировщика процессов: добровольный вызов, переключение между процессами, анализ нажатия клавиш Ctrl-D. Составление алгоритма работы программы, разработка процедуры планировщик и процедуры анализа клавиш. Организация интерфейса пользователя.
Аннотация к работе
Переключение между процессами осуществляется по алгоритму "очередь с накапливаемыми приоритетами". Для отображения работы планировщика каждый процесс рисует линии. В ходе работы должен быть произведен анализ поставленной задачи, составлен алгоритм работы программы, разработаны процедуры, реализующие процессы, разработаны процедуры планировщика, разработаны процедуры анализа клавиш. Переключения между процессами выполняется по алгоритму "очередь с накапливаемыми приоритетами". Суть данного алгоритма в том, что каждый процесс имеет свой приоритет и переключение на него будет происходить с определенной вероятностью P.Каждый процесс представляет собой процедуру (proc_1, proc_2, proc_3, proc_4, proc_5, proc_6), состоящую из адреса начала процедуры, команд процесса и команды возврата. Для визуального отображения работы планировщика каждый процесс должен закрасить 3200 пикселей в виде прямоугольника. Закрашивание пикселя выполняется с помощью функции 0ch прерывания 10h. После того как процесс завершится и передаст управление основной программе значения этих регистров должны быть сохранены в стек данного процесса. Так как метка на каждый процесс содержит адрес, то для того чтобы вызвать нужную процедуру достаточно записать этот адрес в переменную proc_p.Для сохранения словосостояний процесса используется процедура save_. Используя команды cmp и JCC значение по адресу p сравнивается с числами 1h, 2h, 3h, 4h, 5h, 6h. После каждой из меток выполняются команды сохранения регистров CX, AX, DX в стек. После записи в стек адрес вершины стека записывается как значение по адресу на который указывает одна из переменных sp1, sp2, sp3, sp4, sp5, sp6. Данные переменные содержат адрес по которому записан адрес вершины каждого из стеков после записи.Процедура анализа клавиш расположена в основном коде программы после метки main. Проверка нажатия клавиш происходит поэтапно: 1)проверка факта нажатия клавиши Для проверки факта нажатия клавиши используется функция 0bh прерывания 21h. Поэтому использование данной функции позволит выполнять следующие, после проверки, команды без ожидания нажатия клавиш.Программа работает в графическом режиме 320х200, 256 цветов.Предназначена для моделирования работы планировщика, управляющего 6-ю процессами с заранее заданными параметрами. Процессы переключаются добровольно. Выбор следующего процесса осуществляется по алгоритму "очередь с накапливаемыми приоритетами".В курсовой работе разработана программа планировщика для 6 процессов. Визуально можно заметить что те процессы которые имеют более низкий приоритет выполняются менее часто. Загрузка и сохранение словосостояние каждого процесса выполняется не в самом прерывании 60h а перед вызовом процесса и после. Одной из основных задач, решаемых в данной курсовой работе, является переключение стеков и загрузка/сохранение параметров процессов, так как вызов процедур сохранения и загрузки приводит к потере данных если они были записаны в регистры.
План
Содержание
Введение
1. Анализ проставленной задачи
2. Разработка процедур, реализующих процессы
3. Разработка процедур планировщика
4. Разработка процедур анализа клавиш
5. Организация интерфейса пользователя
6. Руководство пользователя
Заключение
Список литературы
Приложение планировщик клавиша программа интерфейс
Введение
В данной курсовой работе разрабатывается планировщик процессов в ОС MS-DOS. Количество моделируемых процессов - 6. Планировщик вызывается добровольно. Переключение между процессами осуществляется по алгоритму "очередь с накапливаемыми приоритетами". Для отображения работы планировщика каждый процесс рисует линии. Выход из приложения выполняется комбинацией клавиш "Ctrl D".
В ходе работы должен быть произведен анализ поставленной задачи, составлен алгоритм работы программы, разработаны процедуры, реализующие процессы, разработаны процедуры планировщика, разработаны процедуры анализа клавиш.
1. Анализ поставленной задачи
В соответствии с задание программа должна выполнять следующие действия: 1) Добровольный вызов планировщика
2) Переключение между процессами
3) Анализ нажатия клавиш Ctrl-D
Добровольный вызов планировщика базируется на идее перехвата прерывания 60h (пользовательское прерывание). Для этого в таблицу векторов прерываний записывается адрес процедуры планировщика процессов в формате сегмент:смещение. Вызов планировщика происходит после того как процесс полностью истратит отведенный ему квант времени. Т.е. процесс добровольно освободит машинный ресурс для следующего процесса и перейдет в режим ожидания.
Переключения между процессами выполняется по алгоритму "очередь с накапливаемыми приоритетами". Суть данного алгоритма в том, что каждый процесс имеет свой приоритет и переключение на него будет происходить с определенной вероятностью P. Чем ниже число приоритета, тем выше вероятность P. Данный алгоритм может быть реализован генератором случайных чисел (ГСЧ). Пусть An - массив размерностью 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)загружать параметры процесса
После того как процесс приостановится, но не завершится, его параметры изменятся и их необходимо сохранить. Для хранения параметров используется специальным образом организованная область памяти, такая как стек. Под каждый процесс выделяется некоторый объем памяти (колво адресного пространства). Таким образом стек условно делится на несколько стеков. Для того чтобы сохранить данные в стек, необходимо переместить указатель стека на дно стека текущего процесса. Затем занести в стек параметры и сохранить адрес вершины стека. Для загрузки параметров в указатель стека записывается сохраненный адрес вершины стека. Т.е. для стека каждого процесса необходимо минимум две переменные: 1 - хранит адрес дна стека, 2 - адрес вершины стека.
Кроме того для того чтобы загружать или сохранять словосостояние процессов необходимо в самом начале загрузить в стеки каждый из процессов.
Вывод
В курсовой работе разработана программа планировщика для 6 процессов. Каждый процесс выполняется с заданным приоритетом. Визуально можно заметить что те процессы которые имеют более низкий приоритет выполняются менее часто. Однако не смотря на то, что процесс имеет самый низкий приоритет, ему гарантированно будет выделен квант времени.
Загрузка и сохранение словосостояние каждого процесса выполняется не в самом прерывании 60h а перед вызовом процесса и после. После того как процесс истратил свой квант времени он не вызывает прерывание 60h. Прерывание вызывается после проверки комбинации клавиш.
Одной из основных задач, решаемых в данной курсовой работе, является переключение стеков и загрузка/сохранение параметров процессов, так как вызов процедур сохранения и загрузки приводит к потере данных если они были записаны в регистры. Для решения данной проблемы процедуры загрузки и сохранения были помещены перед и после вызова процесса. Однако эти процедуры должны выполняться непосредственно в процедуре планировщика. Для того чтобы загрузка и сохранение выполнялись внутри планировщика можно продублировать параметры в память. А после выполнения процесса обновить эти параметры. Вызов процедур и остальные команды не затронут параметры.
Список литературы
1. Олифер В., Олифер Н. Сетевые операционные системы: учебник для вузов. 2-е изд. - СПБ.: Питер, 2009. - 669с.:ил.