Четверг, 19.09.2024
Kober
Меню сайта
Поиск
Категории раздела
Шпоры Орг ЭВМ [42]
Шпоры ОС [22]
Главная » Статьи » Шпоры ОС

12 Проблемы взаимодействия параллельных вычислительных процессов (потоков).

12 Проблемы взаимодействия параллельных вычислительных процессов (потоков).

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


Пренебрежение вопросами синхронизации процессов, выполняющихся в режиме мультипрограммирования, может привести к их неправильной работе или даже к краху системы. Рассмотрим, например, программу печати файлов (принт-сервер). Эта программа печатает по очереди все файлы, имена которых последовательно в порядке поступления записывают в специальный общедоступный файл "заказов" другие программы. Особая переменная NEXT, также доступная всем процессам-клиентам, содержит номер первой свободной для записи имени файла позиции файла "заказов". Процессы-клиенты читают эту переменную, записывают в соответствующую позицию файла "заказов" имя своего файла и наращивают значение NEXT на единицу. Предположим, что в некоторый момент процесс R решил распечатать свой файл, для этого он прочитал значение переменной NEXT, значение которой для определенности предположим равным 4. Процесс запомнил это значение, но поместить имя файла не успел, так как его выполнение было прервано (например, в следствие исчерпания кванта). Очередной процесс S, желающий распечатать файл, прочитал то же самое значение переменной NEXT, поместил в четвертую позицию имя своего файла и нарастил значение переменной на единицу. Когда в очередной раз управление будет передано процессу R, то он, продолжая свое выполнение, в полном соответствии со значением текущей свободной позиции, полученным во время предыдущей итерации, запишет имя файла также в позицию 4, поверх имени файла процесса S. Таким образом, процесс S никогда не увидит свой файл распечатанным.

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

 

1) Взаимное исключение: эта ситуация возникает из-за попытки к.-л. процесса использовать системные ресурсы конфликтным образом. Данная ситуация разрешается на уровне макрокоманд ядра, запрещающих конфликтную ситуацию. Операции: P- занять, V- освободить.

2) Синхронизация процессов(тама): подразумевает сигнализацию между 2 и более процессами по установленному протоколу (правилу). «Сигнал» рассматривается как событие вызывающее у получателя этого сигнала соответствующее действие.

3) Взаимоблокировка (тупик) возникает в связи с тем что число единиц конкретного ресурса больше числа ресурсов, запрашиваемых процессом. Возникает ситуация, когда процесс не в состоянии продолжить ресурс.

4) Коммуникация м/у процессами – это организация связей м/у процессами определенным образом. Необходимо учесть: адресацию процессов, структуры планировщиков и диспетчеров.

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


 

Категория: Шпоры ОС | Добавил: Kober (13.06.2013)
Просмотров: 715
Архив записей
Copyright MyCorp © 2024
Бесплатный хостинг uCoz