Физическая и логическая память. Виртуальное (логическое) и физическое адресное пространство
При изучении функций подсистемы управления памятью используются понятия физической памяти и виртуальной памяти или логической памяти.
Физическая память является аппаратным ресурсом компьютера. В ЭВМ существует два уровня физической памяти, которые различаются используемой запоминающей средой:
1. Оперативная память;
2. Внешняя память.
Оперативная память в настоящее время создается на основе полупроводниковых технологий, представляется в виде нескольких модулей БИС памяти, устанавливаемых на системной плате компьютера. Запоминающая среда этой памяти является энергозависимой. Память характеризуется высокой скоростью доступа и объемом в несколько ГБ.
Внешняя память в настоящее время является дисковой магнитной памятью. Запоминающей средой является магнитная поверхность диска. Память характеризуется значительно большей емкостью по сравнению с ОП и большим временем доступа.
Внешняя память используется для расширения возможностей физической оперативной памяти, что позволяет реализовать режим управления памятью ЭВМ, который называется виртуальной памятью. В этом случае часть программ и данных выполняющихся процессов хранится в ОП, а другая часть – во внешней, точнее, специально создаваемом в ней файле ВП.
Структуру ФП можно представить следующим образом:
Множество адресов физической памяти образует ФАП процесса.
Другим видом памяти, с которым связано выполнение процессов, является виртуальная (логическая) память. Она представляет собой память, которая рассматривается на уровне понятий или представлений пользователя или программиста, и отражает абстрактную структуру памяти, которая напрямую не связана с физической памятью.
С точки зрения пользователя, виртуальная память рассматривается либо как непрерывная память, состоящая из множества элементов, в которых хранятся данные или коды программ, либо как структурированная, то есть разделенная на несколько участков, память.
Эти части могут иметь либо одинаковый размер в пределах всей области ВП, либо меняющийся в зависимости от информации, хранящейся в каждом участке. Любой элемент информации, то есть элемент данных или команда программы в пределах виртуальной памяти имеет определенное положение, которое задается адресом элемента. Этот адрес называется виртуальным (логическим) адресом.
Множество всех виртуальных адресов образует ВАП процесса. ВАП создается по следующей схеме:
Можно отметить, что исходной информацией для создания ВАП является текст программы, в котором программист задает имена переменных и структур данных. Можно считать, что на этом этапе текст программы определяет пространство символических имен переменных и структур данных.
На этапе трансляции и компоновки имена преобразуются в логические адреса элементов данных программы. К ним добавляются адреса программных кодов, и полное множество всех этих адресов образует ВАП.
Другим способом получения логических адресов является операция выделения области памяти с помощью соответствующих системных функций. Образ программы, полученный после компиляции и компоновки, образует исполняемую программу, которая полностью или частично загружается в физическую память, и начинает выполняться в процессоре.
В ходе выполнения, процессор генерирует логические адреса, которые принадлежат ВАП процесса. Каждый элемент ВАП, в конечном счете, должен быть представлен в физической памяти компьютера. Для этого, ОС, а точнее – система управления памятью, устанавливает соответствие между представлением элементов данных и программ в ВАП и их положением в ФАП. Задача установления такого соответствия называется связыванием логических (виртуальных) и физических адресов, или, иначе, преобразованием логических адресов в физические адреса, или отображением ВАП на ФАП.
В ОС, в частности, в Windows, эта операция осуществляется на этапе выполнения программы в момент выработки логического адреса в процессоре. Подсистема управления памятью отображает этот адрес на физическую память, то есть находит то значение физического адреса (ФА), которое соответствует выработанному логическому (виртуальному) адресу. Для отображения используются аппаратные и программные средства ЭВМ.
Диапазон адресов ВАП, то есть интервал между наименьшим и наибольшим адресами, для всех процессов на компьютере известной аппаратной структуры, является одним и тем же. Размер этого диапазона определяется возможностями системы адресации данных и команд процессора, и в частности, разрядностью шины адреса процессора.
Это обстоятельство учитывается в трансляторах систем программирования, которые генерируют логические адреса именно в этом диапазоне. Каждый процесс, выполняющийся в мультипрограммном режиме, получает в свое распоряжение собственное ВАП, в котором транслятор назначает свои логические адреса переменным или программным кодам.
На этапе выполнения, элементы программ различных процессов после отображения ВАП на ФАП получают различные, то есть отличающиеся, физические адреса. Возможное совпадение логических адресов переменных или команд различных процессов не приводит к каким-либо конфликтам, поскольку в ФАП компьютера они занимают различные участки.
Адреса в ФАП не равны, поскольку отображение осуществляется на свободные участки памяти.