- •Определите понятие ресурса. Дайте классификацию ресурсов. Какие проблемы связаны с разделением ресурсов процессами?
- •По возможности повторного использования
- •Дайте понятие критической секции.
- •Сформулируйте свойства критической секции.
- •Каковы общие условие решения задачи взаимного исключения?
- •Опишите и сравните различные программные методы решение проблемы взаимного исключения (использование логических переменных, счетчиков, задержек при выполнении процессов).
- •Дайте понятие семафора.
- •Опишите семафорные примитивы для бинарных семафоров и семафоров со счетчиками.
- •Приведите примеры использования семафоров (для решения задачи взаимного исключения, синхронизации процессов, решения задачи поддержания отношения предшествования)
- •Дайте определение тупика.
- •Сформулируйте задачи, связанные с проблемой тупика, кратко охарактеризуйте подходы к решению.
- •Дайте формальное определение системы с использованием математической (графовой) модели.
- •Дайте формальное определение заблокированного процесса, процесса, находящегося в тупике.
Определите понятие ресурса. Дайте классификацию ресурсов. Какие проблемы связаны с разделением ресурсов процессами?
При рассмотрении операционных систем ресурс определяется как объект в составе вычислительной системы, обладающий свойством “полезности” (ре-сурс необходим его потребителям, в роли которых выступают процессы, за-прашивающие ресурсы для своего выполнения). Основной количественной ха-рактеристикой ресурса является его емкость (объем, количество единиц в ВС).
Пример: Если программы во время выполнения запрашивают услуги, предоставляемые другими программами, то обслуживающие запрос программы выступают в качестве ресурсов. Однако во время своего исполнения эти программы также становятся процессами, потребляющими ресурсы.
Основными критериями классификации являются:
по “реальности существования”;
по возможности расширения свойств (возможности виртуализации);
по структурному признаку;
по характеру использования (возможности повторного использования);
по допустимой схеме использования;
по “степени активности”;
по времени существования;
по “степени важности”;
по форме реализации.
“Реальность существования” отражает факт разделения ресурсов на физические (реальные) и виртуальные.
Возможность расширения свойств характеризует ресурс с точки зрения возможности построения на его основе какого-либо виртуального ресурса.
Структурный признак устанавливает наличие или отсутствие у ресурса некой структуры, определенной внутренней организации.
Ресурс является простым (или единичным), если не содержит составных элементов и рассматривается при распределении как единое целое, то есть он неделим.
Составной ресурс характеризуется определенной структурой, содержит в своем составе ряд однотипных элементов, обладающих, с точки зрения пользователя, одинаковыми характеристиками. Количество этих элементов – емкость ресурса или его объем.
Простой и составной ресурсы отличаются числом состояний. Простой ресурс может быть в двух состояниях: “занят”, если он выделен для использования какому-либо процессу, или “свободен” (ресурс не распределен никакому процессу). Состояние составного ресурса определяется наличием свободных и занятых единиц этого ресурса.
По возможности повторного использования
Потребляемые ресурсы после распределения и использования их процессами не возвращаются в систему, уничтожаются и не могут быть повторно использованы другими процессами.
Повторно используемые ресурсы после их распределения какому-либо процессу по его запросу используются этим процессом, а затем освобождаются им и возвращаются в систему, то есть восстанавливаются и могут быть повторно распределены другим процессам.
Примеры: Примерами повторно используемых ресурсов являются оперативная память и процессор (и все аппаратные ресурсы), файлы, из которых считывается информация и т.п.
Потребляемым ресурсом является, например, сообщение, передаваемое одним процессом другому.
по времени существования ресурсы также можно классифицировать: существуют временные и постоянные ресурсы.
Ресурсы различаются также схемами использования.
Параллельная схема предполагает параллельное (то есть одновременное) использование одного ресурса или одних и тех же единиц ресурса несколькими процессами.
Последовательная схема использования ресурса предполагает, что в отношении ресурса допустимо строго последовательное во времени выполнение цепочек действий “запрос-использование-освобождение” каждым процессом, потребляющим этот ресурс, то есть распределение ресурса процессу возможно только после его освобождения процессом, которому этот ресурс был выделен раньше.
Последовательно используемые ресурсы, разделяемые несколькими про-цессами, являются критическими, работа с ними требует организации взаимного исключения.
Примеры:
Примером параллельно используемого ресурса является база данных, которая используется только для чтения информации, но та же база данных может оказаться используемой строго последовательно, если процессы не только читают информацию, но и модифицируют ее. Распараллелить доступ к базе данных можно, используя специальные механизмы взаимного исключения.
По степени активности различают активные и пассивные ресурсы.
По степени важности различают главные и второстепенные ресурсы.
По форме реализации различают “твердые” и “мягкие” ресурсы.
Проблемы:
Проблема синхронизации
Проблема реализации взаимного исключения возникает при разделении данных несколькими процессами.(стр46)
Пример: «писатель-читатель»
Проблема тупика
Сформулируйте проблему взаимного исключения.
Последовательный процесс – это работа по выполнению программы, про-изводимая последовательным процессором. Если времена существования по-следовательных процессов при их исполнении хотя бы частично перекрывают-ся, такие процессы становятся “параллельными” и возникает проблема синхронизации использования устройств ВС, доступа к данным со стороны этих процессов. В этом случае процессы могут конкурировать за использование об-щих ресурсов (как аппаратных, так и информационных), выполняемые ими функции могут зависеть друг от друга и требовать определенной последова-тельности исполнения для реализации общей работы. Эта проблема становится особенно острой, если процессы являются взаимодействующими.
Проблема реализации взаимного исключения возникает при разделении данных несколькими процессами.
Рассмотрим пример. В ВС существует несколько процессов P1, P2, ... , Pn, каждый из которых увеличивает значение разделяемой (общей) переменной C. Таким образом, в каждой из выполняющихся программ должны быть операторы вида C := C + 1.
Причем для выполнения этого оператора процесс должен прочитать текущее значение переменной C (обозначим оператор чтения read(C)) и сохранить новое значение этой переменной после увеличения (обозначим операцию записи write(C)). Следовательно, увеличение значения счетчика C выполняется с помощью последовательности из трех (как минимум) операций: чтения текущего значения переменной, увеличения значения этой переменной на 1 и сохранения увеличенного значения:
read(C);
inc(C);
write(C).
Эта последовательность операций выполняется каждым из процессов в ВС, причем процессы выполняются независимо друг от друга, поэтому неизвестен заранее порядок, в котором они подойдут к выполнению этих действий. Следовательно, для любых двух процессов Pi и Pj возможна ситуация, когда указанные операции выполняются в них в следующем порядке: Порядок выполнения операций процессами |
||||
Процесс |
1 |
2 |
3 |
4 |
Pi |
read(C) |
inc(C) |
write(C) |
... |
Pj |
... |
read(C) |
inc(C) |
write(C) |
Таким образом, оба процесса увеличивают значение счетчика на 1, но изменения, которые внес первый процесс, “не замечаются” вторым процессом, и в результате значение увеличивается двумя процессами не на 2, как это должно быть, а на 1, то есть значение счетчика становится неверным в результате несогласованных действий, выполняемых двумя процессами.