На производительность системы со страничной организацией
памяти
влияют
временные затраты,
связанные с
обработкой
страничных прерываний и преобразованием виртуального адреса в
физический. При часто возникающих страничных прерываниях
система может тратить большую часть времени впустую, на свопинг
страниц.
Чтобы
уменьшить
частоту
страничных
прерываний,
следовало бы увеличивать размер страницы. Кроме того, увеличение
размера страницы уменьшает размер таблицы страниц, а значит
уменьшает затраты памяти. С другой стороны, если страница велика,
значит велика и фиктивная область в последней виртуальной странице
каждой программы. В среднем на каждой программе теряется
половина объема страницы, что в сумме при большой странице может
составить
существенную
величину.
Время
преобразования
виртуального
адреса
в
физический
в
значительной
степени
определяется временем доступа к таблице страниц. В связи с этим
таблицу страниц стремятся размещать в «быстрых» запоминающих
устройствах. Это может быть, например, набор специальных
регистров или память, использующая для уменьшения времени
доступа ассоциативный поиск и кэширование данных.
Страничное распределение памяти может быть реализовано в
упрощенном варианте, без выгрузки страниц на диск. В этом случае
все виртуальные страницы всех процессов постоянно находятся в
оперативной памяти. Такой вариант страничной организации хотя и
не предоставляет пользователю виртуальной памяти, но почти
исключает фрагментацию за счет того, что программа может
загружаться в несмежные области, а также того, что при загрузке
виртуальных страниц никогда не образуется остатков.
5.7 Сегментное распределение
При страничной организации виртуальное адресное пространство
процесса делится механически на равные части. Это не позволяет
дифференцировать способы доступа к разным частям программы
(сегментам), а это свойство часто бывает очень полезным. Например,
можно запретить обращаться с операциями записи и чтения в кодовый
сегмент программы, а для сегмента данных разрешить только чтение.
Кроме того, разбиение программы на «осмысленные» части делает
принципиально возможным разделение одного сегмента несколькими
процессами. Например, если два процесса используют одну и ту же
математическую подпрограмму, то в оперативную память может быть
загружена только одна копия этой подпрограммы.
45
Рассмотрим, каким образом сегментное распределение памяти
реализует эти возможности (рисунок 16). Виртуальное адресное
пространство процесса делится на сегменты, размер которых
определяется
программистом
с
учетом
смыслового
значения
содержащейся в них информации. Отдельный сегмент может
представлять собой подпрограмму, массив данных и т.п. Иногда
сегментация программы выполняется по умолчанию компилятором.
При
загрузке
процесса
Достарыңызбен бөлісу: