Инструменты пользователя

Инструменты сайта


examination:computer_science:question29

Вопрос №29 Размещение информации в основной памяти ЭВМ. Логическая адресация памяти.


Сегментная адресация памяти — схема адресации памяти компьютера.

Архитектура x86 позволяет использовать сегментную (логическую) адресацию памяти. При этом адрес конкретной ячейки памяти делится на две части: сегмент и смещение.

Сегментом называется условно выделенная область адресного пространства определённого размера.

Базой сегмента называется линейный адрес (адрес относительно всего объёма памяти), который указывает на начало сегмента в адресном пространстве.

Сегментный (или логический) адрес соответствует линейному адресу (База сегмента)+(Смещение).

Селектором называется число (в x86 — 14-битное), однозначно определяющее сегмент. Селектор загружается в сегментные регистры.

Сегментная адресация в реальном режиме

С появлением первых версий мультизадачности на 286-х процессорах перед разработчиками ПО встала проблема. Оперативной памяти мало для всех выполняющихся программ! Более того, не было четкого механизма разделения памяти программ - большинство пользовалось общими областями памяти, куда затем любая недружелюбная программа могла записать всё что угодно, испортив данные другой программы. Это давало широкое поле действия для вирусов и прочих вредоносных программ. Нужно было, во-первых, обеспечить полную изоляцию процессов друг от друга, во-вторых, механизмы «подкачки» - сброса неиспользуемых областей памяти на диск, за счет чего освобождалась так необходимая оперативная память. Всё это привело к появлению механизма страничной трансляции.


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

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


Говоря простым языком

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

examination/computer_science/question29.txt · Последние изменения: 2014/01/15 12:15 (внешнее изменение)