Логічна організація віртуальної пам’яті

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

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

Способ разрывного размещения задач в памяти при котором все фрагменты задачи одинакового размера кратного степени двойки называется страничным, а фрагменты страницами. В этом случае память разбивается на физические страницы (кадры, фреймы). А программа разбивается на виртуальные страницы. Часть виртуальных страниц размещается в ОЗУ, а часть во внешней памяти. Место на жестком диске, где размещаются виртуальные страницы называют файлом подкачки или страничным файлом (SWAP-файл).

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

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

6

Недостатки:

1) Накладные расходы, т.е. таблицы страниц нужно размещать в памяти и их нужно обрабатывать.

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

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

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

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

Виртуальная память в МП 386:

При организации виртуальной памяти используется три вида адресов:

1. Логический адрес ЛА ∈ ВАП.

2. Физический адрес ФА ∈ ФАП.

3. Линейный адрес – представляет собой объединение базового адреса сегмента и смещения в пределах сегмента.

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

7

Основные поля сегмента размещены в различных частях дескриптора: 32-битная база сегмента размещена в трех частях и определяет его место внутри 4-Гбайтного линейного адресного пространства, 20-битная граница сегмента размещена в двух частях и определяет его длину, остальные биты дескриптора образуют поле атрибутов. Длина сегмента, в зависимости от бита дробности (G), задается либо в байтах, либо в страницах:

1. 0, байт;

2. 1, страница (С = 4Кб) 220 * 215 = 232 (4Гб).

Бит D задает тип данных, размещенных в сегменте:

1. D = 0 – 16-битные данные,

2. D = 1 – 32-битные данные.

AVL – бит, предоставляемый в распоряжение пользователя (available). Бит P – бит присутствия: 0 – на диске, 1 – в оперативной памяти Биты DPL – уровень привилегий дескриптора (Descriptor Privilege Level), обеспечивающий защиту доступа. При доступе к сегменту запрашиваемый уровень привилегий RPL или текущий уровень привилегий CPL (соответствует уровню привилегий дескриптора кода выполняемой сейчас программы) должны быть больше DPL (в логическом смысле; для сравнения их числовых значений отношение должно быть меньше). Бит S – бит режима сегмента: пользовательский или системный (User / Supervisor). Биты типа говорят, является сегмент программой или данными и определяют режим доступа. Бит А – бит обращения к сегменту, устанавливается при обращении к сегменту и через некоторое время сбрасывается операционной системой (обеспечивает дисциплины замещения сегментов).