Введение в операционные системы. ОС с точки зрения пользователя. Конфигурация компьютера. Многоуровневые очереди, страница 6

ОП
 
                                                                                                                                                                                             

Подпись: адр к2

 


Подпись: адр к1

Подпись: адр н2

 


Подпись: адр н1

2-ая программа

 
OS
 


Этот механизм называется «Свонинг» (SWAP) и делится на 2 этапа:

1.  SWAP IN – загрузка в ОП процесса. Характеризуется выделением какого-либо участка ОП и резервированием его таким образом, чтобы другие процессы не нарушали целостности.

2.  SWAP OUT – выгрузка из ОП какого-либо процесса (программы) и освобождение памяти под другие процессы.

Проблемы:

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

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

 


Подпись: адр нПодпись: адр к

OS

 


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

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

.dll (dynamic linking library) – динамическаябиблиотека. Она всегда остается в ОП, т.к. постоянно используется разными программами.

Пр. Пусть создали exe-файл на 20 кб, но т.к. он написан на Visual Basic, он потребует WIVSVB60.dll, который "тянет" на 1.6 Мб. При запуске 2-ой такой задачи, достаточно загрузить одну только задачу, т.к. библиотека уже там есть. При завершении работы задач библиотека не исчезает, проблема в том, что остаются "дырки" в памяти.

Смежное размещение процессов

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

 


Программы обычно имеют древовидную структуру:


Если мы скомпоновали программу, скомпилировали ее, то в main лежат все подпрограммы, функции и т.д.

Оверлейные структуры управления памятью

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

 


 


Поначалу адресом конца программы будет максимальная точка.

ОП

 


В ОП загружается М1(main), но участок памяти выделяется под maximum(М2). Если требуется загрузить М3, то М2 удаляется и загружается М3(который меньше, чем М2). При этом оставшийся в памяти "кусок" от М2 сохраняется.

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

Недостаток: 1. требуется специальные методы для организации передачи данных между модулями.

2.при загрузке оверлейных модулей требуется время для работы с диском, что увеличивает время счета программ.

При загрузке, самая большая проблема – это защита памяти от других процессов или программ.

Альтернативный метод, аналогичный оверлейным структурам.

Он состоит в выделении динамической памяти только тогда, когда она нужна, и в освобождении (уничтожении) ее после использования.

Лекция №8

(продолжение)

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

Этапы составления выполняемых команд:

1.  написание текста (C, Pascal, Assembler)

2. 

данные

 
программа проходит компиляцию. В результате появляется объектный код  .OBJ. При создании объектного кода используются разные типы модели памяти (tiny, small, big, large, huge). 

Ассемблер содержат операторы перехода jump

 


Любую программу можно создать в любом из типов этой модели.

Характеристики:

это короткие программы до 64 кб, обычно .com – файлы.

 
  tiny

  small

 


это большие программы, обычно .exe – или .ove - модули.

 
  big

  large

  huge

1)  исполняемая часть малая, данных много

2)  исполняемая часть большая, но мало данных

3)  и данных много, и исполняемая часть большая (huge-вариант)

 Как только  программирует на языке Ассемблер используется jump (метка)

Существуют различные варианты jump:

-  короткие ()

-  средние ()

-  длинные ()

 move <операнд 1>,<операнд 2>

                    адрес 1     адрес 2

       откуда берется  куда кладется

3.сборка программы. Получаем .exe или .com – модуль. Все операции лежат в .Lib.

4.загрузка. Модуль становится готовым к загрузке процессом.

В самом простом случае, если у нас грузится модуль .com, то проблема – необходимо пересчитать абсолютные адреса, используемые в .exe – модуле, в относительные адреса, используемые в ОП при выполнении программы.

Смещение относительно начала блока данных и точки входа в программу, т.е. первой выполняемой инструкции.