Смежное размещение процессов.
При размещении процессов есть однопрограммный режим, когда с диска загружается одна программа.
Если пользователь скомпилирует программу и создаст main.exe модуль, то в нем будут лежать все процессы, функции и т.д.
|
|
| |||
|
|
|
|
|
|
|
|
|
Каждый из модулей m2.owl, m3.owl и m4.owl строится так, чтобы при загрузке это были отдельные части процесса (программы).
|
M1 в ОС загружен всегда, в зависимости от того, какой из модулей нужен на выполнение. Если, например, требуется загрузить m2, занимая всю память, то если затем нужно загрузить m3, то он будет загружаться на место m2. Аналогично грузится и m4 (на то же место).
Достоинства: при построении оверлейных структур пользователь экономит память за счет того, что все модули не оказываются сразу в оперативной памяти и появляются там в процессе выполнения (например, вызов процедуры или функции).
Недостатки: 1) требуются специальные методы для организации передачи данных между модулями;
1) при загрузке оверлейных модулей требуется время для работы с диском, что увеличивает время счета программы.
При загрузке самая большая проблема – защита памяти от других процессов или программ.
Метод, аналогичный оверлейному, состоит в динамическом выделении памяти только тогда, когда она нужна и в уничтожении ее после использования (динамические массивы, ссылки, указатели).
23. Проблема загрузки оперативной памяти состоит в наличие команд, которые влияют на процессы загрузки памяти:
на низком уровне выполнение команд состоит из нескольких этапов:
1) текстовая программа на языке низкого уровня (AS, C, PASKAL);
2) компиляция программы, в результате чего появляется объектный код .OBJ.
При создании объектного кода используются разные типы модели памяти. Разные компиляторы предлагают их разные наборы (tiny, small, big, large, huge). Это объясняется тем, что AS-код содержит оператор перехода jump, move.
Программа всегда содержит две секции: данных и используемый код. Любую программу можно скомпилировать и создать в любом из типов этих моделей памяти.
Оператор перехода:
Jump____метка
Move A, B //два адреса
Любую программу можно скопировать и создать в любом из типов этих моделей.
Характеристики типов:
Tiny и small – модели памяти, использующиеся в том случае, когда создаются очень короткие программы до 64 кб, обычно .com-файлы.
Big, large, huge используются для больших команд: .exe либо .аvl – модулей.
Данное разделение введено, чтобы учесть различные варианты создания команд.
Например, когда исполняемая часть большая, а данных мало, используется модель памяти big или large. Когда исполняемая часть маленькая, а данных много - large, huge. Когда же и исполняемая часть большая и данных много, то используется huge.
При программировании любого оператора цикла на AS и на низком уровне используется оператор перехода jump.
Jump-метка
255шагов – короткий Jump (в пределах 1 байта)
32761 – обычный (средний) Jump (в пределах 2 байт)
4Гб – длинный Jump, то же самое происходит при реализации move : move адрес 1(откуда) адрес 2(куда).
После получения объектного кода происходит
3 этап. Сборка программы (компоновка, редактор связей).
Все связи лежат в библиотечных программах .lib, в момент сборки к ним присоединяется наша программа, и получается единый модуль с единым пространством. У каждого модуля есть определенное адресное пространство.
4 этап. Загрузка.
Загрузка зависит от менеджера управления устройствами.
Проблема при загрузки: необходимо пересчитать абсолютные адреса, используемые в .exe-модуле, в относительные адреса, используемые в ОП при выполнении программы.
4) Загрузка. Модуль становится готовым к загрузке процессом. Загрузка зависит от того, какой стоит менеджер управления процессом.
Модуль со спецификацией .com содержит все адреса переходов.
Проблема при загрузке состоит в том, что необходимо пересчитать абсолютные адреса, используемые в .exe-модулях в относительные адреса, используемые в оперативной памяти при выполнении программ.
При загрузке используется программный счетчик – смещение относительно начала блока данных и точки входа в программу.
Такой механизм позволяет не зависеть от того, куда в оперативную память загружена программа, т.к. автоматически происходит смещение для обращения к данным и определение перехода происходит с добавлением того смещения, которое заключается в PCB.
Функция контроля за обращение к памяти: смысл ее состоит в том, чтобы обеспечить ситуацию, когда адрес всегда больше, чем указатель на свободную память – free. Если адрес выходит за свободную память, то это не считается ошибкой.
Если адрес меньше, чем free, то происходит аварийное завершение программы (HALT).
Дата добавления: 2016-07-18; просмотров: 1957;