Краткое описание схемы диспетчеризации процессов с учетом ввода/вывода и ее реализации

Поступающий в Вашу "систему" процесс после того как его дескриптор сформируется (см. 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.). При этом команда "Выполнить операцию ввода-вывода" должна получить название. "Запрос ресурсов ввода-вывода".

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

Четвертый вариант. Выполнение описанных действий по "выделению" ресурсов ввода-вывода инициируется от таймера. Разумеется, команда "Выделение ресурсов ввода/вывода" не вводится.

Наши рекомендации