![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Программист при написании программы в общем случае обращается к памяти с помощью неупорядоченных символьных имен (отдельные переменные, например элементы массива, могут иметь частичную упорядоченность). Имена переменных и входных точек программных модулей составляют неупорядоченное пространство символьных имен.
Процессор работает с физической оперативной памятью, извлекая из нее команды и данные и помещая в нее результаты вычислений. Физическая память представляет собой упорядоченное множество пронумерованных ячеек, к каждой из которых можно обратиться, указав ее порядковый номер (адрес). Количество ячеек физической памяти ограничено и фиксировано.
При работе памяти для идентификации переменных и команд используются символьные имена, виртуальные и физические адреса.
Символьные имена присваивает программист при написании программы на алгоритмическом языке или ассемблере.
Виртуальные адреса вырабатывает транслятор, переводящий программу на машинный язык. Так как во время трансляции в общем случае не известно, в какое место оперативной памяти будет загружена программа, то транслятор присваивает переменным и командам виртуальные (условные) адреса, обычно считая по умолчанию, что программа будет размещена, начиная с нулевого адреса.
Физические адреса соответствуют номерам ячеек оперативной памяти, где в действительности расположены или будут расположены переменные и команды.
Системное программное обеспечение должно связать каждое указанное пользователем символьное имя с физическим адресом ячейки памяти, то есть осуществить отображение пространства имен на физическую память компьютера. В общем случае это отображение осуществляется в два этапа (рис. 5.1): система программирования переводит символьное имя в виртуальный адрес, который затем преобразуется операционной системой в физический адрес.
Рис. 5.1. Типы адресов
Совокупность виртуальных адресов процесса называется виртуальным адресным пространством. Каждый процесс имеет собственное виртуальное адресное пространство (рис. 5.2). Диапазон возможных адресов виртуального пространства у всех процессов одинаков. Максимальный размер виртуального адресного пространства ограничивается разрядностью адреса, присущей данной архитектуре компьютера, и, как правило, не совпадает с объемом физической памяти, имеющимся в компьютере.
Совпадение виртуальных адресов переменных и команд различных процессов не приводит к конфликтам, так как в том случае, когда эти переменные одновременно присутствуют в памяти, операционная система отображает их на разные физические адреса.
Переход от виртуальных адресов к физическим может осуществляться двумя способами.
1. Преобразование виртуальных адресов в физические делает специальная системная программа – перемещающий загрузчик. Перемещающий загрузчик на основании имеющихся у него исходных данных о начальном адресе физической памяти, в которую предстоит загружать программу, и информации, предоставленной транслятором об адресно-зависимых константах программы, выполняет загрузку программы, совмещая ее с заменой виртуальных адресов физическими.
2. Программа загружается в память в неизмененном виде в виртуальных адресах, при этом операционная система фиксирует смещение действительного расположения программного кода относительно виртуального адресного пространства. Во время выполнения программы при каждом обращении к оперативной памяти выполняется преобразование виртуального адреса в физический.
Второй способ является более гибким, он допускает перемещение программы во время ее выполнения, в то время как перемещающий загрузчик жестко привязывает программу к первоначально выделенному ей участку памяти.
В некоторых случаях (обычно в специализированных системах), когда заранее точно известно, в какой области оперативной памяти будет выполняться программа, транслятор выдает исполняемый код сразу в физических адресах (пунктирная линия на рис. 5.1).
Рис. 5.2. Виртуальные адресные пространства нескольких программ
Дата публикования: 2015-01-26; Прочитано: 621 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!