4551
правка
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) |
||
Строка 17: | Строка 17: | ||
Распределение ресурсов относится к взаимодействию между процессами, включающему соперничество. Задача заключается в том, как разрешить конфликты, возникающие в случаях, когда несколько процессов пытаются использовать общие ресурсы. Или, иначе говоря, как распределить общие ресурсы по конкурирующим процессам. Специальным случаем общей задачи распределения ресурсов является задача о взаимном исключении, в которой доступен только один ресурс. | Распределение ресурсов относится к взаимодействию между процессами, включающему соперничество. Задача заключается в том, как разрешить конфликты, возникающие в случаях, когда несколько процессов пытаются использовать общие ресурсы. Или, иначе говоря, как распределить общие ресурсы по конкурирующим процессам. Специальным случаем общей задачи распределения ресурсов является ''задача о взаимном исключении'', в которой доступен только один ресурс. | ||
'''Задача о взаимном исключении''' | '''Задача о взаимном исключении''' | ||
Задача о взаимном исключении, впервые сформулированная Эдсгером Дейкстрой в 1965 году, обеспечивает взаимно исключающий доступ нескольких конкурирующих процессов к единственному общему ресурсу [6]. Эта задача актуальна для операционных систем, систем управления базами данных, параллельных суперкомпьютеров и компьютерных сетей, в которых необходимо разрешать конфликты, возникающие из-за попыток использования общих ресурсов несколькими процессами. Она имеет высокую важность, поскольку лежит в основе многих задач межпроцессной синхронизации. | |||
Формальное определение задачи выглядит следующим образом. Предполагается, что каждый процесс выдает последовательность команд в бесконечном цикле. Команды разделяются на четыре непрерывных участка кода: ''остаток'', ''вход'', ''критическая секция'' и ''выход''. Таким образом, структура решения для задачи взаимного исключения выглядит следующим образом: | |||
бесконечный цикл | '''бесконечный цикл''' | ||
код остатка; код входа; код критической секции; код выхода; конец цикла | |||
''код остатка;'' | |||
''код входа;'' | |||
''код критической секции;'' | |||
''код выхода;'' | |||
'''конец цикла''' | |||
правка