русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2014-11-28; просмотров: 1442; Нарушение авторских прав


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

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

- защиты адресных пространств процессов

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

- ограничивает число процессов, работающих в системе (если исчерпается весь объем ОП, больше процессов запустить будет нельзя)

 

Многозадачная ОС должна обеспечивать:

1. Выполнение программ, размер которых больше, чем объем физической памяти. В идеале система должна обеспечить выполнять программы любого размера;

2. Выполнение частично загруженных программ. Это уменьшает время их первоначальной загрузки;

3. Размещение в памяти одновременно более чем одной программы. Это увеличивает коэффициент использования процессора;

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

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

 

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



 

 

Рисунок 4.1 – Преобразование страниц

 

Ядро взаимодействует с блоком управления памятью (memory management unit, MMU), который отвечает за получение данных из оперативной памяти и помещение данных в нее.

 

Требования к системе виртуальной памяти:

1) управление адресным пространством. Ядро должно выделять адресное пространство процессу на этапе выполнения fork и освобождать его при вызове exit. Если процесс производит системный вызов exec, ядро переписывает его старое адресное пространство кодом новой программы. Другие важные операции в адресном пространстве подразумевают изменение областей данных или стека, а также добавление новых областей (например, разделяемой памяти);

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

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

4) защита памяти. ОС должна защищать свои коды и данные от прикладных процессов. В противном случае пользовательская программа может случайно (или специально) повредить ОС. Процессы не должны иметь доступ к страницам, относящимся к другим процессам. Часть адресного пространства процесса должна быть защищена даже от него самого. Например, область кода процесса защищена от записи, иначе процесс может повредить сам себя;

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

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

 

 

За поддержку виртуальной памяти приходится расплачиваться:

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

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



<== предыдущая лекция | следующая лекция ==>
Межпроцессное взаимодействие с помощью файловой системы | Свопинг


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 5.743 сек.