Реализация управления процессами и ресурсами многопрограммных операционных систем на уровне диспетчеризации
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: () mess1=[10.09.02|20:19:51]NewProc:\\ ID:FF name:proces2 priority:0 mem:12 device1:PRINT() device2: () device3: ()
Страницы: 1, 2
|