Механизм реализации виртуальной памяти

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

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

Программно формируемые адреса, называемые виртуальными адресами, образуют виртуальное адресное пространство. На компьютерах без виртуальной памяти виртуальные адреса подаются непосредственно на шину памяти и при чтении или записи читается или записывается слово в физической памяти с тем же самым адресом. При применении виртуальной памяти виртуальные адреса не передаются напрямую шиной памяти. Вместо этого они направляются диспетчеру памяти (MMU — Memory Management Unit), который отображает виртуальные адреса на физические адреса.

Основа виртуальной памяти Pentium состоит их двух таблиц: локальной таблицы дескрипторов LDT (Local Descriptor Table) и глобальной таблицы дескрипторов GDT (Global Descriptor Table). У каждой программы есть своя собственная таблица LDT, но глобальная таблица дескрипторов одна, ее совместно используют все программы в компьютере. Таблица LDT описывает сегменты, локальные для каждой программы, — ее код, данные, стек и т. д., тогда как таблица GDT несет информацию о системных сегментах, включая саму операционную систему.

Большинство систем виртуальной памяти опираются на техники страничной, сегментной и сегментно-страничной организацией памяти.

Контрольные задания для СРС (темы 2) [(2;104-115),(1;219-241)]

1. Принципы действия кэш-памяти.

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

 

Рекомендуемая литература

1.Олифер В.Г.,Олифер Н.А. Сетевые ОС.

2.Гордеев А.В, Молчанов А.Ю. Системное программное обеспечение.

3.Таненбаум Э, Вудхал А Операционные системы: разработка и реализация.

4.Столингс Операционные системы.

 

Лекция

Тема лекции. Стратегии откачки и подкачки страниц Менеджер ресурса памяти. Стратегии распределения памяти.

План лекции

1.Стратегии подкачки страниц.

Управление памятью. Совместное использование памяти.

2. Защита памяти.

3. Механизм реализации виртуальной памяти.

3. Цель лекции: Ознакомить студентоа со стратегии откачки и подкачки страниц Менеджер ресурса памяти. Стратегии распределения памяти.

4. Содержание лекции:

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

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

Наилучший из возможных алгоритмов замещения страниц легко описать, но не-возможно реализовать. Он действует так. В тот момент, когда происходит страничное прерывание, в памяти находится некоторый набор страниц. К одной из этих страниц будет обращаться следующая команда процессора (к странице, содержащей требуемую команду). На другие страницы, возможно, не будет ссылок в течение следующих 10, 100 или даже 1000 команд. Каждая страница может быть помечена количеством команд, которые будут выполняться перед первым к ней обращением.

Оптимальный страничный алгоритм просто сообщает, что должна быть выгружена страница с наибольшей меткой. Если одна страница не будет использоваться в течение 8 млн команд, а другая — в течение 6 млн команд, удаление первой отодвинет в будущее на возможно максимальный срок страничное прерывание, которое вернет ее назад. Компьютеры, подобно людям, пытаются отложить неприятные события настолько, насколько это возможно.

С этим алгоритмом связана только одна проблема: он невыполним. В момент страничного прерывания операционная система не имеет возможности узнать, когда произойдет следующее обращение к каждой странице. (Мы рассматривали аналогичную ситуацию раньше, когда обсуждали алгоритм планирования «кратчайшая задача — первая»: как система может сказать, какая из задач самая короткая?) Тем не менее, выполняя программу на модели и следя за всеми обращениями к страницам, оптимальную замену можно осуществить при втором запуске, опираясь на информацию о ссылках на страницы, собранную во время первого запуска.

Алгоритм NRU – неиспользовавшаяся в последнее время страница. Чтобы дать возможность операционной системе собирать полезные статистические данные о том. какие страницы используются, а какие — нет, большинство компьютеров с виртуальной памятью поддерживают два статусных бита, связанных с каждой страницей. Бит R (от Referenced — обращения) устанавливается всякий раз, когда происходит обращение к странице (чтение или запись). Бит М (от Modified — изменение) устанавливается, когда страница записывается (то есть изменяется). Биты содержатся в каждом элементе таблицы страниц, как показано на рис. 4.11. Важно реализовать обновление этих битов при каждом обращении к памяти, поэтому необходимо, чтобы они задавались аппаратно. Если однажды бит был установлен в 1, то он остается равным 1 до тех пор, пока операционная система программно не вернет его в состояние 0.

Алгоритм FIFO – первый пришел, первый обслужен. Чтобы проиллюстрировать его работу, рассмотрим универсам, па полках которого можно выставить ровно k различных продуктов. Он предлагает новую удобную пишу: растворимый, «глубоко замороженный», экологически чистый йогурт, который можно мгновенно приготовить в микроволновой печи. Покупатели тут же обратили внимание на этот продукт, и наш ограниченный в размерах супермаркет, для того чтобы продавать новинку, должен избавиться от одного из старых товаров.

 

Контрольные задания для СРС (темы 2) [(2;104-115),(1;219-241)]

1. Принципы действия кэш-памяти.

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

 

Рекомендуемая литература

1.Олифер В.Г.,Олифер Н.А. Сетевые ОС.

2.Гордеев А.В, Молчанов А.Ю. Системное программное обеспечение.

3.Таненбаум Э, Вудхал А Операционные системы: разработка и реализация.

4.Столингс Операционные системы.