Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


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

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

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

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

Презентация на тему Механизмы синхронизации. (Тема 10)

Недостаток алгоритмов реализации взаимоисключенияProcess Ashared int lock = 0; while (some condition) { while(lock); lock = 1; critical section lock = 0; remainder section}Process Bshared int lock = 0; while
10МЕХАНИЗМЫ СИНХРОНИЗАЦИИКурс лекций «Системное программное обеспечение» «System Software» «Операционные системы»для студентов специальностей Недостаток алгоритмов реализации взаимоисключенияProcess Ashared int lock = 0; while (some condition) Недостаток алгоритмов реализации взаимоисключения. ВыводБесполезная работа в прологе критической секции ? ЦПУ Семафоры ДейкстрыСемафор – это целая неотрицательная переменная, доступ любого процесса к которой, Задача производителя-потребителяБуфер размера NОграничения:Одновременно к буферу не могут обращаться никакие два процессаПроизводитель Решение при помощи семафоровSemaphore mutex = 1; Semaphore empty = N; Semaphore Мониторы ХоараМонитор – тип данных в ЯВУ (аналог класса в ООП), содержит Общая структура монитораmonitor monitor_name {  описание внутренних переменных ;   void Решение при помощи мониторов monitor ProducerConsumer {    condition full, СообщенияПримитивные операции над сообщениями:прямая адресацияsend(P, message) послать сообщение message процессу Preceive(Q, message)получить Решение при помощи сообщенийProducerwhile(1) {  produce_item;  send(buf, item);}Consumerwhile(1) { receive(buf, ВОПРОСЫ?http://iit.bstu.by/ss
Слайды презентации

Слайд 2

Недостаток алгоритмов реализации взаимоисключения

Process A

shared int lock =

Недостаток алгоритмов реализации взаимоисключенияProcess Ashared int lock = 0; while (some

0;
while (some condition) {
while(lock); lock =

1;
critical section
lock = 0;
remainder section
}

Process B

shared int lock = 0;
while (some condition) {
while(lock); lock = 1;
critical section
lock = 0;
remainder section
}

while(lock);
lock = 1;
critical section
critical section
critical section

while(lock); while(lock); while(lock); while(lock); while(lock);

critical section
critical section
critical section
critical section
critical section

while(lock); while(lock); while(lock); while(lock); while(lock);

critical section
critical section
lock = 0;
remainder section
remainder section

while(lock);
lock = 1;
critical section
critical section
critical section

A

B

A

B

A

B


Слайд 3 Недостаток алгоритмов реализации взаимоисключения. Вывод
Бесполезная работа в прологе

Недостаток алгоритмов реализации взаимоисключения. ВыводБесполезная работа в прологе критической секции ?

критической секции ?
ЦПУ вместо полезных вычислений производит проверку

условия, которое изменится только в один из следующих квантов времени ?
Существенное снижение КПД ?
ОС могла бы следить за тем, когда кого пускать в критическую секцию ?
Процессы должны сообщать ОС о входе в критическую секцию и выходе из неё


Слайд 4 Семафоры Дейкстры
Семафор – это целая неотрицательная переменная, доступ

Семафоры ДейкстрыСемафор – это целая неотрицательная переменная, доступ любого процесса к

любого процесса к которой, за исключением момента ее инициализации,

может осуществляться только через две атомарные операции: P и V.

Proberen
P(S): пока S == 0 процесс блокируется;
S = S – 1;
Verhogen
V(S): S = S + 1;

Мьютекс – двоичный семафор (0 или 1)

Слайд 5 Задача производителя-потребителя
Буфер размера N
Ограничения:
Одновременно к буферу не могут

Задача производителя-потребителяБуфер размера NОграничения:Одновременно к буферу не могут обращаться никакие два

обращаться никакие два процесса
Производитель не может писать в полный

буфер, должен ждать освобождения хоть одной ячейки буфера
Потребитель не может читать из пустого буфера, должен ждать заполнения хоть одной ячейки буфера

Producer
while(1) {
produce_item;
put_item;
}

Consumer
while(1) {
get_item;
consume_item;
}


Слайд 6 Решение при помощи семафоров
Semaphore mutex = 1;
Semaphore

Решение при помощи семафоровSemaphore mutex = 1; Semaphore empty = N;

empty = N;
Semaphore full = 0;
Producer
while(1) {

produce_item;

P(empty);
P(mutex);
put_item;
V(mutex);
V(full);


}

Consumer
while(1) {


P(full);
P(mutex);
get_item;
V(mutex);
V(empty);

consume_item;
}

+: нет бесполезной работы системы по проверке в цикле
-: сложность отслеживания корректности размещения семафоров



Слайд 7 Мониторы Хоара
Монитор – тип данных в ЯВУ (аналог

Мониторы ХоараМонитор – тип данных в ЯВУ (аналог класса в ООП),

класса в ООП), содержит переменные, определяющие его состояние, и

функции-методы.
В любой момент времени только один процесс может быть активен, т. е. находиться в состоянии готовность или исполнение, внутри данного монитора
Условные переменные – переменные монитора, над которыми могут производиться две примитивные операции:
wait – процесс блокируется на данной переменной
signal – процесс, заблокированный на данной переменной, разблокируется


Слайд 8 Общая структура монитора
monitor monitor_name {
описание внутренних

Общая структура монитораmonitor monitor_name { описание внутренних переменных ;  void m1(...){...

переменных ;

  void m1(...){...
}
void

m2(...){...
}
...
void mn(...){...
}

  {
блок инициализации
внутренних переменных;
}
}

Слайд 9 Решение при помощи мониторов
monitor ProducerConsumer {

Решение при помощи мониторов monitor ProducerConsumer {  condition full, empty;

condition full, empty;
int

count;

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

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

{
count = 0;
}

}

Producer:
while(1) {
produce_item;
ProducerConsumer.put();
}


Consumer:
while(1) {
ProducerConsumer.get();
consume_item;
}

+: семафоры расставит компилятор, использование монитора простое
-: необходима поддержка мониторов языком/компилятором



Слайд 10 Сообщения
Примитивные операции над сообщениями:

прямая адресация
send(P, message)
послать сообщение

СообщенияПримитивные операции над сообщениями:прямая адресацияsend(P, message) послать сообщение message процессу Preceive(Q,

message процессу P
receive(Q, message)
получить сообщение message от процесса Q

непрямая

адресация
send(A, message)
послать сообщение message в почтовый ящик A
receive(A, message)
получить сообщение message из почтового ящика A


Слайд 11 Решение при помощи сообщений
Producer
while(1) {
produce_item;

Решение при помощи сообщенийProducerwhile(1) { produce_item; send(buf, item);}Consumerwhile(1) { receive(buf, item);

send(buf, item);
}
Consumer
while(1) {
receive(buf, item);
consume_item;
}
+: встроенный механизм

взаимоисключения, тривиальность использования
-: невозможность реализации сложных алгоритмов синхронизации



  • Имя файла: mehanizmy-sinhronizatsii-tema-10.pptx
  • Количество просмотров: 97
  • Количество скачиваний: 0