Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы - лабараторная работа.doc
Скачиваний:
3
Добавлен:
20.05.2014
Размер:
74.75 Кб
Скачать

Лабораторная работа №1. «Программная реализация средств представления и управления процессами в многопрограммных ОС».

  1. Постановка задачи

При выполнении лабораторной работы необходимо разработать алгоритм и составить программу, имитирующую работу простейшей ОС, (в дальнейшем будем называть ее "системой"), которая должна выполнять перечисленные ниже действия:

– формирование дескрипторов процессов, вводимых в "систему";

– определение состояний, в котором находятся все известные "системе" процессы;

– формирование и ведение списочных структур ("очередей") дескрипторов на основании их состояний, приоритетов и используе­мой дисциплины диспетчеризации;

  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 Button6Click(TObject *Sender);

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.

  1. Процесс – абстракция, вводимая для описания механизма функционирования ОС. ОС рассматривает процессы как единицы, между которыми необходимо распределить и перераспределять ресурсы ВС. В силу естественной ограниченности ресурсов ВС не все запросы на использование ресурсов, выдаваемые различными процессами, могут быть удовлетворены сразу после их поступления к ОС. Это является причиной того, что процессы, кроме всего прочего, отличаются друг от друга тем, в какой степени и на какие ресурсы их запросы удовлетворены; последнее, а также статус и характер использования программы, о которой ассоциируется данный процесс, определяет состояние процесса. По мере удовлетворения запросов ресурсов, процесс переходит из одного состояния в другое. Причиной изменения состояний процессов в разработанной системе является команда пользователя.

  2. Выбор (имя процесса): готовность -> выполнение

Истечение _кванта (имя процесса): выполнение -> готовность

Запрос_ресурса (имя процесса, вид ресурса): выполнение -> ожидание_ресурса.

Выделение_ресурса (имя процесса, вид ресурса):ожидание_ресурса -> готовность.

Состояния процессов и возможные переходы.

Пассивные состояния

Активные состояние

Запуск

Приостановка

Порождение

Возобновление

Прекращение

Удаление

Завершение

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. "Реализация дисциплин диспетчеризации процессов с учетом приоритетов".