
Лабораторная работа №1. «Программная реализация средств представления и управления процессами в многопрограммных ОС».
-
Постановка задачи
При выполнении лабораторной работы необходимо разработать алгоритм и составить программу, имитирующую работу простейшей ОС, (в дальнейшем будем называть ее "системой"), которая должна выполнять перечисленные ниже действия:
– формирование дескрипторов процессов, вводимых в "систему";
– определение состояний, в котором находятся все известные "системе" процессы;
– формирование и ведение списочных структур ("очередей") дескрипторов на основании их состояний, приоритетов и используемой дисциплины диспетчеризации;
-
Структура программы
Программа содержит:
Функции, которые обрабатывают нажатие на кнопки
void __fastcall Button1Click(TObject *Sender); - нажатие кнопки «создать». В этой же функции определяется правильность параметров, вводимых пользователем и определяется место, которое должен занять процесс в одной из очередей.
void__printDeskr();
- отображает новый процесс в таблице.
void __fastcall Button2Click(TObject *Sender); Функции, отслеживающие
void __fastcall Button3Click(TObject *Sender); нажатие на кнопки с именами
void __fastcall Button4Click(TObject *Sender); - устройств. При этом устанавли-
void __fastcall Button5Click(TObject *Sender); ваются значения флагов.
Функция
отслеживает нажатие на кнопки “read”
и “write”, определяющие
действие над файлом – чтение или запись,
устанавливая определенные флаги
void
__fastcall Button7Click(TObject *Sender);
void __fastcall Button8Click(TObject *Sender);
void __fastcall Button9Click(TObject *Sender);
void __fastcall Button10Click(TObject *Sender); -
void __fastcall Button11lick(TObject *Sender);
void __fastcall Button12Click(TObject *Sender)
void __fastcall Button13Click(TObject *Sender); - нажатие кнопки «завершить
активный процесс» . Активному процессу присваивается статус «завершен», производятся неоходимые операции с памятью и файлами (если они используются). определяется процесс, который должен быть выполнен следующим, ему присваивается состояние «выполнение».
void __fastcall Button14Click(TObject *Sender); - нажатие кнопки «квант времени». Активный процесс переводится в состояние «готовность», определяется процесс, который должен быть выполнен следующим, ему присваивается состояние «выполнение».
void __fastcall Button15Click(TObject *Sender);- кнопка «изменение приоритета активного процесса «
void __fastcall Button16Click(TObject *Sender); - запрос ресурса ввода\вывода
void __fastcall Button17Click(TObject *Sender); - выделение ресурса ввода\вывода
void__akt(); - ищет активный процесс
void__aktSled(); - переводит готовый процесс, который должен быть выполнен следующим в состояние выполнения
Контрольные вопросы к Л.Р. №1.
-
Процесс – абстракция, вводимая для описания механизма функционирования ОС. ОС рассматривает процессы как единицы, между которыми необходимо распределить и перераспределять ресурсы ВС. В силу естественной ограниченности ресурсов ВС не все запросы на использование ресурсов, выдаваемые различными процессами, могут быть удовлетворены сразу после их поступления к ОС. Это является причиной того, что процессы, кроме всего прочего, отличаются друг от друга тем, в какой степени и на какие ресурсы их запросы удовлетворены; последнее, а также статус и характер использования программы, о которой ассоциируется данный процесс, определяет состояние процесса. По мере удовлетворения запросов ресурсов, процесс переходит из одного состояния в другое. Причиной изменения состояний процессов в разработанной системе является команда пользователя.
-
Выбор (имя процесса): готовность -> выполнение
Истечение _кванта (имя процесса): выполнение -> готовность
Запрос_ресурса (имя процесса, вид ресурса): выполнение -> ожидание_ресурса.
Выделение_ресурса (имя процесса, вид ресурса):ожидание_ресурса -> готовность.
Состояния процессов и возможные переходы.
Пассивные состояния
Активные состояние
Запуск
Приостановка
Порождение
Возобновление
Прекращение
Удаление
Завершение
3. Переход процессов из одного состояния в другое
ГотовностьВыполнение
Выбор
Запуск
Завершение
Истеч.
кванта
Выделение
ресурса Запрос
ресурса
П
Ожидание
риостановка/
Прекращение
Возобновление
Выполнение операций диспетчеризации инициируется пользователем путем нажатия на управляющие кнопки.
Краткое описание команд взаимодействия:
1.Создать - создание дескриптора процесса с параметрами, указываемыми пользователем. Проверяется корректность введенных параметров, если все верно, создается запись, которая помещается в соответствии с параметрами в определенную очередь.
2. Завершить активный процесс – перевод активного процесса в состояние «завершен» при нажатии пользователем на соответствующую кнопку. Затем определяется тот процесс, из очереди готовых, который следующим перейдет в состояние выполнения.
3. Изменить приоритет активного процесса – указав новый приоритет процесса пользователь может присвоить это значение приоритета активному процессу.
4. Запрос операции ввода\ вывода – необходимо указать номер процесса, который должен потребовать операцию ввода\вывода, затем, указать номер процесса, которому выделили ресурс ввода\вывода\
5. Квант времени – нажатие на эту кнопку аналогично истечению кванта времени при работе ЦП. Активный процесс переводится в пассивное состояние, среди готовых процессов выбирается процесс, который следующим будет переведен в активное состояние.
Л.Р. № 2«Изучение дисциплин диспетчеризации процессов в многопрограммных ос»
Контрольные вопросы к Л.Р. №2.
1. Чем продолжительнее квант времени, тем дольше ЦП обрабатывает один процесс. Остальные процессы в это время будут находиться в состоянии готовности или ожидания, будут ждать освобождения ЦП.
2. При выполнении операции Выбор процесс, дескриптор которого расположен в начале i-той очереди (1<=i<=n), будет помещен в состояние выполнение только в том случае, если все очереди от первой до (i-1)-ой – пустые. Выполнение выбранного процесса будет осуществляться в течение кванта времени (если, конечно, не произойдет операция диспетчеризации Запрос_ресурса, Завершение или какая-либо другая операция планирования процессов в отношении данного выполняемого процесса). После истечения кванта времени, вследствие выполнения операции диспетчеризации Истечение_кванта времени ЦП произойдет перевод процесса из состояния выполнение в состояние готовность и его дескриптор поступает в конец очереди с номером i+1.
Последующая за этим операция Выбор переведет в состояние выполнение тот процесс, дескриптор которого стоит в начале очереди с самым младшим номером. Таким процессом может оказаться процесс, дескриптор которого стоял следующим в очереди i или в очереди i+1 (при условии, что после выбора процесса из очереди i последняя оказалась пустой). Дескриптор процесса, переводимого из пассивного состояния в активное (с помощью операции Запуск), поступает в первую очередь (i=1). Если это имеет место быть, после окончания кванта времени ЦП, выделенного для выполнения процесса из очереди i, будет осуществлен запуск процесса, дескриптор которого помещен в очередь номер 1.
Данная схема обеспечивает быстрое выполнение наиболее коротких процессов.
3. Недостаток данной схемы диспетчеризации заключается в непроизводительных расходах процессорного времени на перемещение дескрипторов процессов из одной очереди и другую.
Лабораторная работа № 3. "Реализация дисциплин диспетчеризации процессов с учетом приоритетов".