Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Взаимодействие и синхронизация процессов

Процессам часто нужно взаимодействовать друг с другом, например, один процесс может передавать данные другому процессу, или несколько процессов могут обрабатывать данные из общего файла. Существуют три основных способа взаимодействия:

- используя разделяемую память;

- используя программные каналы;

- используя аппарат событий.

Во всех этих случаях возникает проблема синхронизации процессов, которая может решаться приостановкой и активизацией процессов, организацией очередей, блокированием и освобождением ресурсов.

Важным понятием синхронизации процессов является понятие «критическая секция» программы. Критическая секция - это часть программы, в которой осуществляется доступ к разделяемым данным. Чтобы исключить эффект гонок по отношению к некоторому ресурсу, необходимо обеспечить, чтобы в каждый момент в критической секции, связанной с этим ресурсом, находился максимум один процесс. Этот прием называют взаимным исключением.

Одним из способов взаимного исключения является использование блокирующих переменных. В этом случае с каждым разделяемым ресурсом связывается двоичная переменная, которая принимает значение 1, если ресурс свободен, и значение 0, если ресурс занят. Перед входом в критическую секцию процесс проверяет, свободен ли ресурс. Если он занят, то проверка циклически повторяется, если свободен, то значение блокирующей переменной устанавливается в 0, и процесс входит в критическую секцию. После того, как процесс выполнит все действия с разделяемым ресурсом, значение блокирующей переменной снова устанавливается равным 1.

Реализация критических секций с использованием блокирующих переменных имеет существенный недостаток: в течение времени, когда один процесс находится в критической секции, другой процесс, которому требуется тот же ресурс, будет выполнять рутинные действия по опросу блокирующей переменной, бесполезно тратя процессорное время. Для устранения таких ситуаций может быть использован так называемый аппарат событий. С помощью этого средства могут решаться не только проблемы взаимного исключения, но и более общие задачи синхронизации процессов. В разных операционных системах аппарат событий реализуется по своему, но в любом случае используются системные функции аналогичного назначения, которые условно можно назвать назовем WAIT(x) и POST(x), где x - идентификатор некоторого события. В этом случае, если ресурс занят, то процесс не выполняет циклический опрос, а вызывает системную функцию WAIT(D), здесь D обозначает событие, заключающееся в освобождении ресурса D. Функция WAIT(D) переводит активный процесс в состояние ОЖИДАНИЕ и делает отметку в его дескрипторе о том, что процесс ожидает события D. Процесс, который в это время использует ресурс D, после выхода из критической секции выполняет системную функцию POST(D), в результате чего операционная система просматривает очередь ожидающих процессов и переводит процесс, ожидающий события D, в состояние ГОТОВНОСТЬ.

Достоинством синхронизации используя аппарат событий является отсутствие активного ожидания представления ресурса.

Задание на лабораторную работу

Разработать программу, моделирующую один из алгоритмов управления процессами в соответствии с вариантом задания. При моделировании считать что:

- моделированию подвергается однопроцессорная вычислительная система разделения времени;

- общий объем памяти вычислительной системы составляет 64К;

- ввод-вывод является разделяемым ресурсом, недопускающим одновременного использования несколькими процессами и требующий решения проблемы синхронизации процессов;

- поступаемые на выполнение задачи содержатся в файлах, моделирующих процессы (формат смотри ниже);

- вытеснение процесса из процессора приводит к сохранению информации о его состоянии в контексте процесса, который восстанавливается при последующем поступлении процесса в процессор;

- вытеснение процесса из процессора также приводит к освобождению занимаемой им памяти;

- пользователь может «загружать» в моделируемую систему новые задачи, порождающие процессы.

Предусмотреть возможность интерактивного слежения за состоянием вычислительной системы в процессе выполнения задач (состояние очередей «ОЖИДАНИЕ» и «ГОТОВНОСТЬ», приоритеты процессов, требования к ресурсом, состояние ПРОЦЕССОРА, состояние ВВОДА-ВЫВОДА, состояние ПАМЯТИ и т.д.).

Формат файла, моделирующего задачу:

 

ПАМЯТЬ-1000

 

ПРЦЕССОР-10

ВВОД-ВЫВОД-20

ПРЦЕССОР-12

...

ПРЦЕССОР-5

ВВОД-ВЫВОД-25

 

Где первая строка «ПАМЯТЬ» – определяет требования процесса на объем (в байтах) доступной памяти (если такового в системе на данный момент нет, то процесс поступает в очередь готовых). Остальные строки представляют собой поэтапное требование процесса в процессорном времени «ПРОЦЕССОР» (в секундах) и во времени ввода-вывода «ВВОД-ВЫВОД» (в секундах).

В отчете представить блок-схему функционирования вычислительной системы.

Варианты заданий

Вариант Алгоритм управления процессами
Управление процессами на основе бесприоритетного квантования. Очередь готовых процессов – FIFO. Синхронизация процессов с использованием аппарата событий.
Управление процессами на основе квантования. Очередь готовых процессов – с абсолютными приоритетами (приоритеты назначаются пользователем при загрузке соответствующей задачи). Синхронизация процессов с использованием блокирующих переменных.
Управление процессами на основе квантования. Очередь готовых процессов – с относительными приоритетами (приоритеты назначаются пользователем при загрузке соответствующей задачи). Синхронизация процессов с использованием аппарата событий.
Управление процессами на основе квантования. Очередь готовых процессов – LIFO. Квант времени, отводимый процессу, выбирается в соответствии с приоритетом процесса (приоритеты назначаются пользователем при загрузке соответствующей задачи). Синхронизация процессов с использованием блокирующих переменных.
Управление процессами на основе квантования. Очередь готовых процессов – с относительными приоритетами (приоритеты назначаются пользователем при загрузке соответствующей задачи). Квант времени, отводимый процессу, выбирается случайным образом в заданном диапазоне. Синхронизация процессов с использованием аппарата событий.
Управление процессами на основе бесприоритетного квантования. Очередь готовых процессов – LIFO. Квант времени, отводимый процессу, равен среднему значению требований процессорного времени «ПРОЦЕССОР» соответствующей задачи. Синхронизация процессов с использованием блокирующих переменных.
Управление процессами на основе квантования. Очередь готовых процессов – с абсолютными приоритетами. Приоритеты назначаются системой: процесс, предъявляющий минимальные требования к вводу-выводу, получает наивысший приоритет Синхронизация процессов с использованием аппарата событий.
Управление процессами на основе квантования. Очередь готовых процессов – с относительными приоритетами (приоритеты назначаются системой случайным образом при загрузке соответствующей задачи). Синхронизация процессов с использованием блокирующих переменных.

Последнее изменение этой страницы: 2016-07-23

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...