Хелпикс

Главная

Контакты

Случайная статья





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



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

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

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

Процессор обрабатывает данные, которые находятся в ОЗУ, и размещает свои коды и данные в адресном пространстве, которое они рассматривают как пространство ОЗУ.

В очень редких случаях программист задаёт при разработке программы реальные адреса в ОЗУ. В большинстве же случаев, между программистом и средой выполнения его программы стоит тот или иной аппарат преобразования адресов.

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

Работа с памятью:

Пространство имён программы
                                                                                                                   

                                                                                                               1.2.3Трансляция, компановка

                                                           Функции именования 2.3 загрузка

                                                                                                               2.3.4 исполнение

 


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

Функция привязки производит отображение точки из пространства виртуальных адресов в пространство реальных адресов.

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

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

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

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

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

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

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

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

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

Компьютер – это то адресное пространство в котором разрабатывается процесс.

Д.З. Доклад по ОЗУ.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.