Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы операционки.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
58.03 Кб
Скачать

Критические ресурсы. Конфликты между процессами и методы их решения.

Ресурсы делятся на:

  1. Монопольные (не может быть выдан в использование сразу нескольким процессам, а только одному в силу своей природы. Примеры: принтер, джойстик и т.д. Спулинг-способ предоставления принтера нескольким процессам. Смысл спулинга в том чтобы принимать заявки на выполнение печати файлов, идущие со стороны разных процессов с последующим сохранением таких заявок в очереди (структуре данных), для которой записанная в нее информация считывается по принципу «первый пришел-первый вышел» (FIFO))

  2. Разделяемые (диск, дисплей)

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

Предоставление монопольного ресурса некоторому процессу предполагает выполнение некоторых административных действий со стороны ОС, при этом сами такие административные действия должны выполняться не делимым образом, иными словами, их нельзя прерывать. В противном случае возникают ситуации, которые называют «гонками процессов». Смысл гонок состоит в том, что 2 или более процессов выставляют запрос на получение некоторого монопольного ресурса и в зависимости от соотношения скоростей выполнения этих процессов, затребованный ресурс выделяется самому быстрому, или ресурс будет выделен первому процессу, а ОС зарегистрирует его в использовании второго процесса.

Numberfreeseed

принтер

Спулер печати

Таблица файлов

Поскольку такие операции выполняются каждым процессов, то возможна коллизия (столкновение) в их выполнении со стороны нескольких процессов.

Процесс А считывает значение Number.., помещает название в таблицу на которую указывает N, но на этом его квант заканчивается.

Процесс В выполняя свой квант, так же считывает N и в ту же позицию записывает имя файла FB, а далее выполняет 3 операцию инкремент переменной N. В результате процесс А так и не получит распечатку своего файла (его заявка будет потеряна).

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

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

Метод охраняемой переменной. Смысл состоит в том что, для каждого критического ресурса есть переменная, которая фиксирует его состояние. Такую переменную можно сопоставить с каждым ресурсом.

Недостатком данного решения является постоянное опрашивание GCR со стороны процесса, до тех пор, пока ее значение не станет единичным. Лучшим решением было бы отправить процесс спать

Выделение памяти динамическими разделами

Применение фиксированных по размеру разделов приводит к тому, что появляются свободные от использования разделы памяти. Они свободны, поскольку они имеют недостаточный размер для загрузки крупных по размеру программ. С другой стороны, суммарный размер нескольких таких смежных разделов подошел для загрузки и выполнения такого рода программ. Таким образом, недостаток состоит в том, что необходима организация управления разделами, размеры которых динамически изменяются. Это означает, что ОС должна отслеживать для каждого раздела его текущий размер. При этом предполагается пользование единой очереди задач, готовых для выполнения. В зависимости от запроса на размер необходимой памяти, ОС загружает готовую к выполнению задачу в тот раздел памяти, размер которого не меньше требуемого. При выделении свободного раздела памяти, размер которого не менее требуемого, может быть использована одна из двух стратегий: стратегия выделения первого подходящего «First Fit», стратегия выделения наилучшего подходящего «Best fit».

Стратегия первый подходящий состоит в том, что ОС из всех свободных разделов выбирает первый раздел, размер которого не меньше чем требуется, оставшаяся часть свободного размера остается в списке свободных разделов и в дальнейшем может использоваться для выделения памяти подобранных задач.

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

Дальнейшие исследования показали, что стратегия первого подходящего является оптимальной.

Явление фрагментации.

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

  1. Операция слияния смежных свободных областей памяти.

  2. Выделять свободные области памяти таким образом, что бы остатки свободной памяти не оставались слишком маленькими.

  3. Использование специальных алгоритмов.

  4. Метод близнецов. В соответствии с ним свободные разделы определяются как степени двойки.

  5. Стек и куча. Часто в управлении памяти используется стековая организация и управление памяти, которая называется кучей. Стек это выделение необходимой области свободной памяти с последующим ее освобождением по принципу, последняя взятая область отдается первой. Это очень распространенная организация хранения. Например принцип магазина, подносов в столовке. Преимуществом этого способа является его простота, поэтому выделение памяти полностью автоматизировано и программируется компилятором или соответственно ОС. Механизм кучи предполагает, что выполняются запросы на выделение памяти нужного размера. Логика использования выданной памяти системе управления памятью неизвестна, однако предполагается, что ранее выданная память в конце концов будет отдана обратно. После чего она будет повторно использована.

В некоторых ОС вводится задача «Сборщик мусора». Он отлеживает использование памяти и осуществляет автоматическую утилизацию более ненужной памяти.