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

11. Параллельное и псевдопараллельное исполнение (планировщик)

По-настоящему параллельное исполнение процессов возможно только в многопроцессорной системе, системе параллельных компьютеров или мультикомпьютере, поскольку только в них присутствуют несколько системных конвейеров для исполнения команд.

В однопроцессорной многозадачной системе поддерживается так называемое псевдопараллельное исполнение, при котором создается видимость параллельной работы нескольких процессов. В таких системах, однако, процессы выполняются последовательно, занимая малые кванты процессорного времени.

Виды многопроцессности:

Кооперативная

Данная схема основана на том, что переключение процессов происходит по инициативе активного процесса.

Вытесняющая

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

С использованием планировщика

При данном подходе главной является расстановка приоритетов между процессами:

1.Многоочередные дисциплины обслуживания.

2.Динамическое распределение приоритетов

12. Методы синхронизации при параллельной работе

1) Прерывания

Прерывание – сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.

Адреса подпрограмм обслуживания прерываний находятся в специальной таблице и называются векторами прерывания.

При наличии нескольких источников запросов прерывания должен быть установлен определенный порядок в обслуживании поступающих запросов.

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

Различают абсолютный и относительный приоритеты. Запрос, имеющий абсолютный приоритет, прерывает выполняемую программу и инициирует выполнение соответствующей прерывающей программы. Запрос с относительным приоритетом является первым кандидатом на обслуживание после завершения выполнения текущей программы.

2) Сигналы

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

Процесс может посылать сигналы только членам своей группы процессов — т. е. прямому родителю, всем прародителям, сиблингам и всем потомкам. Сигнал может быть послан всей группе за раз.

Сигналы также используются для сообщения процессу об исключительных ситуациях — ошибках сегментации, делении на ноль и т. д.

3) Семафоры

Семафор – целочисленная переменная, с которой ассоциирована очередь ожидающих процессов. Над семафором возможно проведение только двух операций - “открытия” и “закрытия”, названных соответственно P- и V-операциями. Операции над семафорами являются неделимыми (непрерываемыми), поэтому их часто называют примитивами. Пытаясь пройти через семафор, процесс пытается вычесть из значения переменной 1. Если значение переменной больше или равно 1, процесс проходит сквозь семафор успешно (семафор открыт). Если переменная равна нулю (семафор закрыт), процесс останавливается и ставится в очередь. Таким образом, семафор выполняет роль вспомогательного критического ресурса. Закрытие семафора соответствует захвату ресурса, доступ к которому контролируется этим семафором. Процесс, закрывший семафор, захватывает ресурс. Если ресурс захвачен, остальные процессы вынуждены ждать его освобождения. Закончив работу с ресурсом, процесс увеличивает значение семафора на единицу, открывая его.

4) Блокировка участков файлов

Два типа блокировок: на чтение и на запись. Блокировка на чтение разрешает другим процессам читать из заблокированного участка и даже ставить туда такую же блокировку, но запрещает писать в этот участок и, тем более, блокировать его на запись. Этим достигается уверенность в том, что структуры данных, считываемые из захваченного участка, никем не модифицируются, поэтому гарантирована их целостность и непротиворечивость.

В свою очередь, блокировка на запись запрещает всем, кроме блокирующего процесса, любой доступ к заблокированному участку файла. Это означает, что данный участок файла сейчас будет модифицироваться, и целостность данных в нем не гарантирована.

5) Гармонически взаимодействующие последовательные процессы

Эта концепция состоит в следующем:

– Каждый процесс представляет собой независимый программный модуль, для которого создается иллюзия чисто последовательного исполнения.

– Процессы не имеют разделяемых данных.

– Все взаимодействие происходит в выделенных точках процессов. Иными словами, все передачи данных неразрывно связаны с синхронизацией.

– Синхронизация, не сопровождающаяся передачей данных, лишена смысла – процессы, не имеющие разделяемых структур данных, совершенно независимы и не имеют ни критических точек, ни нерентабельных модулей.