Взаимодействие и синхронизация процессов и потоков (17)

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

Степень осведомленности Взаимосвязь Влияние одного процесса на другой Потенциальные проблемы
Процессы не осведомлены друг о друге (регулятор – ОС) Конкуренция
  • Результат работы одного процесса не зависит от действий других.
  • Возможно влияние одного процесса на время работы другого
  • Взаимоисключения
  • Взаимоблокировки
  • Голодание
Процессы косвенно осведомлены о наличии друг друга (регулятор –родитель) Сотрудничество с использованием разделения
  • Результат работы одного процесса может зависеть от информации, полученной от других.
  • Возможно влияние одного процесса на время работы другого
  • Взаимоисключения
  • Взаимоблокировки
  • Голодание
  • Синхронизация
Процессы непосредственно осведомлены о наличии друг друга Сотрудничество с использованием связи
  • Результат работы одного процесса зависит от информации, полученной от других процессов.
  • Возможно влияние одного процесса на время работы другого
  • Взаимоблокировки (расходуемые ресурсы)
  • Голодание

При необходимости использовать один и тот же ресурс параллельные процессы вступают в конфликт (конкурируют) друг с другом.

В случае конкурирующих процессов (потоков) возможно возникновение трех проблем.

1) взаимоисключения (mutual exclusion). Предположим, что два или большее количество процессов требуют доступ к одному неразделяемому ресурсу, как например принтер. О таком ресурсе будем говорить, как о критическом ресурсе, а о части программы, которая его использует, – как о критическом разделе (critical section) программы. Крайне важно, чтобы в критической ситуации в любой момент могла находиться только одна программа. Например, во время печати файла требуется, чтобы отдельный процесс имел полный контроль над принтером, иначе на бумаге можно получить чередование строк двух файлов.

2) Осуществление взаимных исключений создает две дополнительные проблемы. Одна из них – взаимоблокировки (deadlock) или тупики.

3) голодание. Пусть ОС предоставила доступ к ресурсу процессу Р3. Пока он работает с ресурсом, доступ к ресурсу вновь требуется процессу Р1. В результате по освобождении ресурса R процессом Р3 может оказаться, что ОС вновь предоставит доступ к ресурсу процессу Р1. Тем временем процессу Р3 вновь требуется доступ к ресурсу R. Таким образом, теоретически возможна ситуация, в которой процесс Р2 никогда не получит доступ к требуемому ему ресурсу, несмотря на то, что никакой взаимной блокировки в данном случае нет.

Часть кода программы, которая работает с разделяемыми ресурсами – критическая область. А борьба двух и более процессов за ресурс – тупиковая ситуация.

Создание процессов и потоков. Модели процессов и потоков. Системные вызовы. (16)

Создание процесса это прежде всего создание описателя, а именно – создание нескольких информационных структур, содержащих атрибуты о процессе:

Идентификатор

Состояние процесса

схема планирования

Приоритет

Информация о событиях

Указатели на ОП и ЖД

таблица GUID хранится на ЖД


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: