
- •1. Виды ресурсов и возможности их разделения
- •2. Процессы и потоки.
- •3. . Память и отображения, виртуальное адресное пространство
- •4. Сегментная, страничная и сегментно-страничная организация памяти
- •5. Основные системные таблицы ввода-вывода
- •6. Файловая система fat
- •7. Понятие тупиковой ситуации при выполнении параллельных вычислительных процессов
- •8. Методы борьбы с тупиками
- •9. Открытость и безопасность операционных систем.
7. Понятие тупиковой ситуации при выполнении параллельных вычислительных процессов
? При параллельном исполнении процессов могут возникать тупиковые ситуации, когда два или более процесса блокируют друг друга, вынуждая ожидать наступления события, связанного с освобождением ресурса.
? Самый простой случай: каждый из двух процессов ожидает ресурс, занятый другим процессом, ни один из процессов не может продолжить исполнение и освободить ресурс, необходимый другому процессу.
? Эта ситуация называется тупиком, дедлоком, или клинчем.
Ресурсы системы разделяют на два класса:
• повторно используемые (Reusable Resource, RR), или системные (System Resource, SR), ресурсы;
• потребляемые, или расходуемые, ресурсы (Consumable Resource, CR).
? Системные ресурсы (SR) – конечное множество идентичных единиц некоторого вида ресурсов, обладающих свойствами:
• число единиц ресурса в системе неизменно;
• каждая единица ресурса либо доступна, либо выделена одному и только одному процессу;
• процесс может освободить единицу ресурса (сделать ее доступной), только если он ранее получил эту единицу.
? Особенности расходуемых ресурсов (CR):
• число доступных единиц некоторого ресурса типа CR изменяется по мере того, как выполняющимися процессами они расходуются (приобретаются) и освобождаются (производятся);
• процесс «потребитель» уменьшает число единиц ресурса, сначала запрашивая и затем приобретая (потребляя) одну или более единиц.
? Для исследования параллельных процессов и проблемы тупиков было разработано несколько моделей. Одна из них – модель повторно используемых ресурсов Холта. Согласно этой модели система представляется как набор (множество) процессов и набор ресурсов, каждый из ресурсов состоит из фиксированного числа единиц. Любой процесс может изменять состояние системы путем выдачи запроса на получение или освобождение единицы ресурса.
? В графической форме процессы и ресурсы представляются квадратами и кружками соответственно. Каждый кружок содержит некоторое количество маркеров (фишек) в соответствии с существующим количеством единиц этого ресурса.
? Дуга из «процесса» на «ресурс» означает запрос одной единицы этого ресурса. Дуга из «ресурса» на «процесс» – выделение ресурса процессу.
? Т.к. каждая единица ресурса типа SR может быть выделена одновременно не более чем одному процессу, то число дуг из ресурса к различным процессам не может превышать общего числа единиц этого ресурса. Такая модель называется графом повторно используемых ресурсов.
? Удовлетворение запроса Пр1 приведет к тупиковой ситуации: Пр1 не сможет продолжиться до тех пор, пока Пр2 не освободит единицу ресурса R1, а процесс Пр2 не сможет продолжиться до тех пор, пока Пр1 не освободит единицу R2.
? Пример тупика на ресурсах типа CR ? Пусть имеется три процесса Пр1, Пр2 и ПрЗ, которые вырабатывают сообщения Ml, M2 и МЗ, соответственно. Эти сообщения представляют собой ресурсы типа CR. Пусть процесс Пр1 является потребителем сообщения МЗ, процесс Пр2 должен получить сообщение Ml, а ПрЗ – сообщение М2 от процесса Пр2. Таким образом, каждый из этих трех процессов является и поставщиком, и потребителем одновременно, и вместе они образуют кольцевую систему (рис. 7.2) передачи сообщений через почтовые ящики (ПЯ).
? Если связь с помощью этих сообщений со стороны каждого процесса устанавливается программным кодом в порядке, когда они сначала посылают сообщение следующему процессу, а затем ожидают от предыдущего, то никаких проблем не возникает. Но перестановка этих двух процедур (сначала – ожидают, затем – посылают свое) в каждом из процессов вызывает тупик.