
- •Лабораторное задание
- •Контрольные вопросы
- •1. Поясните концепцию страничной организации памяти. Какие элементы содержатся в таблице страниц? Объясните преобразование логического адреса в физический.
- •2. Что такое сегментная организация памяти?
- •3. Какие размеры страниц в основном используются в современных операционных системах?
- •4. Поясните термины: внутренняя и внешняя фрагментация памяти.
- •5. Что такое виртуальная память? Что представляет собой принцип локализации?
- •6. Перечислите известные алгоритмы замещения страниц. Как соотносятся между собой алгоритм замещения "первым вошел – первым вышел" и часовой алгоритм.
Контрольные вопросы
1. Поясните концепцию страничной организации памяти. Какие элементы содержатся в таблице страниц? Объясните преобразование логического адреса в физический.
При страничной организации памяти память разделена на одинаковые блоки относительно небольшого фиксированного размера – кадры (frames), а каждый процесс разделен на блоки такого же размера – страницы (pages). Каждый кадр памяти может содержать одну страницу данных процесса.
Непрерывной области кадров для размещения страниц процесса может не существовать в момент загрузки процесса в память, тогда страницы загружаются в свободные (не смежные) кадры. При этом используется концепция логических адресов. Теперь помимо регистра базового адреса, для каждого процесса операционная система должна поддерживать таблицу страниц. Таблица страниц указывает расположение кадров каждой страницы процесса.
Использование страниц с размером, равным степени двойки, приводит к таким следствиям при преобразовании логических адресов в физические :
1) схема логической адресации прозрачна для программиста, ассемблера и компоновщика;
2) относительно просто реализуется аппаратная функция преобразования адресов. Алгоритм преобразования адреса из n+m бит, где крайние слева n бит представляют собой номер страницы, а крайние справа m бит – смещение, следующий:
− выделить номер страницы, который представлен n левыми битами логического адреса;
− используя номер страницы в качестве индекса в таблице страниц процесса, найти номер кадра k;
− начальный физический адрес кадра – k×2m, и интересующий нас физический адрес представляет собой это число плюс смещение. Такой адрес не надо вычислять – он получается в результате простого добавления номера кадра к смещению.
2. Что такое сегментная организация памяти?
Кроме страничной организации памяти существуют две другие схемы организации управления памятью: сегментная и сегментно-страничная. Сегменты, в отличие от страниц, могут иметь переменный размер. При сегментной организации виртуальный адрес является двумерным как для программиста, так и для операционной системы, и состоит из двух полей – номера сегмента и смещения внутри сегмента. Подчеркнем, что в отличие от страничной организации, где линейный адрес преобразован в двумерный операционной системой для удобства отображения, здесь двумерность адреса является следствием представления пользователя о процессе не в виде линейного массива байтов, а как набор сегментов переменного размера (данные, код, стек...).
Логическое адресное пространство – набор сегментов. Каждый сегмент имеет имя, размер и другие параметры (уровень привилегий, разрешенные виды обращений, флаги присутствия). В отличие от страничной схемы, где пользователь задает только один адрес, который разбивается на номер страницы и смещение прозрачным для программиста образом, в сегментной схеме пользователь специфицирует каждый адрес двумя величинами: именем сегмента и смещением.
Каждый сегмент – линейная последовательность адресов, начинающаяся с 0. Максимальный размер сегмента определяется разрядностью процессора (при 32-разрядной адресации это 232 байт или 4 Гбайт). Размер сегмента может меняться динамически (например, сегмент стека). В элементе таблицы сегментов помимо физического адреса начала сегмента обычно содержится и длина сегмента. Если размер смещения в виртуальном адресе выходит за пределы размера сегмента, возникает исключительная ситуация.
Логический адрес – упорядоченная пара v=(s,d), номер сегмента и смещение внутри сегмента. В системах, где сегменты поддерживаются аппаратно, эти параметры обычно хранятся в таблице дескрипторов сегментов, а программа обращается к этим дескрипторам по номерам-селекторам. При этом в контекст каждого процесса входит набор сегментных регистров, содержащих селекторы текущих сегментов кода, стека, данных и т. д. и определяющих, какие сегменты будут использоваться при разных видах обращений к памяти. Это позволяет процессору уже на аппаратном уровне определять допустимость обращений к памяти, упрощая реализацию защиты информации от повреждения и несанкционированного доступа.
Рис. 1.1 Преобразование логического адреса при сегментной организации памяти