Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все ответы.doc
Скачиваний:
21
Добавлен:
09.09.2019
Размер:
3.79 Mб
Скачать

12. Взаимоболокировка

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

Взаимоблокировки или тупиковые ситуации формально можно определить так:

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

В большинстве случаев событием, которого ждет каждый процесс, является возврат какого-либо ресурса, в данный момент занятого другим участником груп­пы. Другими словами, каждый участник в группе процессов, зашедших в тупик, ждет доступа к ресурсу, принадлежащему заблокированному процессу. Ни один из процессов не может работать, пи один из них не может освободить какой-либо ресурс и ни один из них не может возобновиться. Количество процессов и количе­ство и вид ресурсов, имеющихся и запрашиваемых, здесь не важны. Результат ос­тается тем же самым для любого вида ресурсов, аппаратных и программных.

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

Сюда также можно включить вопросы: 57 – 63

13. Управление памятью.

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

Более изощренные системы позволяют одновременно находиться в памяти нескольким программам. Для того, чтобы они не мешали друг другу и операционной системе, необходим некий защитный механизм. Хотя этот механизм располагается в аппаратуре, он управляется операционной системой.

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

Однако на многих компьютерах адресация 32- или 64-разрядная, что дает для пространства адресов 2^32 и 2^64 байта соответственно. Что произойдет, если адресное пространство процесса окажется больше, чем оперативная память компьютера, и процесс захочет использовать его целиком? На первых компьютерах подобным процессам просто не везло. В наши дни существует метод, называемый виртуальной памятью, при котором операционная система держит часть адресов в оперативной памяти, а часть на диске, и меняет их местами при необходимости.

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

Ввод-вывод данных.

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

Каждая система имеет свою подсистему ввода-вывода для управления устройствами ввода-вывода. Некоторые из программ ввода-вывода являются независимыми от устройств, то есть их можно применить ко многим или ко всем устройствам ввода-вывода. Другая часть программного обеспечения ввода-вывода, в которую входят драйверы устройств, предназначена для определенных устройств ввода-вывода.