Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gosy_org_evm.docx
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
400 Кб
Скачать
☆
  1. Виртуальная память: понятие и концепции.

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

Поддержка механизмов виртуальной памяти реализуется специальными аппаратными и программными средствами. Аппаратные средства в современных компьютерах обычно представлены специальным блоком MMU – Memory Management Unit, входящим в состав центрального процессора (CPU). В отношении процессоров семейства Intel 80х86, Pentium этот блок впервые появился в процессоре Intel 80286 и был предназначен для реализации сегментированной виртуальной памяти. Начиная со следующей модели Intel 80386, была реализована аппаратная поддержка как сегментной, так и страничной организации памяти. При этом блок MMU был разделен на две относительно независимые части в виде SU – Segment Unit и PU – Page Unit.

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

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

Пересылка очередного блока из внешней памяти в основную инициируется в том случае, если при обращении к этому блоку со стороны CPU было обнаружено его отсутствие в основной памяти. Как правило, эта пересылка предваряется процедурой освобождения места в основной памяти для пересылаемого блока. С этой целью производится выбор блока-кандидата на удаление из основной памяти. В современных компьютерах для этой цели обычно используется стратегия LRU – Least Recently Used (наиболее давно использованный) или ее модификация. В соответствии с этой стратегией удалению подлежит тот блок, к которому наиболее давно не было обращения. В тех случаях, когда блок-кандидат на удаление за время его нахождения в основной памяти подвергался модификации (производились обращения по записи), требуется предварительная его пересылка из основной памяти во внешнюю для актуализации его копии во внешней памяти. Только после этого на его место пересылается новый блок.

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

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

Первое упоминание об организации прозрачных для пользователя пересылок между основной и внешней памятью появилось при разработке вычислительной машины Atlas в 1961 году.

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

Рис.1. Двухступенчатое преобразование логического адреса

в физический

Для процессоров Intel сегментное преобразование является обязательным, а страничное может быть включено с помощью установки специального бита PG (PaGing), находящегося в управляющем регистре CR0 (CR – Control Register): PG = 1 – страничное преобразование включено; PG = 0 – страничное преобразование выключено, линейный адрес используется как физический.

  1. Реализация сегментно-страничной виртуальной памяти в старших моделях процессоров семейства Intel 80x86, Pentium. Преобразования адресов (из логического в линейный и из линейного в физический) и средства их ускорения.

//это жопа, там так дохуя, пол-конспекта довгого по виртуальной памяти, проще прочитать. Схемы преобразования вот:

Селектор сегмента

Логический

адрес

+

+

*8

32

32

32

32

16

13

GDTR

32

Линейный

адрес

Рис.7. Схема преобразования логического адреса в линейный

с использованием GDT

Селектор сегмента

Рис.8. Схема преобразования логического адреса

в линейный с использованием LDT

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]