Параллельное программирование, взаимное исключение: различия между версиями

Перейти к навигации Перейти к поиску
Строка 17: Строка 17:




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




'''Задача о взаимном исключении'''
'''Задача о взаимном исключении'''
Задача о взаимном исключении, впервые сформулированная Эдсгером Дейкстрой в 1965 году, обеспечивает взаимно исключающий доступ нескольких конкурирующих процессов к единственному общему ресурсу [ ]. Эта задача актуальна для операционных систем, систем управления базами данных, параллельных суперкомпьютеров и компьютерных сетей, в которых необходимо как разрешать конфликты из-за попыток использования общих ресурсов несколькими процессами. Она имеет высокую важность, поскольку лежит в основе многих задач межпроцессной синхронизации.


Задача о взаимном исключении, впервые сформулированная Эдсгером Дейкстрой в 1965 году, обеспечивает взаимно исключающий доступ нескольких конкурирующих процессов к единственному общему ресурсу [6]. Эта задача актуальна для операционных систем, систем управления базами данных, параллельных суперкомпьютеров и компьютерных сетей, в которых необходимо разрешать конфликты, возникающие из-за попыток использования общих ресурсов несколькими процессами. Она имеет высокую важность, поскольку лежит в основе многих задач межпроцессной синхронизации.


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


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


бесконечный цикл
  '''бесконечный цикл'''
код остатка; код входа; код критической секции; код выхода; конец цикла
 
      ''код остатка;''
      ''код входа;''
      ''код критической секции;''
      ''код выхода;''
 
  '''конец цикла'''