
- •IX. Алгоритмы замещения страниц
- •2. Локальные и глобальные алгоритмы замещения страниц
- •3. Алгоритм замещения неиспользовавшейся в последнее время страницы (nru)
- •4. Алгоритм выталкивания первой пришедшей страницы (fifo)
- •8. Алгоритм выталкивания редко используемой страницы (nfu)
- •8.1. Отличительная особенность в реализации алгоритма nfu.
- •7.2. Недостатки алгоритма nfu.
- •9. Алгоритм замещения страниц Рабочий набор
- •10. Алгоритм замещения страниц wsClock
- •11. Распределение памяти
- •11.1. Зависимость частоты страничных прерываний от размеров памяти, предоставленной процессу.
- •11.2. Размер страниц.
- •11.3. Совместно используемые страницы. Отдельные пространства команд и данных.
- •11.4. Очистка страниц.
- •Очистка страниц в ос unix и unix-подобных системах (linux)
- •Очистка страниц в Windows-системах
- •X. Сегментация памяти
- •1. Сегменты, доступ к сегментам, сегментация
- •2. Основные способы адресации
- •2.2. Сегментная адресация (сегментация).
- •2.3. Страничная организация.
- •2.4. Комбинация сегментирования и страничного способа.
- •Использование единого адресного пространства и использование сегментов
- •3.1. Программа, использующая единое адресное пространство:
- •3.2. Использование сегментов.
- •4. Реализация сегментации
- •4.1. Сегментация с использованием страниц в ос multics.
- •Преобразование адреса в системе multics
2. Основные способы адресации
Существует четыре основных способа адресации:
линейная (прямая) адресация;
сегментная адресация (сегментация);
страничная организация;
комбинация сегментирования и страничного способа.
В каждом из этих способов сначала вычисляется 32-разрядное смещение для целевого операнда, прибавляемое затем к 16-разрядному селектору сегмента, в результате чего получается физический адрес обращения к памяти.
2.1. Линейная (прямая) адресация.
Согласно методу линейной адресации, в микропроцессоре блокируется механизм виртуальной памяти, а все команды, осуществляющие операции над кодами программ, данными и действия со стеком, включаются в один сегмент.
Размеры этого сегмента могут достигать объема всего пространства физической памяти, адресуемого микропроцессором (до 4 Гбайт).
Метод линейной адресации не требует никаких преобразований адресов с помощью диспетчера памяти, поскольку любой логический адрес равен действительному физическому адресу.
2.2. Сегментная адресация (сегментация).
Пользуясь моделью сегментной адресации, можно разделять логическое адресное пространство на несколько различных сегментов, например, на сегменты данных, кодов, стека и три дополнительных сегмента. Каждый модуль памяти имеет свое собственное логическое адресное пространство, поэтому несложно реализовать механизмы, обеспечивающие защиту отдельных модулей, выборочный обмен данными между модулями, а также совместное использование модулей несколькими задачами.
Механизм сегментации может служить для структурирования логического адресного пространства.
2.3. Страничная организация.
Наличие в микропроцессоре механизма разбиения на страницы размером по 4 К позволяет разделить на страницы линейное адресное пространство любой задачи, представленное логическими сегментами.
Страничная организация служит для управления физической памятью.
2.4. Комбинация сегментирования и страничного способа.
Механизм сегментации и разбиения памяти на страницы возможно использовать независимо, но их комбинация представляет лучшие средства адресации.
Например, в прикладной программе сегментация может использоваться для реализации разделения данных, защиты программного обеспечения и многозадачного режима работы, при этом разбиение на страницы будет обеспечивать основное управление физической памятью.
При совместном использовании обоих способов организации памяти адрес формируется из линейного адреса, полученного блоком сегментации и обработанного механизмом поддержки страниц.
Использование единого адресного пространства и использование сегментов
3.1. Программа, использующая единое адресное пространство:
Недостаток использования единого адресного пространства состоит в том, что один участок памяти может заполниться полностью, но в то же время останутся свободные участки, а реализация перемещения участков памяти является достаточно сложной.
Эту проблему можно решить с помощью сегментации, когда каждому участку выделяется независимое адресное пространство, называемое сегментом.