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

И страничная организация, и сегментация имеют свои достоинства.

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

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

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

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

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

Запись таблицы сегментов содержит значение дли­ны сегмента, а также поле с начальным адресом сегмента, которое теперь указывает на таблицу страниц. Запись таблицы страниц — по сути та же, что и использованная в компьютере с "чистой" страничной организацией. При наличии страницы в физической оперативной памяти (на что, указывает бит присутствия) ее номер отображается в номер соответствующего кадра; бит модификации указывает, требуется ли перезапись страницы на диск при ее выгрузке из физической оперативной памяти. Как и ранее, могут использоваться и другие управляющие разряды

Контрольные вопросы

1. Почему возникла необходимость введения абстракции виртуальная память?

2. Чем удобна абстракции виртуальная памяти для программиста?

3. Чем ограничивается размер виртуальной памяти?

4. Что такое виртуальный адрес?

5. Что такое физический адрес?

6. Что такое страничная организация памяти?

7. Какими соображениями руководствуются при выборе размера страницы?

8. Как преобразуется виртуальный адрес в физический адрес при страничной организации памяти?

9. Что такое сегментная организация памяти?

10. Какие преимущества дает использование сегментации по сравнению со страничной организацией памяти?

11. Как преобразуется виртуальный адрес в физический адрес при сегментной организации памяти?

12. Назовите основные особенности сегментно-страничной организации памяти.

13. Как преобразуется виртуальный адрес в физический адрес при сегментно-страничной организации памяти?

14. Что такое фрагментация оперативной памяти?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: