Канальный кипящий графитовый реактор Реакторы водо-водяного типа Реакторы на быстрых нейтронах Промышленные реакторы Исследовательские ядерные реакторы Реакторы третьего поколения ВВЭР-1500 Задачи по физике ядра

Отображение адресного пространства программы на основную память

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

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

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

Если выделение ресурсов производится перед выполнением программы, такой процесс называется статическим перемещением, в результате которого программа “привязывается” к определенному месту в памяти вычислительной машины. Если же ресурсы выделяются в процессе выполнения программы, это называется динамическим перемещением, в этом случае программа не привязана к определенному месту в реальной памяти. Динамический режим можно реализовать только с помощью операционной системы.

При статическом перемещении может встретиться два случая. 1. Реальная память больше требуемого адресного пространства программы. В этом случае загрузка программы в реальную память производится, начиная с 0-го адреса (рис.4.2).

glava 42.jpg

Рис.4.2. Загрузка программы в реальную память (объем реальной памяти больше адресного пространства программы)

Загружаемая программа А является абсолютной программой, так как никакого изменения адресов в адресном пространстве, подготовленном компилятором, при загрузке в основную память не происходит - программа располагается с 0-го адреса реальной памяти.

2. Реальная память меньше требуемого адресного пространства программы (рис.4.3).

glava 43.jpg

Рис.4.3. Загрузка программы в реальную память (объем реальной памяти меньше адресного пространства программы)

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

Реальная память

 

ОС

20Кбайт

Программа А

0Кбайт

Программа D

50Кбайт

10Кбайг

 

Программа В

20Кбайт

Программа С

Рис. 4.4. Фрагментация реальной памяти

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

При мультипрограммном режиме, если имеем программы А, В и С, для которых известно, что программа А выполняется при размещении в памяти с адреса 60 Кбайт до 90 Кбайт, В - с 60 Кбайт до 90 Кбайт, С - с 50 Кбайт до 120 Кбайт, организовать их совместное выполнение невозможно, так как им необходим один и тот же участок реальной памяти. Эти программы будут ждать друг друга либо их нужно заново редактировать с другого адреса.

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

glava 44.jpg

Рис.4.5. Размещение программы в свободной части ОП

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

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

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


На главную