Смекни!
smekni.com

Реализация управления процессами и ресурсами многопрограммных операционных систем на уровне диспетчеризации (стр. 1 из 2)

Реализация управления процессами и ресурсами многопрограммных операционных систем на уровне диспетчеризации

Государственный комитет Российской Федерации по высшему образованию

Московский государственный институт электроники и математики

Кафедра систем автоматизации проектирования

Отчёт по лабораторным работам

“Реализация управления процессами и ресурсами многопрограммных операционных систем на уровне диспетчеризации”

по дисциплине

“Системы программирования и алгоритмизации вычислений”

Исполнитель: студент Гамов А.В.

Руководитель: Витушкин П.И.

Москва 2002

Отчёт по лабораторной работе 1

Задание на лабораторную работу

Осуществить формирование средств представления процессов и механизмов управления их состоянием на уровне диспетчеризации.

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

- формирование дескрипторов процессов, вводимых в “систему”.

- определение состояний, в котором находятся все известные “системе” процессы.

- Формирование и ведение списочных структур (“очередей”) дескрипторов на основании их состояний, приоритетов и используемой дисциплины диспетчеризации.

При формировании дескриптора необходимо осуществить ввод следующей информации:

- имя процесса (символьная строка, содержащая не более 8 символов).

- приоритет процесса (целое число в диапазоне 0-255).

- объём ОП (целое число в диапазоне 032767).

- перечень внешних и периферийных устройств [DISK0,DISK1,TAPE0,TAPE1,PRINT,PLTTR] (не более трех для каждого процесса)

- имя файла если выбрано внешнее устройство хранения данных (символьная строка, содержащая не более 8 символов).

Определить состояние поступивших процессов и переместить их в подходящий список и выполнить соответствующую принципу HPF=FCFS сортировку и перестановку состояний если активные (занявшие нужные процессы ресурсы) ниже по приоритету.

Разработать интерфейс программы.

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

Дано:

дескриптор – см. задание.

Требуется:

список1 или дескриптор1 – выполняемый процесс.

список2 – готовые процессы.

список3 – ожидающие процессы.

Интерфейс.

Структура программы

Назначение подпрограмм

Newproc – формирование дескриптора

Delproc – удаление дескриптора

EditProc – редактирование дескриптора.

ReRun – проверка на возможность запуска другого более приоритетного процесса.

Findplace – проверяет возможность перевести процессы из состояния ожидания в готовность или выполнение.

Sortproc – сортировка по HPF=FCFS.

Endproc – удаление выполняемого процесса (дескриптора).

Алгоритм модулей

Sort – производится объектом TListView.

Newproc, Endproc, Delproc, Editproc – описания не требуется ?).

Findplace:

{определение ресурсов выделенных }

цикл от j:=0 до ListView1.Count-1

если {все ресурсы доступны} то

ListView2.Add:=ListView1.Items.Item[j-k];

Inc(k);

всё

{sortproc – вызывается объектами TlistView автономно при каждом изменении}

к.ц.

ReRun:

если ListView3.Items.Item[0]=nil то

если {приоритет выполняемого меньше приоритета ListView2.Items.Item[0]} то

{ListView3.Items.Item[0] меняется местами с ListView2.Items.Item[0]}

всё

всё

Описание тестового примера

Так как в первой лабораторной не предволагается никаких дополнительных операции кроме запуска сортировки и завершения, то тест очень прост:

NewProc:\ ID:FF name:proces1 priority:0 mem:512 device1: () device2: () device3: ()

NewProc:\ ID:FF name:proces2 priority:0 mem:512 device1:PRINT() device2: () device3: ()

NewProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2: () device3: ()

StartEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2: () device3: ()

EndEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2:PLTTR() device3: ()

StartEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2:PLTTR() device3: ()

EndEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1: () device2:PLTTR() device3: ()

NewProc:\ ID:FE name:proces4 priority:1 mem:512 device1:PRINT() device2:PLTTR() device3: ()

DelProc:\ ID:FF name:proces2 priority:0 mem:512 device1:PRINT() device2: () device3: ()

DelProc:\ ID:FF name:proces3 priority:0 mem:512 device1: () device2:PLTTR() device3: ()

Тест показывает все доступные действия над дескрипторами кроме увеличения уменьшения приоритета, но при этом происходят те же действия так как модуль работает независимо от действий, а использует только значения дескрипторов для сортировки и проверок.

При освобождение ресурсов процессы переходят из состояния ожидания в состояние готовности.

При изменение приоритета происходит проверка на возможность перевода данного процесса в состояние выполнения.

Результаты тестового примера (протокол):

[LabOS]

autor_name=mad_daemon

autor_team=MadSOFT

autor_group=AP-31

lab_version=1.0.0.1

lab_type=module.OS

protocol_name=C:\MadSOFT\Lab.OS\Laba1\1.txt

protocol_date=10.09.02

protocol_time=20:19:12

[Protocol]

mess0=[10.09.02|20:19:26]NewProc:\ ID:FF name:proces1 priority:0 mem:512 device1: () device2: () device3: ()

mess1=[10.09.02|20:19:51]NewProc:\ ID:FF name:proces2 priority:0 mem:512 device1:PRINT() device2: () device3: ()

mess2=[10.09.02|20:20:07]NewProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2: () device3: ()

mess3=[10.09.02|20:20:11]StartEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2: () device3: ()

mess4=[10.09.02|20:20:32]EndEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2:PLTTR() device3: ()

mess5=[10.09.02|20:25:31]StartEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2:PLTTR() device3: ()

mess6=[10.09.02|20:25:33]EndEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1: () device2:PLTTR() device3: ()

mess7=[10.09.02|20:25:53]NewProc:\ ID:FE name:proces4 priority:1 mem:512 device1:PRINT() device2:PLTTR() device3: ()

mess8=[10.09.02|20:26:43]DelProc:\ ID:FF name:proces2 priority:0 mem:512 device1:PRINT() device2: () device3: ()

mess9=[10.09.02|20:26:46]DelProc:\ ID:FF name:proces3 priority:0 mem:512 device1: () device2:PLTTR() device3: ()

[Close]

process_run=2

process_count=4

process_edit=2

process_del=2

process_end=0

protocol_mess=10

protocol_date=10.09.02

protocol_time=20:27:03

Ответы на контрольные вопросы

I группа

1)Сформулировать определение состояния процесса?

Определение состояний процессов, поступивших на уровень диспетчеризации осуществляется путём анализа требуемых процессу ресурсов и свободных ресурсов.

Если все ресурсы для данного процесса не включая ЦП можно выделить, то он переводится в состояние готовности, а если и ЦП свободен то процесс переводится в состояние выполнения. Иначе в ожидание его.

2)Охарактеризуйте причины изменения состояния процессов в ВС?

- Поступление процесса с более высоким приоритетом, либо изменение приоритета.

- Освобождение ресурса.

- Запрос ресурса.

- Окончание (удаление) процесса.

- Истечение кванта.

3)Что является причиной изменения процесса в разработанной вами “системе”?

- Поступление процесса с более высоким приоритетом, либо изменение приоритета.

(Down,Up,Edit)

- Освобождение ресурса.

(Edit)

- Удаление (завершение выполняемого) процесса.

(Ydalit,EndProc)

Отчёт по лабораторной работе 2

Задание на лабораторную работу

Осуществить формирование средств представления процессов и механизмов управления их состоянием на уровне диспетчеризации.

Заменить принцип сортировки списков HPF=FCFS на HPF=SM=FCFS.

Создать “Изменение кванта”.

Доработать интерфейс программы.

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

Дано:

дескриптор – см. задание.

Требуется:

список1 или дескриптор1 – выполняемый процесс.

список2 – готовые процессы.

список3 – ожидающие процессы.

Интерфейс.

Структура программы

Назначение подпрограмм:

Newproc – формирование дескриптора

Delproc – удаление дескриптора

EditProc – редактирование дескриптора.

ReRun – проверка на возможность запуска другого более приоритетного процесса или с равным приоритетом.

Findplace – проверяет возможность перевести процессы из состояния ожидания в готовность или выполнение.

Sortproc – сортировка по HPF=FCFS.

Endproc – удаление выполняемого процесса (дескриптора).

!Timeproc – таймер

Алгоритм модулей

Sort – производится объектом TListView.

Newproc, Endproc, Delproc, Editproc – описания не требуется ?).

Findplace:

{определение ресурсов выделенных }

цикл от j:=0 до ListView1.Count-1

если {все ресурсы доступны} то

ListView2.Add:=ListView1.Items.Item[j-k];

Inc(k);

всё

{sortproc – вызывается объектами TlistView автономно при каждом изменении}

к.ц.

ReRun:

если ListView3.Items.Item[0]=nil то

если {абсолютный приоритет выполняемого меньше приоритета ListView2.Items.Item[0]} то

{ListView3.Items.Item[0] меняется местами с ListView2.Items.Item[0]}

всё

всё

так как сортировка производится методами винды и при этом обрабатываются

только строки из обного столбца, то добавлен столбец # в котором находится

HEX(255-приоритет)+HEX(память), что позволяет быстро сортировать

по принципу HPF=SM=FCFS.

Описание тестового примера

Так как в первой лабораторной не предволагается никаких дополнительных операции кроме запуска сортировки и завершения, то тест очень прост:

NewProc:\ ID:FF name:proces1 priority:0 mem:512 device1: () device2: () device3: ()

NewProc:\ ID:FF name:proces2 priority:0 mem:12 device1:PRINT() device2: () device3: ()

NewProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2: () device3: ()

StartEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2: () device3: ()

EndEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2:PLTTR() device3: ()

StartEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1:PRINT() device2:PLTTR() device3: ()

EndEditProc:\ ID:FF name:proces3 priority:0 mem:512 device1: () device2:PLTTR() device3: ()

NewProc:\ ID:FE name:proces4 priority:1 mem:512 device1:PRINT() device2:PLTTR() device3: ()

DelProc:\ ID:FF name:proces2 priority:0 mem:512 device1:PRINT() device2: () device3: ()

DelProc:\ ID:FF name:proces3 priority:0 mem:512 device1: () device2:PLTTR() device3: ()

Тест показывает все доступные действия над дескрипторами кроме увеличения уменьшения приоритета, но при этом происходят те же действия так как модуль работает независимо от действий, а использует только значения дескрипторов для сортировки и проверок.

При освобождение ресурсов процессы переходят из состояния ожидания в состояние готовности.

При изменение приоритета происходит проверка на возможность перевода данного процесса в состояние выполнения.

При нажатии на кнопку RunOS запускается таймер.

При нажатии на кнопку StopOS таймер останавливается.

Результаты тестового примера (протокол)

[LabOS]

autor_name=mad_daemon

autor_team=MadSOFT

autor_group=AP-31

lab_version=1.0.0.1

lab_type=module.OS

protocol_name=C:\MadSOFT\Lab.OS\Laba1\1.txt

protocol_date=10.09.02

protocol_time=20:19:12

[Protocol]

mess0=[10.09.02|20:19:26]NewProc:\ ID:FF name:proces1 priority:0 mem:512 device1: () device2: () device3: ()