Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЭВУ 2 семестр / Презентации ЭВУ в пдф / метода моховикова

.pdf
Скачиваний:
39
Добавлен:
31.05.2015
Размер:
4.4 Mб
Скачать

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

При обращении к выгруженной странице памяти процессор вырабаты-

вает исключение #PF – отказ страницы, а программный обработчик исключе-

ния (часть ОС) получит необходимую информацию для свопинга – «подкач-

ки» отсутствующей страницы с диска.

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

Учитывая обычное свойство локальности (близкого расположения тре-

буемых ячеек памяти) кода и ссылок на данные, в оперативной памяти в ка-

ждый момент времени следует хранить только небольшие области сегментов,

необходимые активным задачам. Эту возможность (а, следовательно, и уве-

личение допустимого числа одновременно выполняемых задач при ограни-

ченном объеме оперативной памяти) как раз и обеспечивает страничное управление памятью.

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

ких-либо требований по согласованию границ сегментов и страниц. Однако от разумности распределения сегментов по страницам будет зависеть произ-

водительность компьютера, поскольку подкачка страниц занимает значи-

тельное время.

Отметим, что имеется возможность расширения физического адреса до

36 бит (64 Гбайт), при котором могут использоваться страницы размером 4

Кбайт и 2 Мбайт. Режимом страничной переадресации управляют биты PG в

регистре CR0, флаги PAE и PSE в СR4 и бит размера страницы PS в PDE –

элементе каталога страниц.

161

12.1. Базовый механизм страничного управления

Базовый механизм страничного управления использует двухуровневую табличную трансляцию линейного адреса в физический. Механизм имеет три части: каталог страниц (Page Directory), таблицы страниц (Page Table) и соб-

ственно страницы (Page Frame), как показано на рис. 64.

Рис. 64. Механизм страничного управления

Механизм включается установкой бита PG = 1 в регистре CR0.

Регистр CR2 хранит линейный адрес отказа (Page Fault Linear Address) –

адрес памяти, по которому был обнаружен последний отказ страницы.

Регистр CR3 хранит физический адрес каталога страниц (Page Directory Physical Base Address). Его младшие 12 бит всегда нулевые (каталог вырав-

нивается по границе страницы).

12.2. Виртуальное адресное пространство

Давайте рассмотрим вопрос о наиболее распространенной в настоящее время схеме управления памятью, известной как виртуальная память, в рам-

ках которой осуществляется сложная связь между аппаратным и программ-

162

ным обеспечением. Вначале будут рассмотрены аппаратные аспекты вирту-

альной памяти, а затем вопросы, возникающие при ее программной реализа-

ции.

Понятие виртуальной памяти

Разработчикам программного обеспечения часто приходится решать проблему размещения в памяти больших программ, размер которых превы-

шает объем доступной оперативной памяти. Один из вариантов решения данной проблемы – организация структур с перекрытием – рассмотрен в пре-

дыдущем параграфе. При этом предполагалось активное участие программи-

ста в процессе формирования перекрывающихся частей программы. Развитие архитектуры компьютеров и расширение возможностей операционной сис-

темы по управлению памятью позволило переложить решение этой задачи на компьютер. Одним из главных достижений стало появление виртуальной па-

мяти (virtual memory). Впервые она была реализована в 1959 г. на компьюте-

ре «Атлас», разработанном в Манчестерском университете.

Суть концепции виртуальной памяти заключается в следующем. Ин-

формация, с которой работает активный процесс, должна располагаться в оперативной памяти. В схемах виртуальной памяти у процесса создается ил-

люзия того, что вся необходимая ему информация имеется в основной памя-

ти. Для этого, во-первых, занимаемая процессом память разбивается на не-

сколько частей, например страниц. Во-вторых, логический адрес (логическая страница), к которому обращается процесс, динамически транслируется в физический адрес (физическую страницу). И, наконец, в тех случаях, когда страница, к которой обращается процесс, не находится в физической памяти,

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

Таким образом, в наличии всех компонентов процесса в основной памя-

ти необходимости нет. Важным следствием такой организации является то,

что размер памяти, занимаемой процессом, может быть больше, чем размер

163

оперативной памяти. Принцип локальности обеспечивает этой схеме нужную эффективность.

Возможность выполнения программы, находящейся в памяти лишь час-

тично, имеет ряд вполне очевидных преимуществ:

Программа не ограничена объемом физической памяти. Упро-

щается разработка программ, поскольку можно задействовать большие виртуальные пространства, не заботясь о размере используемой памя-

ти.

Поскольку появляется возможность частичного помещения программы (процесса) в память и гибкого перераспределения памяти между программами, можно разместить в памяти больше программ,

что увеличивает загрузку процессора и пропускную способность сис-

темы.

Объем ввода-вывода для выгрузки части программы на диск может быть меньше, чем в варианте классического свопинга, в итоге каждая программа будет работать быстрее.

Таким образом, возможность обеспечения (при поддержке операцион-

ной системы) для программы «видимости» практически неограниченной (ха-

рактерный размер для 32-разрядных архитектур 232 = 4 Гбайт) адресуемой пользовательской памяти (логическое адресное пространство) при наличии основной памяти существенно меньших размеров (физическое адресное про-

странство) – очень важный аспект.

Но введение виртуальной памяти позволяет решать другую, не менее важную задачу – обеспечение контроля доступа к отдельным сегментам па-

мяти и, в частности, защиту пользовательских программ друг от друга и за-

щиту ОС от пользовательских программ. Каждый процесс работает со свои-

ми виртуальными адресами, трансляцию которых в физические выполняет аппаратура компьютера. А следовательно, пользовательский процесс лишен

164

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

Виртуальная память (англ. Virtual memory) – технология управления памятью ЭВМ, разработанная для многозадачных операционных систем. При использовании данной технологии для каждой программы используются не-

зависимые схемы адресации памяти, отображающиеся тем или иным спосо-

бом на физические адреса в памяти ЭВМ.

В системах с виртуальной памятью те адреса, которые генерирует про-

грамма (логические адреса), называются виртуальными, и они формируют виртуальное адресное пространство. Термин «виртуальная память» означает,

что программист имеет дело с памятью, отличной от реальной, размер кото-

рой потенциально больше, чем размер оперативной памяти.

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

это направление получило наиболее широкое развитие после соответствую-

щей аппаратной поддержки. Следует отметить, что оборудование компьюте-

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

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

рация исключительных ситуаций при отсутствии в памяти нужных страниц

(page fault).

Виртуальная память позволяет:

увеличить эффективность использования памяти несколькими од-

новременно работающими программами, организовав множество независи-

мых адресных пространств;

обеспечить защиту памяти между различными приложениями;

165

использовать больше памяти, чем установлено в компьютере, за счет откачки неиспользуемых страниц на вторичное хранилище (рис. 65).

Рис. 65. Реализация вир-

туальной памяти

Возникает вопрос: как появляются виртуальные адреса? Ответ на него заключается в следующем: виртуальные адреса вырабатывает транслятор,

переводящий программу на машинный язык (рис. 66).

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

166

Рис. 66.

Типы

адресов

Каждый процесс имеет собственное виртуальное адресное пространство.

Максимальный размер виртуального адресного пространства ограничивается разрядностью адреса, присущей данной архитектуре компьютера, и, как пра-

вило, не совпадает с объемом физической памяти, имеющимся в компьютере.

12.3. Работа транслятора

Трансляция осуществляется следующим образом: когда процесс перехо-

дит в состояние выполнения, в специальный регистр процесса, называемый базовым, загружается начальный адрес процесса в основной памяти (рис. 67).

Кроме того, используется «граничный» (bounds) регистр, в котором со-

держится адрес последней ячейки программы. Эти значения заносятся в ре-

гистры при загрузке программы в основную память. При выполнении про-

цесса относительные адреса в командах обрабатываются процессором в два этапа.

167

Рис. 67. Работа транслятора

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

гистра для получения абсолютного адреса. Затем полученный абсолютный адрес сравнивается со значением в граничном регистре. Если полученный аб-

солютный адрес принадлежит данному процессу, команда может быть вы-

полнена. В противном случае генерируется соответствующее данной ошибке прерывание.

12.4. Методы распределения памяти без использования дискового пространства

Все методы управления памятью могут быть разделены на два класса:

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

168

Рис. 68. Классификация методов распределения памяти

12.4.1. Распределение памяти фиксированными разделами

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

Рис. 69. Распределение памяти фиксированными раз-

делами:

а – с общей очередью;

б – с отдельными очере-

дями

169

Подсистема управления памятью в этом случае выполняет следующие задачи: 1) сравнивая размер программы, поступившей на выполнение, и сво-

бодных разделов, выбирает подходящий раздел; 2) осуществляет загрузку программы и настройку адресов.

При относительно простой реализации данный метод имеет существен-

ный недостаток – жесткость. Так как в каждом разделе может выполняться только одна программа, то уровень мультипрограммирования заранее огра-

ничен числом разделов независимо от того, какой размер имеют программы.

Даже если программа имеет небольшой объем, она будет занимать весь раз-

дел, что приводит к неэффективному использованию памяти. С другой сто-

роны, даже если объем оперативной памяти машины позволяет выполнить некоторую программу, разбиение памяти на разделы не позволяет сделать этого.

12.4.2. Распределение памяти разделами переменной величины

В этом случае память машины не делится заранее на разделы. Сначала вся память свободна. Каждой вновь поступающей задаче выделяется необхо-

димая ей память. Если достаточный объем памяти отсутствует, то задача не принимается на выполнение и стоит в очереди. После завершения задачи па-

мять освобождается, и на это место может быть загружена другая задача. Та-

ким образом, в произвольный момент времени оперативная память представ-

ляет собой случайную последовательность занятых и свободных участков

(разделов) произвольного размера. На рис. 70 показано состояние памяти в различные моменты времени при использовании динамического распределе-

ния. Так, в момент t0 в памяти находится только ОС, а к моменту t1 память разделена между 5 задачами, причем задача П4, завершаясь, покидает па-

мять. На освободившееся после задачи П4 место загружается задача П6, по-

ступившая в момент t3.

170