Добавлен: 10.11.2023
Просмотров: 108
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1.1 Словесная постановка задачи
1.3 Подсистема управления процессами
1.3.1 Приоритетное планирование с абсолютным приоритетом
1.4.1 Подсистема управления памятью
1.4.2 Страничное распределение
1.4.3 Сегментное распределение
1.5 Подсистема управления файлами
1.5.1 Непрерывное размещение файлов (кластер – 256 байт)
2.1 Алгоритм приоритетного планирования
2.2 Алгоритм страничного распределения памяти
2.3 Непрерывное размещения файлов(кластер- 256 байт)
3.2 Страничное распределение памяти
3.3 Непрерывное размещение файлов
Рисунок 6 – Состояние диска после удаления файлов и приведение дискового пространства к фрагментации
Рисунок 7 – Блок-схема организации работы с непрерывным размещением файлов
2 ПРАКТИЧЕСКИЙ РАЗДЕЛ
2.1 Алгоритм приоритетного планирования
Программа начинается с объявления переменных. Пользователь вводит количество процессов. Далее в цикле вводятся данные о каждом процессе (Номер процесса, время прибытия, время выполнения, а также приоритет).
Затем процессы сортируются по времени прибытия, если время прибытия двух процессов одинаковое, то сортируются по приоритету процесса, если два приоритета процесса одинаковы, то идет сортировка по номеру процесса.
В цикле вычисляется время ожидания и затраченное время на выполнение процесса. Для вычисления времени ожидания(wt) отнимается из затраченного времени прошлого процесса (для первого процесса принимается время прибытия)(st) время прибытия(at) этого процесса. Для вычисления затраченного времени процесса из суммы времени выполнения и прибытия отнимается время прибытия. Затем просто программы выполняет алгоритм FCFS. После программа выводит на экран таблицу с данными, а также среднее время ожидания и среднее время выполнения.
2.2 Алгоритм страничного распределения памяти
Пользователем вводятся количество процессов, размер оперативной и виртуальной памяти. Затем вычисляется, сколько страниц может поместить оперативная и виртуальная память. Дальше с помощью цикла для каждого процесса вычисляется:
-
количество страниц занимаемых процессом, при условии, что размер процесса кратен размеру страницы оно будет равно делению разницы размера процесса на остаток от деления размера процесса на размер страницы. Иначе оно будет равно делению разницы размера процесса на остаток от деления размера процесса на размер страницы плюс 1; -
свободное место в последней странице; -
остаток страниц в виртуальной памяти после размещения файлов; -
остаток страниц в оперативной памяти после размещения файлов.
Если количество страниц оперативной памяти больше или равен количеству страниц процесса, то программа выводит на экран «файл занимает место в памяти» и вычисляет остаток памяти после размещения файла
Если количество страниц оперативной памяти недостаточно, а количество страниц виртуальной памяти больше или равен количеству страниц процесса, то программа выводит на экран «файл занимает место в виртуальной памяти» и вычисляет остаток страниц виртуальной памяти после размещения файла
Если количества страниц оперативной и виртуальной памяти недостаточно, то программа выводит на экран соответствующее сообщение
После программа выводит на экран для каждого файла:
-
размер страницы; -
количество страниц занято; -
свободно в последнем кластере;
После того как цикл закончился программа выводит на экран:
-
страницы в виртуальной и оперативной памяти после размещения файлов; -
остаток страниц в виртуальной и оперативной памяти после размещения файлов;
2.3 Непрерывное размещения файлов(кластер- 256 байт)
Программа начинается с объявления переменных: clusterSize (размер кластера), N (количество процессов), memorySize(размер опер. памяти), freeClusters(количество свободных кластеров), occupiedClusters (количество занятых кластеров), spaceInLastCluster(свободное пространство в последнем кластере), (leftClusters[100], rightClusters[100] (диапазон занимаемого процессом кластеров));
В начале программы переменная имеет следующее значение: clusterSize =256;
Пользователем вводится количество файлов, размер оперативной и виртуальной памяти. Дальше с помощью цикла для каждого файла вычисляется:
-
количество кластеров занимаемых файлом, при условии, что размер файла кратен размеру кластера оно будет равно делению разницы размера файла на остаток от деления размера файла на размер кластера. Иначе оно будет равно делению разницы размера файла на остаток от деления размера файла на размер кластера плюс 1; -
номер первого кластера; -
номер последнего кластера; -
свободное место в последнем кластере, -
остаток виртуальной памяти после размещения файлов.
Если размер памяти больше или равен размеру файла, то программа выводит на экран «файл занимает место в памяти» и вычисляет остаток памяти после размещения файла.
Если размера памяти недостаточно, а размер памяти больше или равен размеру файла, то программа выводит на экран «файл занимает место в виртуальной памяти» и вычисляет остаток виртуальной памяти после размещения файла. Если размера памяти недостаточно, то программа выводит на экран соответствующее сообщение.
Если файл занимает 1 кластер, то экран выводит «файл занимает leftClusters»(кластер). Иначе «файл занимает с leftClusters по rightClusters»(кластеры). Вычисляется первый кластер следующего файла: «свободно в последнем кластере spaceInLastCluster »
После того как цикл закончился программа выводит на экран:«размер памяти memorySize»(остаток).
3 ЭКСПЕРИМЕНТАЛЬНЫЙ РАЗДЕЛ
3.1 Приоритетное планирование
С начала программы пользователь должен выбрать меню 1, для выполнения программы приоритетного планирования. В качестве примера входных данных пользователь может ввести:
-
Количество процессов – 5; -
Номер процесса – 1 2 3 4 5; -
Время прибытия – 0 1 3 2 4; -
Время выполнения – 3 6 1 2 4; -
Приоритет – 1 4 9 7 8.
В ходе выполнения программы процессы сортируются по времени прибытия, если время прибытия двух процессов одинаковое, затем сортировка по приоритету процесса, если два приоритета процесса одинаковы, затем сортировка по номеру процесса. Затем просто применяется алгоритм FCFS.
Пример выходных данных вы можете рассмотреть на рисунке 8.2.
При исходных данных прерывания более высокоприоритетного процесса не произошло.
Для следующей ситуации введем новые входные данные:
-
Количество процессов – 5; -
Номер процесса – 1 2 3 4 5; -
Время прибытия – 0 0 1 1 1; -
Время выполнения – 3 2 1 1 1; -
Приоритет – 4 1 5 5 2.
Выходные данные второй ситуации вы можете рассмотреть на рисунке 8.3. Здесь наглядно показано, что алгоритм работает корректно. Все процессы сортированы так, что первыми в списке находятся процессы с низким временем прибытия, которые в дальнейшем сравнивались между собой по времени выполнения, из которого выходит так, что приоритет второго оказался выше первого. Далее идут три процесса с одинаковым временем прибытия и выполнения. Но заметьте то, что у пятого процесса более низкий приоритет, чем у третьего и четвертого, за счет этого он и вышел на третье место в списке приоритетов. Когда у процессов время прибытия и выполнения, а также приоритеты одинаковые, тогда сравниваются номера процессов и в данной ситуации приоритет третьего процесса оказался выше четвертого.
Рисунок 8.1 – Ввод данных для алгоритма приоритетного планирования
Рисунок 8.2 – Результат работы алгоритма приоритетного планирования
Рисунок 8.3 – Вывод распределения алгоритма по приоритетам
3.2 Страничное распределение памяти
Для выполнения программы страничного распределения памяти, пользователь должен выбрать пункт меню 2. Затем, например, в качестве входных данных он может указать следующие значения:
-
Количество процессов-3; -
Размер оперативной памяти 512; -
Размер виртуальной памяти 1024; -
Размер процесса 1 – 256; -
Размер процесса 2 – 512; -
Размер процесса 3 – 256.
При нехватке памяти программа удаляет страницу у процесса, который занимает наибольшее количество страниц, затем выводит пользователю, у какого процесса была удалена страница и завершенных процессов, что вы можете рассмотреть на рисунке 9.
В качестве выходных данных мы получаем:
-
Количество занятых страниц; -
Информация об удаленных страницах; -
Информация о количестве страниц оперативной и виртуальной памяти до и после распределения.
Рисунок 9 – Результат работы страничного распределения памяти
3.3 Непрерывное размещение файлов
Для выполнения программы страничного распределения памяти, пользователь должен выбрать пункт меню 3. Затем, например, в качестве входных данных он может указать следующие значения:
-
Количество файлов – 4; -
Размер оперативной памяти – 2048; -
Размер кластера – 256; -
Размер файла 1 – 512; -
Размер файла 2 – 1024; -
Размер файла 3 –512; -
Размер файла 4 – 256; -
Номер удаляемого файла – 1.
При вводе размера каждого файла на экране выводится информация о количестве занятых кластеров, номерах занятых кластеров, что показано на рисунке 11.1. При нехватке памяти программа сообщает нам об этом (показано на рисунке 11.2) и дает пользователю выбор удаления определенного файла. После удаления файл размещается на место удаленного файла, что показано на рисунках 10.1 и 10.2.
Выходные данные:
-
Количество занятых кластеров; -
Количество свободных кластеров; -
Информация об удаленных файлах; -
Информация об остатках памяти в последнем кластере, оперативной памяти после размещения.
Таблица 10.1 – Размещение файлов до удаления
Рисунок 10.2 – Размещение файлов после удаления файла Файл 1 и записи Файл 4
Рисунок 11.1 – Результат работы непрерывного размещения файлов
Рисунок 11.2 – Результат работы непрерывного размещения файлов с примером сообщения нехватки памяти
ЗАКЛЮЧЕНИЕ
В ходе выполнения данной курсовой работы были закреплены теоретические знания по алгоритмам работ подсистем управления процессами алгоритма приоритетного планирования, страничной организации памяти и непрерывного размещения файлов и получены практические знания в области физической организации файловой системы. Для этого были созданы программные модели, демонстрирующие работу подсистем операционной системы. Все задачи решены, цель достигнута.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
-
Тихомиров, В.П. Операционная система ДЕМОС [Текст]: инструментальные средства программирования / В.П. Тихомиров, М.И. Давидов. - М.: Финансы и статистика, 1988. - 206 c. -
Грибанов, В.П. Операционные системы / В.П. Грибанов, С.В. Дробин, В.Д. Медведев. [Текст]: Финансы и статистика, 1990. - 239 c. -
Данилочкин Справочник системного программиста по операционной системе ОС ЕС / Данилочкин, В.П. [Текст]: Финансы и статистика, 1982. - 288 c. -
Операционная система // FoxFord URL[Электронный ресурс]:
https://foxford.ru/wiki/informatika/operatsionnaya-sistema (дата обращения: 15.10.2021).
-
Самая короткая работа сначала (SJF) // coderlessons URL [Электронный ресурс]:
https://coderlessons.com/tutorials/akademicheskii/osnovy-operatsionnykh-sistem/27-samaia-korotkaia-rabota-snachala-sjf (дата обращения: 17.10.2021).
-
Operating Systems: Three Easy Pieces. Part 4 // habr URL [Электронный ресурс]:
https://habr.com/ru/post/449026/ (дата обращения: 19.10.2021).
ПРИЛОЖЕНИЕ А
Рисунок 12 – Проверка на антиплагиат