Разделы презентаций


Основы операционных систем 1

Содержание

Лекция 6. Механизмы синхронизации

Слайды и текст этой презентации

Слайд 1Основы операционных систем

Основы  операционных систем

Слайд 2Лекция 6. Механизмы синхронизации

Лекция 6.  Механизмы синхронизации

Слайд 3Недостатки программных алгоритмов
Непроизводительная трата процессорного времени в циклах пролога
Возможность

возникновения тупиковых ситуаций при приоритетном планировании
while (some condition) {
entry section
critical

section

exit section

remainder section

}

while (some condition) {

entry section

critical section

exit section

remainder section

}

L

H

Недостатки программных алгоритмов Непроизводительная трата процессорного времени в циклах прологаВозможность возникновения тупиковых ситуаций при приоритетном планированииwhile (some

Слайд 4Семафоры Дейкстры (Dijkstra)
Допустимые атомарные операции
P(S): пока S == 0

процесс блокируется;
S = S - 1
V(S): S =

S + 1

S – семафор – целая разделяемая переменная с неотрицательными значениями

При создании может быть инициализирована любым неотрицательным значением

Семафоры Дейкстры (Dijkstra) Допустимые атомарные операцииP(S): пока S == 0 процесс блокируется;		  S = S -

Слайд 5Проблема Producer-Consumer
Producer:
while (1) {
}
produce_item();
put_item();
Consumer:
while (1) {
}
get_item();
consume_item();
Информация передается через буфер

конечного размера – N

Проблема Producer-Consumer Producer:while (1) {}produce_item();put_item();Consumer:while (1) {}get_item();consume_item();Информация передается через буфер конечного размера – N

Слайд 6Проблема Producer-Consumer
Producer:
while (1) {
}
produce_item();
put_item();
Consumer:
Решение с помощью семафоров
Semaphore mut_ex =

1;
Semaphore full = 0;
Semaphore empty = N;
P(empty);
P(mut_ex);
V(full);
V(mut_ex);
while (1) {
}
consume_item();
get_item();
P(full);
P(mut_ex);
V(empty);
V(mut_ex);

Проблема Producer-Consumer Producer:while (1) {}produce_item();put_item();Consumer:Решение с помощью семафоровSemaphore mut_ex = 1;Semaphore full = 0;Semaphore empty = N;P(empty);P(mut_ex);V(full);V(mut_ex);while

Слайд 7Мониторы Хора (Hoare)
Monitor monitor_name {
}
Описание переменных;
void m1(…) { …

}
void m2(…) { … }
void mn(…) { … }

Блок инициализации

переменных;

Структура

Мониторы Хора (Hoare) Monitor monitor_name {}Описание переменных;void m1(…) { … }void m2(…) { … }void mn(…) {

Слайд 8Мониторы Хора (Hoare)
Condition C;
Выполнение операции signal приводит к разблокированию

только одного процесса, ожидающего этого (если он существует)
Процесс, выполнивший операцию

wait над условной переменной, всегда блокируется

Условные переменные (condition variables)

C.wait
C.signal

Процесс, выполнивший операцию signal, немедленно покидает монитор

Мониторы Хора (Hoare) Condition C;Выполнение операции signal приводит к разблокированию только одного процесса, ожидающего этого (если он

Слайд 9

Проблема Producer-Consumer
Producer:
while (1) {
}
produce_item();
Consumer:
Решение с помощью мониторов
PC.put ();
while (1)

{
}
consume_item();
PC.get ();
Monitor PC {
}
Condition full, empty;
int count;
void put ()

{
if (count == N) full.wait;
put_item(); count++;
if (count == 1) empty.signal;
}

{ count = 0; }

void get () {
if (count == 0) empty.wait;
get_item(); count--;
if (count == N-1) full.signal;
}

Проблема Producer-Consumer Producer:while (1) {}produce_item();Consumer:Решение с помощью мониторовPC.put ();while (1) {}consume_item();PC.get ();Monitor PC {}Condition full, empty;int count;

Слайд 10Сообщения
Примитивы для обмена информацией между процессорами
Для передачи данных:

send (address, message)
блокируется при попытке записи в заполненный

буфер
Для приема данных
receive (address, message)
блокируется при попытке чтения из пустого буфера

Обеспечивают взаимоисключения при работе с буфером

Сообщения Примитивы для обмена информацией между процессорамиДля передачи данных:		  send (address, message)		  	блокируется при попытке

Слайд 11Проблема Producer-Consumer
Producer:
while (1) {
}
produce_item();
send (address, item)
Решение с помощью сообщений

Consumer:
while

(1) {
}
receive (address,item);
consume_item()

Проблема Producer-Consumer Producer:while (1) {}produce_item();send (address, item)Решение с помощью сообщенийConsumer:while (1) {}receive (address,item);consume_item()

Слайд 12



Эквивалентность семафоров, мониторов и сообщений
Реализация мониторов через семафоры
Semaphore mut_ex

= 1; /* Для организации взаимоисключения */
При входе в монитор
При

нормальном выходе из монитора

void mon_enter (void){
P(mut_ex);
}

void mon_exit (void){
V(mut_ex);
}

Semaphore ci = 0; int fi = 0; /* Для каждой условной переменной */

Для операции wait

void wait (i){
fi += 1;
V(mut_ex); P(ci);
fi -= 1;
}

Для операции signal

void signal_exit (i){
if (fi) V(ci);
else V(mut_ex);
}

Эквивалентность семафоров, мониторов и сообщений Реализация мониторов через семафорыSemaphore mut_ex = 1; /* Для организации взаимоисключения */При

Слайд 13Эквивалентность семафоров, мониторов и сообщений
Реализация сообщений через семафоры
буфер
Для каждого

процесса: Semaphore ci = 0;
Очередь на чтение
Очередь на запись
Один на

всех: Semaphore mut_ex = 1;

Чтение

P(mut_ex)

Есть msg?

– встать в очередь

– V(mut_ex)

– P(ci)

– прочитать

– есть кто на запись?

– V(mut_ex)

– удалить

– V(cj)

Semaphore cj = 0;

Один на всех: Semaphore mut_ex = 0;

-нет

Pi

-да

M1

-нет

Pj

-да

Semaphore cj = 1;

Эквивалентность семафоров, мониторов и сообщений Реализация сообщений через семафорыбуферДля каждого процесса: Semaphore ci = 0;Очередь на чтениеОчередь

Слайд 14Эквивалентность семафоров, мониторов и сообщений
Реализация сообщений через семафоры
буфер
Для каждого

процесса: Semaphore ci = 0;
Очередь на чтение
Очередь на запись
Один на

всех: Semaphore mut_ex = 1;

Запись

P(mut_ex)

Есть место?

– встать в очередь

– V(mut_ex)

– P(ci)

– записать

– есть кто на чтение?

– V(mut_ex)

– удалить

– V(cj)

Semaphore cj = 0;

Один на всех: Semaphore mut_ex = 0;

-нет

Pj

-да

M1

-нет

Pi

-да

Semaphore cj = 1;

M2

M3

M4

Эквивалентность семафоров, мониторов и сообщений Реализация сообщений через семафорыбуферДля каждого процесса: Semaphore ci = 0;Очередь на чтениеОчередь

Слайд 15Эквивалентность семафоров, мониторов и сообщений
Реализация семафоров через мониторы
Monitor sem

{
int count;
Condition ci;

/* для каждого процесса */
очередь для ожидающих процессов;
void P(void){
if (count == 0) { добавить себя в очередь;
ci.wait;
}
count = count -1;
}
void V(void){
count = count+1;
if(очередь не пуста) { удалить процесс Pj из очереди;
cj.signal;
}
}
{ count = N; }
}
Эквивалентность семафоров, мониторов и сообщений Реализация семафоров через мониторыMonitor sem {   int count;

Слайд 16Эквивалентность семафоров, мониторов и сообщений
Реализация семафоров через сообщения

send (A, “P, P1”);
receive

(P1, msg);

P1

Pm

A

int count = 1;

P0

Для
ожидания

while(1) {
receive (A, msg);
if(это “P” сообщение){
if(count > 0) {count = count -1;
send (Pi, msg); }
else добавить в очередь;
}
else if(это “V” сообщение) {

P1

send (A, “V,Pm”);
receive (Pm, msg);

Pm


send(Pi, msg);
if(есть ждущие){
удалить из очереди;
send (Pk, msg); }
else count = count+1;
}
}

P:

V:

“P, P1”

int count = 0;

msg

P1

“V,Pm”

msg

msg

Эквивалентность семафоров, мониторов и сообщений Реализация семафоров через сообщения    send (A, “P, P1”);

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика