Алгоритмы распределения, использования, освобождения ресурсов и предоставления к ним доступапредназначены для наиболее эффективной организации работы всего комплекса устройств ЭВМ. Рассмотрим их на примере управления основной памятью .
Для выполнения программы при ее загрузке в основную память ей выделяется часть машинных ресурсов - они необходимы для размещения команд, данных, управляющих таблиц и областей ввода-вывода, т.е. производится трансляция адресного пространства откомпилированной программы в местоположение в реальной памяти .
Выделение ресурсов может быть осуществлено самим программистом (особенно если он работает на языке, близком машинному), но может производиться и операционной системой.
Если выделение ресурсов производится перед выполнением программы , такой процесс называется статическим перемещением, в результате которого программа “привязывается” к определенному месту в памяти вычислительной машины. Если же ресурсы выделяются в процессе выполнения программы , это называется динамическим перемещением, в этом случае программа не привязана к определенному месту в реальной памяти . Динамический режим можно реализовать только с помощью операционной системы.
При статическом перемещении может встретиться два случая. 1. Реальная память больше требуемого адресного пространства программы . В этом случае загрузка программы в реальную память производится, начиная с 0-го адреса (рис.4.2).
Рис.4.2. Загрузка программы в реальную память (объем реальной памяти больше адресного пространства программы )
Загружаемая программа А является абсолютной программой , так как никакого изменения адресов в адресном пространстве , подготовленном компилятором, при загрузке в основную память не происходит - программа располагается с 0-го адреса реальной памяти .
2. Реальная память меньше требуемого адресного пространства программы (рис.4.3).
Рис.4.3. Загрузка программы в реальную память (объем реальной памяти меньше адресного пространства программы )
В этом случае программист (или операционная система) вынужден решать проблему, как организовать выполнение программы. Методов решения проблемы существует несколько: можно создать оверлейную структуру (т.е. разбить программу на части, вызываемые в ОП по мере необходимости), сделать модули программы реентерабельными (т.е. допускающими одновременную работу модуля по нескольким обращениям из разных частей программы или из различных программ) и т.д.
Реальная память
ОС
20Кбайт
Программа А
0Кбайт
Программа D
50Кбайт
10Кбайг
Программа В
20Кбайт
Программа С
Рис. 4.4. Фрагментация реальной памяти
В некоторых операционных системах адреса откомпилированной (с 0 адреса) программы могут быть преобразованы в адреса реальной памяти, отличные от 0. При этом создается абсолютный модуль, который требует размещения его в памяти всегда с одного и того же адреса.
При мультипрограммном режиме, если имеем программы А, В и С, для которых известно, что программа А выполняется при размещении в памяти с адреса 60 Кбайт до 90 Кбайт, В - с 60 Кбайт до 90 Кбайт, С - с 50 Кбайт до 120 Кбайт, организовать их совместное выполнение невозможно, так как им необходим один и тот же участок реальной памяти. Эти программы будут ждать друг друга либо их нужно заново редактировать с другого адреса.
При работе в мультипрограммном режиме может сложиться ситуация, когда между программами образуются незанятые участки памяти. На рис.4.4
Рис.4.5. Размещение программы в свободной части ОП
общий объем незанятой памяти, составляющий 50 Кбайт, достаточен, чтобы загрузить и программу D, находящуюся в ожидании. Но ее не удается загрузить так как свободные участки памяти не являются смежными. Такое состояние называется фрагментацией реальной памяти. Оно характерно для систем со статическим перемещением.
В системах с динамическим перемещением программ перемещающий загрузчик размещает программу в свободной части памяти (рис.4.5) и допускает использование несмежных ее участков.
В этом случае имеется больше возможностей для организации мультипрограммной работы, а следовательно, и для более эффективного использования временных ресурсов ЭВМ.
Работа триггерной схемы определяется не таблицей истинности, как для комбинационной логической схемы, а таблицей переходов. Таблица переходов показывает изменение состояния триггера при изменении состояния входных сигналов в зависимости от его текущего состояния.