Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Память и отображения, понятие виртуального адресного пространства



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

Адресное пространство процесса.

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

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

Машинные команды программы генерируются трансляторами, которые не знают, в какое место ОП будет загружен модуль и поэтому должны следовать определенным соглашениям.

Отображение кода программы на физическую оперативную память.

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

Системное программное обеспечение (в частности, транслятор) должно поставить в соответствие каждому символьному имени программы физическую ячейку оперативной памяти, то есть выполнить отображение пространства имен на физическую память компьютера. Это отображение может происходить в один или два этапа. Отображение происходит за один этап, если система программирования генерирует программу, в которой все двоичные адреса таковы, что программа может исполняться только тогда, когда ее виртуальные адреса будут точно соответствовать физическим адресам. Такая программа будет размещена по фиксированным адресам физической (оперативной) памяти. В данном случае можно говорить о статическом преобразовании адресов.

7.2 Статическое и динамическое преобразование адресов

Статическое преобразование адресов.

Транслятор генерирует код для каждого модуля для загрузки его по адресу 0. ОС сообщает загрузчику базовый адрес, по которому нужно поместить данный модуль. Загрузчик корректирует все относительные адреса в модуле, преобразуя их в реальные физические адреса. Эта процедура называется статическим преобразованием адресов. Особенность данного способа преобразования адресов: код или данные по этим адресам нельзя перемещать по памяти без повторной настройки.

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

Динамическое преобразование адресов.

Механизм динамического преобразования адресов действует во время выполнения программы и реализуется современными операционными системами. Динамическое отображение виртуального адресного пространства программы в физическую память реализуется аппаратно, так как происходит настройка при каждом обращении к ОП. Физический адрес начала модуля (база) можно хранить в некотором регистре процессора и адрес в команде хранить относительно этой базы. Простейшее программно – аппаратное обеспечение для динамической настройки адресов будет состоять из единственного регистра базы и диспетчера памяти, осуществляющего его загрузку при перемещении модуля по памяти.

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


Поделиться:



Последнее изменение этой страницы: 2019-03-22; Просмотров: 337; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.014 с.)
Главная | Случайная страница | Обратная связь