Лаб. Занятие 14. Обязательные задания для решения в классе.
Лаб. Занятие 14. Обязательные задания для решения в классе [4 балла]
Указания
Согласовывать взаимодействие процессов необходимо при помощи общих объектов синхронизации.
Задание 14.1
Пусть есть два циклических процесса, каждый из которых имеет доступ к общему файлу F. Оба процесса выполняют два системных обращения к файлу: Read и Write. Пусть каждый из процессов имеет вид
begin L: … Read; … Write; … go to L end;
Любое число операций Read может выполняться одновременно, но каждая операция Write – есть критическая секция по отношению как к операции Read, так и другой операции Write. Используя известные вам программные методы синхронизации, напишите программы для каждого из процессов.
Задание 14.2
Пусть есть два циклических процесса, каждый из которых имеет доступ к общему файлу F. Оба процесса выполняют два системных обращения к файлу: Read и Write. Пусть каждый из процессов имеет вид
begin L: … Read; … Write; … go to L end;
Любое число операций Read может выполняться одновременно, но каждая операция Write – есть критическая секция по отношению как к операции Read, так и другой операции Write. Используя операции Дейкстры и соответствующие семафоры, расставьте их относительно операций Read и Write в каждом из процессов, чтобы правильно удовлетворить указанным ограничениям. Напишите программы для каждого из процессов.
Задание 14.3
Рассмотрите алгоритм планирования распределения времени центрального процессора – простой круговорот (циклическое квантование). Сделайте его модельную реализацию при условии, что заранее известно время выполнения каждого процесса. При получении очередного кванта процессом, время его выполнения уменьшается на величину кванта. При завершении некоторого процесса, надо пересчитывать величину кванта. В качестве выводимой информации надо получать текущее состояние очереди процессов и величину кванта.
Задание 14.4
В системах с виртуальной страничной организацией памяти те страницы, содержимое которых не менялось, пока они находились в оперативной памяти, не переписываются обратно на диск, когда их вытесняют из оперативной памяти. Напишите программу, реализующую модель принятия таких решений.
Задание 14.5
Напишите процедуры для запроса и освобождения памяти, использующие стратегию размещения «первый подходящий», и структуру данных для хранения информации о доступных пространствах. На вход процедуре запроса должен поступать размер запрашиваемого блока (в байтах). Процедура должна вернуть адрес блока, если запрос может быть удовлетворен. В противном случае – вернуть 0. Процедура освобождения памяти должна получать в качестве входного параметра адрес adr. Результатом ее выполнения должно быть добавление блока, начиная с адреса adr, к доступному пространству.
Задание 14.6
Промоделируйте работу операционной системы по планированию распределения времени ЦП "сначала самые короткие задания". Пусть через время T в системе случайным образом генерируется появление задания с указанием ожидаемого времени выполнения t и добавляется в очередь заданий выполнения в ту позицию, которая соответствует t. Задания в очереди упорядочены по возрастанию времени их выполнения. Имитируйте выделение ЦП самому короткому заданию, по истечении времени выполнения задания "переключайте" процессор на следующее задание. Меняя T и диапазон для генерируемых t, проанализируйте при каких значениях T и диапазон для генерируемых t у "длинных" заданий появляется шанс быть выполненными.
Задание 14.7
Промоделируйте работу операционной системы по планированию распределения времени ЦП "сначала с наименьшим оставшимся временем выполнения". Пусть через время T в системе случайным образом генерируется появление задания с указанием ожидаемого времени выполнения t и добавляется в очередь заданий выполнения в ту позицию, которая соответствует t. Пусть величина времени ЦП, отведенного каждому процессу - q. Имитируйте выделение ЦП заданию "с наименьшим оставшимся временем выполнения". Во время выполнения сгенерируйте случайным образом логическое значение, 0-процесс не прерван на операции ввода вывода, 1 - процесс заблокирован операцией ввода-вывода сигнал. Переведите его в очередь заблокированных процессов, пересчитав оставшееся время выполнения. Если блокировка произошла, "переключайте" процессор на следующее задание. Если блокировки не было, то по истечении кванта q, найдите среди готовых к выполнению процессов тот, оставшимся временем выполнения которого минимально. Периодически "будите" заблокированные на операции ввода-вывода процессы. Меняя T, q, интервал генерации операций ввода-вывода и диапазон для генерируемых t, проанализируйте продвижение процессов.
Задание 14.8
Рассмотрите алгоритм планирования процессов по приоритетам с вытеснениями, когда приоритет каждого процесса меняется во времени. Скорость изменения приоритета пропорциональна константе a, когда процесс ждет, и константе b, когда он выполняется. Пусть через время T в системе случайным образом генерируется появление задания с указанием ожидаемого времени выполнения t и приоритетом P и добавляется в очередь заданий. Если приоритет нового процесса больше, чем приоритет выполняемого, то ЦП сразу выделяется новому процессу. Если имеется несколько процессов с наивысшим приоритетом, то все они обслуживаются в режиме разделения времени с очень малой величиной кванта q. Через интервал времени T приоритеты всех процессов пересчитываются. Исследуйте поведение алгоритма в полном диапазоне изменения величин a, b, диапазона приоритетов и T.Задание 14.9
Напишите процедуры для запроса и освобождения памяти, использующие стратегию размещения «наилучший» (best-fit), и структуру данных для хранения информации о доступных пространствах. На вход процедуре запроса должен поступать размер запрашиваемого блока (в байтах). Процедура должна вернуть адрес блока, если запрос может быть удовлетворен. В противном случае – вернуть 0. Процедура освобождения памяти должна получать в качестве входного параметра адрес adr. Результатом ее выполнения должно быть добавление блока, начиная с адреса adr, к доступному пространству.
Задание 14.a
Напишите процедуры для запроса и освобождения памяти, использующие стратегию размещения «наименее подходящий» ((worst-fit), и структуру данных для хранения информации о доступных пространствах. На вход процедуре запроса должен поступать размер запрашиваемого блока (в байтах). Процедура должна вернуть адрес блока, если запрос может быть удовлетворен. В противном случае – вернуть 0. Процедура освобождения памяти должна получать в качестве входного параметра адрес adr. Результатом ее выполнения должно быть добавление блока, начиная с адреса adr, к доступному пространству.