Страничная организация виртуальной памяти

advertisement
23) 1)Страничная организация памяти. Преобразование виртуального адреса в
физический. Постраничная организация памяти. 2) Буфер быстрой переадресации
Страничная организация виртуальной памяти:
В большинстве современных операционных систем виртуальная память организуется с
помощью страничной адресации. Оперативная память делится на страницы: области
памяти фиксированной длины (например, 4096 байт), которые являются минимальной
единицей выделяемой памяти (то есть даже запрос на 1 байт от приложения приведёт к
выделению ему страницы памяти). Процесс обращается к памяти с помощью адреса
виртуальной памяти, который содержит в себе номер страницы и смещение внутри
страницы. Процессор преобразует номер виртуальной страницы в адрес соответствующей
ей физической страницы при помощи буфера ассоциативной трансляции. Если ему не
удалось это сделать, то требуется обращение к таблице страниц (так называемый Page
Walk), что может сделать либо сам процессор, либо операционная система (в зависимости
от архитектуры). Если страница выгружена из оперативной памяти, то операционная
система подкачивает страницу с жёсткого диска. При запросе на выделение памяти
операционная система может «сбросить» на жёсткий диск страницы, к которым давно не
было обращений. Критические данные (например, код запущенных и работающих
программ, код и память ядра системы) обычно находятся в оперативной памяти
(исключения существуют, однако они не касаются тех частей, которые отвечают за
обработку аппаратных прерываний, работу с таблицей страниц и использование файла
подкачки).
Преобразование виртуального адреса в физический
Виртуальные адреса вырабатывает транслятор, переводящий программу на машинный
язык. Так как во время трансляции в общем случае не известно, в какое место
оперативной памяти будет загружена программа, то транслятор присваивает переменным
и командам виртуальные (условные) адреса, обычно считая по умолчанию, что программа
будет размещена, начиная с нулевого адреса. Совокупность виртуальных адресов
процесса называется виртуальным адресным пространством. Каждый процесс имеет
собственное виртуальное адресное пространство. Максимальный размер виртуального
адресного пространства ограничивается разрядностью адреса, присущей данной
архитектуре компьютера, и, как правило, не совпадает с объемом физической памяти,
имеющимся в компьютере.
Физические адреса соответствуют номерам ячеек оперативной памяти, где в
действительности расположены или будут расположены переменные и команды. Переход
от виртуальных адресов к физическим может осуществляться двумя способами. В первом
случае замену виртуальных адресов на физические делает специальная системная
программа - перемещающий загрузчик. Перемещающий загрузчик на основании
имеющихся у него исходных данных о начальном адресе физической памяти, в которую
предстоит загружать программу, и информации, предоставленной транслятором об
адресно-зависимых константах программы, выполняет загрузку программы, совмещая ее с
заменой виртуальных адресов физическими.
Второй способ заключается в том, что программа загружается в память в неизмененном
виде в виртуальных адресах, при этом операционная система фиксирует смещение
действительного расположения программного кода относительно виртуального адресного
пространства. Во время выполнения программы при каждом обращении к оперативной
памяти выполняется преобразование виртуального адреса в физический. Второй способ
является более гибким, он допускает перемещение программы во время ее выполнения, в
то время как перемещающий загрузчик жестко привязывает программу к первоначально
выделенному ей участку памяти. Вместе с тем использование перемещающего загрузчика
уменьшает накладные расходы, так как преобразование каждого виртуального адреса
происходит только один раз во время загрузки, а во втором случае - каждый раз при
обращении по данному адресу.
В некоторых случаях (обычно в специализированных системах), когда заранее точно
известно, в какой области оперативной памяти будет выполняться программа, транслятор
выдает исполняемый код сразу в физических адресах.
Постраничная организация памяти
2) Буфер быстрой переадресации
Буфер быстрой переадресации представляет собой быструю память, построенную по
ассоциативному признаку. Объем этой памяти зависит от вычислительной мощности
ЭВМ.
В процессе переадресации анализируются биты доступности в таблицах сегментов и
страниц. Установка в 1 бита доступности таблицы сегментов означает недоступность
сегмента для текущей задачи и используется для защиты памяти различных
пользователей. Установка в 1 бита доступности таблицы страниц означает, что страница
недоступна и требуется ее загрузка из страничного набора данных.
При обращении к странице, отсутствующей в реальной памяти, возникает прерывание
(бит доступности в строке таблицы страниц установлен в 1). Это программное прерывание
обрабатывается супервизором страниц, организующим в данном случае страничный
обмен, в результате которого по определенному алгоритму вытесняется одна из страниц
реальной памяти и на ее место загружается требуемая страница.
В результате обработки прерывания по отсутствию страницы требуемая страница
загружается из виртуальной памяти в реальную. При этом бит доступности страницы
устанавливается в 0. Выполнение прерванной программы продолжается с повторения
прерванной команды.
Download