- •Содержание
- •1. Введение и структура лабораторного практикума
- •2. Основные требования, предъявляемые к разрабатываемым программам
- •3. Краткие сведения о проблемной области выполняемых работ
- •Пассивные состояния
- •Активные состояния
- •Операции создания/удаления процессов
- •Операции планирования процессов
- •Удаление_п
- •Выполнение
- •Возобновление
- •Операции диспетчеризации процессов
- •4. Задания для лабораторных работ
- •4.1 Лабораторная работа № 1. ”Программная реализация средств представления и управления процессами в многопрограммных ос”
- •4.1.1. Формирование дескрипторов процессов
- •4.1.2. Определение состояний "поступивших" процессов
- •4.1.3. Формирование и ведение списков дескрипторов процессов
- •4.1.4. Принцип имитации развития процессов
- •4.1.5. Организация взаимодействия с "системой"
- •4.1.5.1. Описание состава и назначения команд пользователя "Система" должна выполнять следующие команды пользователя:
- •4.1.5.2. Основные требования к форме ввода команд "системы"
- •Формирование дескриптора
- •Протокол работы программы
- •4.1.6. Порядок выполнения л.Р. № 1
- •4.1.7. Требования к отчету по л.Р. № 1
- •4.1.8. Контрольные вопросы к л.Р. № 1
- •4.2. Лабораторная работа № 2. "Изучение дисциплин диспетчеризации процессов в многопрограммных ос".
- •4.2.1. Краткое описание схемы одноочередной круговой (циклической) диспетчеризации.
- •Конец … начало
- •З Конец … начало Выполнениеапуск Выбор Завершение
- •4.2.2. Краткое описание алгоритма многоочередной диспетчеризации для операцииИстечение_кванта.
- •Конец … начало
- •4.2.3. Имитация развития процессов при выполнении л. Р. № 2
- •4.2.4. Порядок выполнения л.Р. № 2
- •4.2.5. Требования к отчету по л.Р. № 2
- •4.2.6. Контрольные вопросы к л.Р. № 2
- •4.3. Лабораторная работа № 3. "Реализация дисциплин диспетчеризации процессов с учетом приоритетов".
- •4.3.1. Краткое описание схемы многоочередной диспетчеризации с учетом приоритета.
- •Выполнение
- •Конец … начало
- •4.3.2. Порядок выполнения л.Р. № 3
- •4.3.3. Требования к отчету по л.Р. № 3.
- •4.3.4. Контрольные вопросы к л.Р. № 3
- •4.4. Лабораторная работа № 4. "Реализация дисциплины диспетчеризации процессов с учетом запросов ввода/вывода"
- •4.4.1. Краткое описание схемы диспетчеризации процессов с учетом ввода/вывода и ее реализации.
- •4.4.2. Порядок выполнения и требования к отчету л.Р. № 4
- •4.4.3. Контрольные вопросы к л.Р. № 4
4.4. Лабораторная работа № 4. "Реализация дисциплины диспетчеризации процессов с учетом запросов ввода/вывода"
Цель работы.
Изучение диспетчеризации процессов с учетом выполнения операций ввода/вывода, алгоритмическая и программная реализация данной дисциплины диспетчеризации.
Содержание работы.
При выполнении лабораторной работы № 4,также как и при выполнении предыдущих работ практикума, необходимо осуществить развитие дисциплины диспетчеризации процессов. Реализуемая в данной л.р. – дисциплина должна учитывать выполнение операций ввода/вывода, запрос на осуществление которых поступает отвыполняемогопроцесса.
Таким образом в четвертой работе практикума предусматривается реализация операций диспетчеризации "Запрос_ресурса" и "Выделение_ресурса"по отношению к тем видам ресурсов, которые используютсяnpи выполнении операций ввода/вывода. Процессы, поступающие в "систему", должны переводиться в состояниеожиданиепри поступлении запроса на выполнение операции ввода/вывода.
4.4.1. Краткое описание схемы диспетчеризации процессов с учетом ввода/вывода и ее реализации.
Поступающий в Вашу "систему" процесс после того как его дескриптор сформируется (см. 3.1.1.) должен быть помещен в одно из активных состояний: выполнение, готовность, ожидание (см 3.1.2.). Напомним, что в состояние ожидание процесс может быть помещен:
– для л.р. № 1 - в том случае, если при его поступлении в "систему" нет свободных ресурсов, требуемых для его выполнения;
– для л.р. № 2 - по той же причине;
– для л.р. № 3 - по той же причине, а также в том случае, если в результате выполнения операции "Приоритетная_приостановка" готовый процесс, лишится (части) выделенных ему ресурсов в пользу более приоритетного, вновь поступившего выполняемого процесса.
В ходе выполнения л.р. № 4 необходимо реализовать схему диспетчеризации процессов, осуществляющую перевод процесса, находящегося в состоянии выполнение, в состояние ожидание в том случае, если в "систему" поступил запрос на выполнение операции ввода/вывода. Подобный запрос, по сути, является запросом какого-либо определенного ресурса ВС и вызывает выполнение операции "Запрос_ресурса", затем выполнение операции "Выделение_ресурса", что должно влечь за собой перевод данного процесса из состояния ожидание в состояние готовность. Отметим, что при такой дисциплине диспетчеризации для перевода вновь поступающего процесса в состояние готовность нет необходимости заранее выделять все необходимые ресурсы - действительно, ресурсы ВС, требуемые для выполнения операций ввода/вывода, рационально выделять тогда, когда они действительно понадобятся, а не сразу, после поступления нового процесса на уровень диспетчеризации (т.е. после выполнения операции планиования "Запуск"). Именно такой подход и позволяет реализовать рассматриваемую дисциплину диспетчеризации.
В принципе, источником запроса на ресурс ввода/вывода является выполняемый процесс. Учитывая, что как и в предыдущих работах практикума в л.р. № 4 процесс представлен в "системе" только своим дескриптором, и развитие каждого конкретного процесса осуществляется по ходу поступления команд пользователя, в состав последних (см. 3.1.5.1.) необходимо ввести дополнительную команду:
- "Выполнить операцию ввода-вывода", а дескриптор каждого процесса (см. 3.1.1.) необходимо дополнить полем, содержание количество операций ввода/вывода, осуществляемые данным процессом (значение этого поля дескриптора - целое число в диапазоне 0-1024 - должно формироваться в ходе выполнения команды пользователя "Сформировать дескриптор процесса").
Выполнение команды Вашей системы "Выполнить операцию ввода-вывода" должно приводить к тому. что, в отношении выполняемого процесса (единственного в каждый момент времени работы "системы" - поэтому имя процесса в команде указывать не надо) проводятся следующие действия:
- нализируется значение счетчика операций ввода/вывода -если оно равно 0, то формируется сообщение "системы":
для выполняемого процесса <имя_процесса> операции вв/выв. нет!»,
и команда "Выполнить операцию ввода-вывода" завершается;
- в противном случае, количество операций ввода/вывода в соответствующем поле дескриптора данного выполняемого процесса уменъшается на 1, процесс из состояния выполнение переводится в состояние ожидание, путем помещения его дескриптора в списковую структуру oжuдaния_ресурса_ввoдa/вывода в соответствии с дисциплиной HPF=FCFS.
Процесс, дескриптор которого располагается в данной списковой структуре, переводится в состояние готовность в том случае, если ему можно выделить требуемые ресурсы. Момент, когда это будет производиться, можно определить несколькими различными правилами.
Первый вариант. Проверка возможности перевода процессов из состояния ожидания_ресурса_ввода/вывода в состояние готовность осуществляется в ходе выполнения команды пользователя "Выполнить операцию ввода-вывода" как ее составная (завершающая) часть. При возможности выделения требуемого ресурса ввода/вывода какому-либо процессу, находящемуся в состоянии oжидaнuя_pecypca_ввода/вывода, при соблюдении принципа HPF=FCFS, для каждого такого процесса формируется сообщение:
Для процесса <имя_процесса> выделить ресурс <имя_ресурса>? д/н .
При положительном ответе (да, д) "система" выделяет требуемый ресурс, при отрицательном (любом другом) - выделение ресурса не производится, производится переход к другому процессу и/или выполнение команды "Выполнить операцию ввода-вывода" завершается.
Второй вариант. Действия, приведенные при описании первого варианта, производятся не как составная часть команды "Выполнить операцию ввода-вывода", а по специальной команде пользователя "Выделение ресурсов ввода/вывода", моделирующей выполнение операции диспетчеризации процессов "Выделение_ресурса" (см. 3.). При этом команда "Выполнить операцию ввода-вывода" должна получить название. "Запрос ресурсов ввода-вывода".
Третий вариант. Описанные выше действия производятся "автоматически" после поступления в систему любых, скажем, трех команд пользователя. Отдельная команда "Выделение ресурсов ввода/вывода" не вводится.
Четвертый вариант. Выполнение описанных действий по "выделению" ресурсов ввода-вывода инициируется от таймера. Разумеется, команда "Выделение ресурсов ввода/вывода" не вводится.
