Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Мониторы ресурсов и реализация взаимоисключения на мониторах

ОС реального времени | Иерархический принцип построения ОС. Простая и расширенная машины | Виртуальные машины | Цели и задачи мультипрограммирования. | Понятие ядра ОС | Понятия процесса и потока | Алгоритмы с применением прерываний процессов и без них. | Понятие ресурса. Оперативно перераспределяемые и оперативно неперераспределяемые ресурсы | Распределение ресурсов и управление ресурсами как функция ОС | Понятие взаимоисключения нескольких процессов и критические участки |


Читайте также:
  1. II. 8. Мероприятия по охране окружающей среды и рациональному использованию природных ресурсов
  2. IV.Реализация государственной семейной политики на региональном уровне
  3. А как же нужды, удовлетворить которые нам не удается ввиду ограниченности ресурсов?
  4. Алгоритмы взаимоисключения Деккера и Петерсона.
  5. АНАЛИЗ И ОЦЕНКА ЭФФЕКТИВНОСТИ ИСПОЛЬЗОВАНИЯ ФИНАНСОВЫХ РЕСУРСОВ
  6. Анализ эффективности использования материальных ресурсов
  7. Анализ эффективности использования трудовых ресурсов и фонда заработной платы на предприятии за исследуемый период

Монитор — это набор процедур, переменных и структур данных. Процессы могут вызывать процедуры монитора, но не имеют доступа к внутренним данным монитора. Мониторы имеют важное свойство, которое делает их полезными для достижения взаимного исключе­ния: только один процесс может быть активным по отношению к мо­нитору. Компилятор обрабатывает вызовы процедур монитора осо­бым образом. Обычно, когда процесс вызывает процедуру монитора, то первые несколько инструкций этой процедуры проверяют, не ак­тивен ли какой-либо другой процесс по отношению к этому монитору. Если да, то вызывающий процесс приостанавливается, пока другой процесс не освободит монитор. Таким образом, исключение входа нескольких процессов в монитор реализуется не программистом, а компилятором, что делает ошибки менее вероятными.

Соблюдение условия выполнения только одного процесса в опре­делённый момент времени позволяет монитору обеспечить взаимоис­ключения. Данные монитора доступны в этот момент только одному процессу, следовательно, защитить совместно используемые струк­туры данных можно, просто поместив их в монитор. Если данные в мониторе представляют некий ресурс, то монитор обеспечивает вза­имоисключение при обращении к ресурсу.

На основании данного определения монитора легко реализовать функции входа в критическую секцию (enter) и выхода из критиче­ской секции (leave) для произвольного числа конкурирующих про­цессов.

monitor {

boolean flag=false; /* флаг занятости ресурса */

queue S; /* очередь ожидания */

enterO {

if(flag==true) wait(S);

flag=true;

}

leave() {

flag=false;

signal(S); /* разбудить ожидающие процессы */

}

}

Как можно видеть, для эффективной реализации монитора необ­ходимы системные примитивы wait() и signalQ, позволяющие органи­зовать ожидание процессом наступления события «ресурс свободен» и возобновление процесса при наступлении этого события. Причём, примитив wait () выводит процесс из монитора, и для продолжения работы процесс должен снова пытаться войти в монитор (в функцию enter()). Этим обеспечивается возможность взаимоисключения для любого количества процессов.


Дата добавления: 2015-07-20; просмотров: 43 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Алгоритмы взаимоисключения Деккера и Петерсона.| Реализация взаимоисключения на аппаратном уровне

mybiblioteka.su - 2015-2024 год. (0.005 сек.)