Функции системы управления памятью

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

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

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

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

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

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

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

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

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

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

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

При использовании памяти ОС должна выполнять следующие функции:

1. Отображать адрес пространства процесса (логический адрес) на конкретную область оперативной памяти

2. Распределение памяти между конкурирующими процессами

3. Контроль доступа к адресным пространствам процессора

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

5. Учет свободной и занятой памяти


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: