Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ ОС ЭКЗАМЕН.docx.doc
Скачиваний:
2
Добавлен:
16.09.2019
Размер:
185.86 Кб
Скачать

26) Сравнение сегментной и страничной адресации

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

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

Страничная адресация

Суть страничной адресации в том, что все адресное пространство, предоставляемое процессором (на 32-битных процессорах это, как правило, 4 гигабайта — 232), разбивается на отрезки равной длины (называемые страницами). Таблица страниц устанавливает соответствие между виртуальным и реальным адресами страницы. Номер строки таблицы определяет виртуальный адрес, а содержимое строки — соответствующий физический адрес. Достаточно поменять содержимое заданной строки, и виртуальному адресу будет соответствовать другой физический адрес. Именно страницы являются единицей выделения — освобождения памяти. Этот механизм также применяется для использования общих данных и программ разными процессами. Так, в случае использования DLL они хранятся в памяти в одном экземпляре, но в разных процессах им соответствуют разные логические адреса (разные таблицы страниц). Особенности использования страничной адресации в современных процессорах рассмотрены ниже.

Как и сегментация, страничная организация памяти связана с преобразованием виртуального адреса (в данном случае линейного) в физический. В страничном преобразовании базовым объектом памяти является блок фиксированного размера, называемый страницей (page). Размер страницы - 4 Кбайт.

Отличия:

Недостатком данного метода распределения памяти является фрагментация на уровне сегментов и более медленное по сравнению со страничной организацией преобразование адреса.

Эта форма организации виртуальной памяти во многом похожа на сегментную. Основные различия заключаются в том, что все страницы, в отличие от сегментов, имеют одинаковые размеры, а разбиение виртуального адресного пространства процесса на страницы выполняется системой автоматически. Типичный размер страницы – несколько килобайт. Для процессоров Pentium, например, страница равна 4 Кб.

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

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

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