![]() КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Проблемы взаимодействия процессов и общая схема решения задачи синхронизации.Если ресурс однократно использован а в системе несколько параллельных процессов, необходимо обеспечить механизм выделения процессов, чтобы исключить одновременное выделение ресурсов разным процессам. Такой ресурс называется критическим процессом, а участок - критическая секция. В отношениях критич. секций на траекториях различных процессов должно действовать правило взаимного исключения. Это правило состоит в том, что если есть несколько n процессов которые имеют в своем составе критич. секции по отношению к одному ресурсу, то в каждый момент времени только один процесс имеет право находиться внутри своей критич. секции. Процессы должны быть синхронизированы т.к. отдельные процессы не знают о существовании друг друга. Решение происходит таким образом, если есть критическая секция, то для входа и выхода в кр. секцию он обращается к ядру процессора. К нему он обращается за разрешением войти и когда выходит сообщает ему об этом. Процесс делает сист. вызов и когда управление возвращается к нему он входит в критич. секцию. Внутри процедуры пролога он может быть заблокирован. В процессе эпилога он сообщ. ядру о выходе и это не вызывает заблокирования.
Пролог Эпилог
Проблема отстранения процесса. Проблема отстранения процесса связана с расслоением критической секции. Может возникнуть ситуация, в которой процессы окажутся взаимоблокированны (см. рис.). Пусть процесс p запросил некоторый критический ресурс №1 и вошёл в критическую секцию; процесс q тоже запросил критический ресурс №2 и вошёл в критическую секцию. Процесс p захотел ресурс №2 не освободив первый, а процесс q наоборот. Ресурс №1 будет всё время занят и процесс p будет ожидать ресурс №2, который тоже занят. Если процессы независимы и никак друг с другом не взаимодействуют и контексты их не пересекаются, то никакая синхронизация не нужна. Задача синхронизации возникает когда процесс является независимым, тогда возникает задача синхронизации их времени трасс в связи с иными причинами, чем выделение физическому процессору. Конкуренция – в системе имеются критические ресурсы, т.е. которые нужны разным процессам, и которых не хватает на всех (пример вызов ДОС). Рассмотрим проблему разбиения трассы на секции (процессор как виртуальный ресурс имеющийся у каждого процесса). Выполнение процессов производится таким образом, как если в системе было много процессоров. Синхронизация трасс процессов возможна только за счёт ожидания. Ядро синхронизации процесса внутри себя имеет массу очередей, в которых процессы ожидают то или иное событие (с каждой причиной связана отдельная очередь). Общая постановка задачи синхронизации.
2) процессы не знают о существовании друг друга, строятся по одинаковым правилам и не согласуют между собой свои действия. Решение задачи синхронизации должно быть чтобы ни один процесс не был заблокирован на определённо долгое время. Тот факт, что только один процесс может находится в своей критической секции, действует режим взаимного исключения. Если есть критическая секция на трассе процесса, то для входа/выхода он взаимодействует с ядром синхронизации процессов. Перед тем как войти в критическую секцию он обращается в ядро за разрешением, а при выходе информирует ядро о выходе.
Существуют 2 класса средств: семафоры и мониторы. Они внутри себя имеют некоторый виртуальный образ ресурса, если ресурс в одном экземпляре (логическая переменная), в простейшем случае, состояние которой говорит о состоянии ресурса. В более общем случае эта переменная целочисленная (количество свободного ресурса).
|