Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 24
Текст из файла (страница 24)
В некоторых операционных системахвыгруженные страницы располагаются не в файле, а в специальном разделе дискового пространства1.Разбиение всей оперативной памяти на страницы одинаковой величины, причемкратной степени двойки, приводит к тому, что вместо одномерного адресного пространства памяти можно говорить о двухмерном. Первая координата адресногопространства — это номер страницы, вторая координата — номер ячейки внутривыбранной страницы (его называют индексом). Таким образом, физический адресопределяется парой (Р,„ i), а виртуальный адрес — парой (P v , i), где Pv — номервиртуальной страницы, Рр — номер физической страницы, i — индекс ячейки внутристраницы. Количество битов, отводимое под индекс, определяет размер страницы,а количество битов, отводимое под номер виртуальной страницы, — объем потенциально доступной для программы виртуальной памяти.
Отображение, осуществляемое системой во время исполнения, сводится к отображению Pv в Рр и приписыванию к полученному значению битов адреса, задаваемых величиной i. При этом"NIX-системах для этих целей выделяется специальный раздел, но кроме него могут быть испольованы и файлы, выполняющие те же функции, если объема раздела недостаточно.94Глава 3. Управление памятью в операционных системахнет необходимости ограничивать число виртуальных страниц числом физических,то есть не поместившиеся страницы можно размещать во внешней памяти, которая в данном случае служит расширением оперативной.Для отображения виртуального адресного пространства задачи на физическую память, как и в случае сегментного способа организации, для каждой задачи необходимо иметь таблицу страниц для трансляции адресных пространств. Для описаниякаждой страницы диспетчер памяти операционной системы заводит соответствующий дескриптор, который отличается от дескриптора сегмента прежде всего тем,что в нем нет поля длины — ведь все страницы имеют одинаковый размер.
По номеру виртуальной страницы в таблице дескрипторов страниц текущей задачи находится соответствующий элемент (дескриптор). Если бит присутствия имеет единичное значение, значит данная страница размещена в оперативной, а не во внешнейпамяти, и мы в дескрипторе имеем номер физической страницы, отведенной подданную виртуальную. Если же бит присутствия равен нулю, то в дескрипторе мыбудем иметь адрес виртуальной страницы, расположенной во внешней памяти. Таким образом и осуществляется трансляция виртуального адресного пространствана физическую память.
Этот механизм трансляции иллюстрирует рис. 3.5.Защита страничной памяти, как и в случае сегментного механизма, основана наконтроле уровня доступа к каждой странице. Как правило, возможны следующиеуровни доступа:•только чтение;•чтение и запись;О только выполнение.Каждая страница снабжается соответствующим кодом уровня доступа. При трансформации логического адреса в физический сравнивается значение кода разрешенного уровня доступа с фактически требуемым. При их несовпадении работапрограммы прерывается.При обращении к виртуальной странице, не оказавшейся в данный момент в оперативной памяти, возникает прерывание, и управление передается диспетчеру памяти, который должен найти свободное место.
Обычно предоставляется первая же свободная страница. Если свободной физической страницы нет, то диспетчер памятипо одной из вышеупомянутых дисциплин замещения (LRU, LFU, FIFO, случайныйдоступ) определит страницу, подлежащую расформированию или сохранению вовнешней памяти. На ее месте он разместит новую виртуальную страницу, к которойбыло обращение из задачи, но которой не оказалось в оперативной памяти.Напомним, что алгоритм LFU выбирает для замещения ту страницу, на которуюне было ссылки на протяжении наиболее длительного периода времени.
АлгоритмLRU ассоциирует с каждой страницей время ее последнего использования. Длязамещения выбирается та страница, которая дольше всех не использовалась.Для использования дисциплин LRU и LFU в процессоре должны быть соответствующие аппаратные средства. В дескрипторе страницы размещается бит обращения (на рис.
3.5 подразумевается, что этот бит расположен в последнем поле),который становится единичным при обращении к дескриптору.95Сегментная, страничная и сегментно-страничная организация памятиВиртуальный адресРегистр таблицы страниц1732000IР (Page)612Ii (index)Таблица страниц текущей згр32017Номерфизическойстраницы илиадрес на диске123ПравадоступаR-X//Рис. 3.5. Страничный способ организации виртуальной памятиЬсли объем физической памяти небольшой и даже часто требуемые страницы неУдается разместить в оперативной памяти, возникает так называемая «пробуксовка».
Другими словами, пробуксовка — это ситуация, при которой загрузка нужнойстраницы вызывает перемещение во внешнюю память той страницы, с которой мыт°Же активно работаем. Очевидно, что это очень плохое явление. Чтобы его не допускать, желательно увеличить объем оперативной памяти (сейчас это просто,поскольку стоимость модуля оперативной памяти многократно снизилась), уменьшить количество параллельно выполняемых задач или прибегнуть к более эффективным дисциплинам замещения.Глава 3. Управлениепамятью в операционныхсистемахОперативная память — это важнейший ресурс любой вычислительной системы,поскольку без нее (как, впрочем, и без центрального процессора) невозможно выполнение ни одной программы.
В главе 1 мы уже отмечали, что память являетсяразделяемым ресурсом. От выбранных механизмов распределения памяти междувыполняющимися процессорами в значительной степени зависит эффективностьиспользования ресурсов системы, ее производительность, а также возможности,которыми могут пользоваться программисты при создании своих программ. Желательно так распределять память, чтобы выполняющаяся задача имела возможность обратиться по любому адресу в пределах адресного пространства той программы, в которой идут вычисления.
С другой стороны, поскольку любой процессимеет потребности в операциях ввода-вывода, и процессор достаточно часто переключается с одной задачи на другую, желательно в оперативной памяти расположить достаточное количество активных задач с тем, чтобы процессор не останавливал вычисления из-за отсутствия очередной команды или операнда. Некоторыересурсы, которые относятся к неразделяемым, из-за невозможности их совместного использования делают виртуальными.
Таким образом, чтобы иметь возможностьвыполняться, каждый процесс может получить некий виртуальный ресурс. Виртуализация ресурсов делается программным способом средствами операционнойсистемы, а значит, для них тоже нужно иметь ресурс памяти. Поэтому вопросыорганизации разделения памяти для выполняющихся процессов и потоков являются очень актуальными, ибо выбранные и реализованные алгоритмы решенияэтих вопросов в значительной степени определяют и потенциальные возможности системы, и общую ее производительность, и эффективность использованияимеющихся ресурсов.Память и отображения,виртуальное адресное пространствоЕсли не принимать во внимание программирование на машинном языке (этатехнология практически не используется уже очень давно), то можно сказать,что программист обращается к памяти с помощью некоторого набора логических имен, которые чаще всего являются символьными, а не числовыми, и длякоторого отсутствует отношение порядка.
Другими словами, в общем случаемножество переменных в программе не упорядочено, хотя отдельные переменные могут иметь частичную упорядоченность (например, элементы массива).Имена переменных и входных точек программных модулей составляют пространство символьных имен. Иногда это адресное пространство называют логическим.С другой стороны, при выполнении программы мы имеем дело с физической оперативной памятью, собственно с которой и работает процессор, извлекая из неекоманды и данные и помещая в нее результаты вычислений.
Физическая памятьпредставляет собой упорядоченное множество ячеек реально существующей оперативной памяти, и все они пронумерованы, то есть к каждой из них можно обратиться, указав ее порядковый номер (адрес). Количество ячеек физической памяти ограниченно и фиксированно.Системное программное обеспечение должно связать каждое указанное пользователем символьное имя с физической ячейкой памяти, то есть осуществить отображение пространства имен на физическую память компьютера.