|
||||
Управление виртуальной памятьюУправление виртуальной памятью Мультипрограммирование будет эффективным только в том случае, когда несколько процессов одновременно находится в ОЗУ. Тогда переключение процессов не требует значительного перемещения данных между ОЗУ и внешней памятью. Но тогда на ОС возлагается задача распределения ОЗУ между процессами и защитой памяти, которая выделена процессу от вмешательства другого процесса. Таким образом, память является одним из важнейших ресурсов системы. И от эффективности функционирования менеджера этого ресурса, в значительной степени зависят показатели эффективности всей системы в целом. Процессор обрабатывает данные, которые находятся в ОЗУ, и размещает свои коды и данные в адресном пространстве, которое они рассматривают как пространство ОЗУ. В очень редких случаях программист задаёт при разработке программы реальные адреса в ОЗУ. В большинстве же случаев, между программистом и средой выполнения его программы стоит тот или иной аппарат преобразования адресов. Общем случае, то адресное пространство, в котором пишется программа, называется виртуальной памятью в отличие от реальной или физической памяти в которой происходит выполнение программы (процесса). Работа с памятью:
1.2.3Трансляция, компановка Функции именования 2.3 загрузка 2.3.4 исполнение
Функция именования, присваивает имя производит отображение точки из пространства имён программы в пространство адресов в виртуальной памяти. Иными словами, переводит символьные имена, используемые программистом в виртуальные адреса. Функция привязки производит отображение точки из пространства виртуальных адресов в пространство реальных адресов. Функция выборки из пространства реальных адресов в значения, то есть выбирает содержимое памяти по заданному адресу. Программист, может писать программу, сразу привязывая её к заведомо известным адресам физической памяти - это называется программированием в абсолютных адресах. Такое программирование выполняется в специфических функциях, например для программ записываемых в ПЗУ. Даже в таких случаях программист пользуется символическими именами, возлагая задачу перевода имён в физические адреса на транслятор. Полученная таким образом программа называется абсолютной или неперемещаемой. Она может выполняться только будучи загруженной по определённому адресу ОЗУ. Все прикладные программы и подавляющее большинство системных программ являются перемещаемыми. Это значит, что в программе, подготовленной к выполнению, обращения к памяти настроены на виртуальные адреса, не привязанной пока к адресам реальной памяти. Выполнение функции привязки адресов может быть перенесено на этап загрузки. Простейшим вариантом такой системы трансляции является тот, в котором виртуальный адрес представляет собой смещение относительно начала программы, а при загрузке программы, в память ко всем виртуальным адресам прибавляется начальный адрес области, в которую программа загружена. Другой вариант – виртуальная адресация производится относительно некоторого базового регистра, в который при загрузке заносится базовый адрес. Программы, подготовленные таким образом, называются перемещаемыми при загрузке – они могут быть загружены в любую область оперативной памяти, но после загрузки должны оставаться на том же месте в памяти. Привязка адресов может делаться уже на этапе выполнения программы. Программа (процесс) обращается к памяти только по виртуальным адресам, а перевод виртуального адреса в, реальный, производится только при обращении к этому адресу. Между двумя обращениями, по одному и тому же виртуальному адресу, процесс может быть перемещён ОС в другую область реальной памяти. Системные средства, ответственные за привязку адресов, будут знать, о произведённом перемещении и при втором обращении привяжут тот же виртуальный адрес, к новому реальному адресу. Поскольку виртуальный адрес не изменился, то перемещение оказалось совершенно прозрачным для процесса. Такие процессы называются динамическими. При такой трансляции адресов, привязка выполняется при каждом обращении к памяти, поэтому, естественным решением является выполнение этой функции на аппаратном уровне. Компьютер – это то адресное пространство в котором разрабатывается процесс. Д.З. Доклад по ОЗУ.
|
||||
|