Категории: ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника |
Взаимодействие и синхронизация процессовПроцессам часто нужно взаимодействовать друг с другом, например, один процесс может передавать данные другому процессу, или несколько процессов могут обрабатывать данные из общего файла. Существуют три основных способа взаимодействия: - используя разделяемую память; - используя программные каналы; - используя аппарат событий. Во всех этих случаях возникает проблема синхронизации процессов, которая может решаться приостановкой и активизацией процессов, организацией очередей, блокированием и освобождением ресурсов. Важным понятием синхронизации процессов является понятие «критическая секция» программы. Критическая секция - это часть программы, в которой осуществляется доступ к разделяемым данным. Чтобы исключить эффект гонок по отношению к некоторому ресурсу, необходимо обеспечить, чтобы в каждый момент в критической секции, связанной с этим ресурсом, находился максимум один процесс. Этот прием называют взаимным исключением. Одним из способов взаимного исключения является использование блокирующих переменных. В этом случае с каждым разделяемым ресурсом связывается двоичная переменная, которая принимает значение 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
Где первая строка «ПАМЯТЬ» – определяет требования процесса на объем (в байтах) доступной памяти (если такового в системе на данный момент нет, то процесс поступает в очередь готовых). Остальные строки представляют собой поэтапное требование процесса в процессорном времени «ПРОЦЕССОР» (в секундах) и во времени ввода-вывода «ВВОД-ВЫВОД» (в секундах). В отчете представить блок-схему функционирования вычислительной системы. Варианты заданий
|
|||||||||||||||||||
Последнее изменение этой страницы: 2016-07-23 lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда... |