Нарушение условий взаимоисключения

Если в системе отсутствуют монопольные ресурсы, то тупика не будет

 

Нарушение условий ожидания дополнительных ресурсов

возможная стратегия:

каждый процесс должен запрашивать все требуемые ресурсы сразу. Если все ресурсы не предоставлены, то он не начинает работу

если процесс удерживает ресурс и получает отказ в выделении остальных, то он должен вернуть ранее захваченные ресурсы

 

Нарушение принципа о неперераспределяемости.

можно отобрать ресурс у процесса, не дожидаясь его окончания.

 

Нарушение условия кругового ожидания

Правило: чтобы каждый процесс в кокой-то промежуток времени мог использовать только один ресурс.

 

Родственные проблемы

Двухфазная локализация

 

_______ ресурсного типа

 

Простейшие схемы управления памятью

Задача управления памятью – менеджер памяти (часть ОС, отвечающая за управление памятью). Если процессы работают параллельно, значит, в памяти есть несколько разделов, занятых кодом.

Физическая организация памяти компьютера

Выделяют:

· основную память – массив пронумерованных байтов, номер есть адрес (модель памяти)

· вторичную память

Время доступа
Цена бита
Регистры процессора (регистровая память)

Кэш процессора
Оперативная память
Электронные диски
Магнитные диски
Магнитные ленты

 

Локальность

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

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

Логическая память

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

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

 
Стек процесса P2
 
Библиотека
 
Данные процесса P1
Код процесса P1
 
Данные процесса P2
 
Стек процесса P1
 
Стек процесса P2
 
ОС

 

Большинство современные ОС поддерживает сегментную организацию памяти. Фирма Intel поддерживает сегментацию аппаратно (обычно более эффективна). Адреса в исходных текстах обычно символические. Компилятор связывает символические адреса с перемещаемыми адресами (n-байт от начала модуля). Такой адрес, сгенерированный программой, называют логическим адресом (в системах с виртуальной памятью этот адрес называют виртуальным). Совокупность всех логических адресов называется логическим (виртуальным) адресным пространством.

Связывание адресов

Логическое и физическое адресные пространства ни по организации, ни по размеру не соответствуют друг другу => процессор и ОС д/б способны отобразить ссылки на адреса в коде программы в реальные физические адреса, соответствующие текущему положению программы в основной памяти. Такое отображение адресов называют трансляцией (привязкой адреса или связыванием адресов).

Связывание логического адреса с физическим д/б осуществлено до начала выполнения соответствующей команды или в момент его выполнения. Таким образом, привязка инструкции и данных к памяти м/б сделана в следующий момент:

· Этап компиляции – когда знаем куда загружать

· Этап загрузки – отсутствует информация о размещении программ на стадии компиляции, окончательное связывание откладывается до момента загрузки

· Этап выполнения – если процесс м/б перемещен во время выполнения из одной области памяти в другую, связывание откладывается до стадии выполнения