Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OTVET__ShPOR.docx
Скачиваний:
13
Добавлен:
27.04.2019
Размер:
583.96 Кб
Скачать

32. Семафоры и семафорные примитивы. Их использование для решения проблемы критической секции.

Под семафором понимается переменная, принимающая целые неотрицательные значения.

Семафорная технология:

Дейкстра и Деккер предложили 2 семафорных примитива

S={0;1} – семафор

P(S) – понижающий примитив

V(S) – повышающий примитив

При помощи семафорных примитивов проблема критической секции решается следующим образом:

Процесс 1: программа 11; P(S); CS1; V(S); программа 12; goto L1.

Процесс 2: программа 21; P(S); CS2; V(S); программа 22; goto L2.

33. Семафоры и семафорные примитивы. Использование семафоров для синхронизации процессов.

Под семафором понимается переменная, принимающая целые неотрицательные значения.

Семафорная технология:

Дейкстра и Деккер предложили 2 семафорных примитива

S={0;1} – семафор

P(S) – понижающий примитив

V(S) – повышающий примитив

Использование

Семафоры можно использовать для синхронизации процессов. Пусть есть 2 процесса П1 и П2. Процесс П2 запускается после выполнения части кода П1. На время выполнения П2 П1 «засыпает». Выполнение процесса П1 продолжается только после полного завершения процесса П2.

Р ешение:

S = 0;

П1: П11; P(S); П12;

П2: П12; V(S);

S=0, потому что синхронизация

Если S=1 – не синхронно

S- выбираем сами, т.е выбирается в зависимости от поставленной задачи.

43. Физическая и математическая память. Способы организации математической памяти. Сегментно-страничное распределение памяти.

Как и в сегментном способе распределения памяти, программа разбивается на логически законченные части — сегменты — и виртуальный адрес содержит указание на номер соответствующего сегмента. Вторая составляющая виртуального адреса — смещение относительно начала сегмента — в свою очередь может быть представлено состоящим из двух полей: виртуальной страницы и индекса. Другими словами, получается, что виртуальный адрес теперь состоит из трех компонентов: сегмента, страницы и индекса. Этот способ организации виртуальной памяти вносит еще большую задержку доступа к памяти. Необходимо сначала вычислить адрес Дескриптора сегмента и прочитать его, затем определить адрес элемента таблицы страниц этого сегмента и извлечь из памяти необходимый элемент и уже только после этого можно к номеру физической страницы приписать номер ячейки в странице (индекс). Задержка доступа к искомой ячейке получается, по крайней мере, в 3 раза больше, чем при простой прямой адресации. Чтобы избежать этой неприятности, вводится кэширование, причем кэш, как правило, строится по ассоциативному принципу. Другими словами, просмотры двух таблиц в памяти могут быть заменены одним обращением к ассоциативной памяти.

34. Семафоры и семафорные примитивы. Задача «поставщик-потребитель».

Под семафором понимается переменная, принимающая целые неотрицательные значения.

Семафорная технология:

Дейкстра и Деккер предложили 2 семафорных примитива

S={0;1} – семафор

P(S) – понижающий примитив

V(S) – повышающий примитив

Задача «поставщик-потребитель».

Процесс поставщик создает информацию и помещает ее в общую область (буфер). Процесс потребитель извлекает информацию из буфера и осуществляет ее дальнейшую обработку.

1)Работа с простым, разделенным буфером.

Есть 2 процесса: поставщик и потребитель. Обмен информацией происходит через буфер, кот. в текущий момент времени может быть доступен либо на чтение, либо на запись. Необходимо так запрограммировать процесс, чтобы сообщение, помещенное в буфер не перезаписывалось без прочтения, и в то же время было прочитано 1 раз.

П оставщик: создание информации(П11);

Работа с буфером (П12);

Потребитель: работа с буфером(П21);

Обработка информации (П22);

Поставщик: П11; P(S); П12; V(S); goto L1;

Потребитель: P(S); П21; V(S); П22; goto L2;

Состояние буфера: Пустой = 1;

Полный =0;

L1: поставщик: П11; Р(пустой); П12; V(полный); goto L1;

L2: Р(полный); П12; V(пустой); П22; goto L2;

Это была задача с разделенным семафором.

2)Работа с составным буфером.(буферный пул)

Е сть процесс поставщик, кот. может помещать информацию в буферный пул вплоть до его заполнения, даже если информация не извлекается. Есть процесс потребитель, кот извлекает информацию из буферного пула вплоть до его опустошения. В текущий момент времени доступ к буферу открыт либо по чтению, либо по записи, за одно обращение записывается или освобождается 1 ячейка пула. Необходимо так запрограммировать процесс, что бы в любой момент времени было известно число свободных и занятых ячеек, и процесс не выполнял чтение из несуществующей ячейки или запись в нее. (все равно в каком порядке происходит запись и забирается информация).

Поставщик: L1: П11; P(e); P(S); П12; V(f); V(S); goto L1;

Потребитель: L2: P(f); P(S); П21; V(e); V(S); П22; goto L2;

е- количество свободных ячеек

f – количество занятых ячеек

3)Работа с кольцевым буфером.

Пусть есть 2 процесс: поставщик и потребитель. В текущий момент времени буфер содержит очередь помещенных, но еще не прочитанных сообщений. Введем 2 переменных, 1-для чтения(индекс 1 ячейки, кот. нужно прочитать – 1ЧТ), и одну для заполнения(1ая свободная ячейка после очереди – 1ЗП). Необходимо запрограммировать работку процесса так, что бы информация заносилась и очищалась в определенном порядке, при этом доступ к буферу был открыт как по чтению, так и по записи.

П оставщик: P (пустой)

Buf(1ЗП)=сообщение

1ЗП= (1ЗП+1)%N

V (полный)

Потребитель: Р (полный)

ДАТА = Buf(1ЧТ)

1ЧТ=(1ЧТ+1)%N

V (пустой)

Пустой = число свободных ячеек;

Полный = число занятых ячеек;

Р(пустой) – пока это не = 0 будем писать, когда станет 0, процесс прекратиться.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]