Если в системе отсутствуют монопольные ресурсы, то тупика не будет
Нарушение условий ожидания дополнительных ресурсов
возможная стратегия:
каждый процесс должен запрашивать все требуемые ресурсы сразу. Если все ресурсы не предоставлены, то он не начинает работу
если процесс удерживает ресурс и получает отказ в выделении остальных, то он должен вернуть ранее захваченные ресурсы
Нарушение принципа о неперераспределяемости.
можно отобрать ресурс у процесса, не дожидаясь его окончания.
Нарушение условия кругового ожидания
Правило: чтобы каждый процесс в кокой-то промежуток времени мог использовать только один ресурс.
Родственные проблемы
Двухфазная локализация
_______ ресурсного типа
Простейшие схемы управления памятью
Задача управления памятью – менеджер памяти (часть ОС, отвечающая за управление памятью). Если процессы работают параллельно, значит, в памяти есть несколько разделов, занятых кодом.
Физическая организация памяти компьютера
Выделяют:
· основную память – массив пронумерованных байтов, номер есть адрес (модель памяти)
· вторичную память
| ||
Кэш процессора | ||
Оперативная память | ||
Электронные диски | ||
Магнитные диски | ||
Магнитные ленты |
Локальность
Известно, что по мере снижения скорости доступа к памяти снижается и частота обращения к ней. Свойство реальных программ в течение ограниченного времени работать с небольшим набором адресов памяти называется локальностью (принцип локальности или принцип локализации обращений). При использовании принципа локальности реальное время доступа к памяти определяется временем доступа к верхним уровням.
В некоторых случаях для организации вычислений используются овирлейные структуры – это означает, что программа разбивается на части и каждая из частей последовательно загружается в оперативную память.
Логическая память
Большинство программ – это набор модулей независимых друг от друга (слабо зависимых). В общем случае модули одной программы размещаются в разных областях памяти зачастую не смежных друг с другом – лучший способ.
Область данных, в которой размещены фрагменты программы, называется сегментом. Внутри сегмента поддерживается линейная адресация. Сегмент может содержать отдельную функцию, большой объем данных. Отдельные участки памяти, хранящие совместно используемую информацию, которую ОС отображает в память нескольких процессов, и называются сегментами. При использовании сегментов есть возможность контролировать характер работ с конкретным сегментом, используя атрибуты.
Стек процесса P2 |
Библиотека |
Данные процесса P1 |
Код процесса P1 |
Данные процесса P2 |
Стек процесса P1 |
Стек процесса P2 |
ОС |
Большинство современные ОС поддерживает сегментную организацию памяти. Фирма Intel поддерживает сегментацию аппаратно (обычно более эффективна). Адреса в исходных текстах обычно символические. Компилятор связывает символические адреса с перемещаемыми адресами (n-байт от начала модуля). Такой адрес, сгенерированный программой, называют логическим адресом (в системах с виртуальной памятью этот адрес называют виртуальным). Совокупность всех логических адресов называется логическим (виртуальным) адресным пространством.
Связывание адресов
Логическое и физическое адресные пространства ни по организации, ни по размеру не соответствуют друг другу => процессор и ОС д/б способны отобразить ссылки на адреса в коде программы в реальные физические адреса, соответствующие текущему положению программы в основной памяти. Такое отображение адресов называют трансляцией (привязкой адреса или связыванием адресов).
Связывание логического адреса с физическим д/б осуществлено до начала выполнения соответствующей команды или в момент его выполнения. Таким образом, привязка инструкции и данных к памяти м/б сделана в следующий момент:
· Этап компиляции – когда знаем куда загружать
· Этап загрузки – отсутствует информация о размещении программ на стадии компиляции, окончательное связывание откладывается до момента загрузки
· Этап выполнения – если процесс м/б перемещен во время выполнения из одной области памяти в другую, связывание откладывается до стадии выполнения