Программирование на Ассемблере
Блок памяти,
занимаемый кодом программы, помечается как занятый в специальном списке и
становится недоступным для других программ: при загрузке программы система,
анализируя этот список, выбирает свободную область памяти нужного размера.
Если программе в процессе работы требуется дополнительная память (например,
для хранения текстового буфера), необходимо выполнить специальный запрос
системы - резервирование. В противном случае не гарантируется, что данная
область памяти не будет использоваться другими программами. Когда программа заканчивает работу, занимаемая ей память освобождается для
дальнейшего использования. В результате вся память оказывается разбитой на
свободные и занятые блоки, не связанные друг с другом (фрагментация).
Правда, если появляются несколько расположеных друг за другом свободных
блоков, система объединяет их в один. Примером работы данного механизма
может служить димамический RAM-диск. Особенностью RAM-диска является то, что он всегда заполнен. Когда программа
удаляется с RAM-диска, память, отведенная для ее хранения, возвращается
системе. При записи данных на RAM-диск память^ наоборот, резервируется у
системы.
В младших моделях Amiga нет механизма страничной организации памяти: при
резервировании блока система пытается выделить непрерывный кусок памяти
требуемого размера. Так что возможна ситуация, когда суммарный объем
свободной памяти позволяет выделить блок нужного размера, но каждый из
свободных блоков памяти оказывается меньше, и запрос возвращает ошибку. 1.3.3 Многозадачность. Многозадачность (возможность выполнять несколько программ одновременно)
является основой операционной системы Amiga. Именно операционная система
занимается распределением ресурсов компьютера между программами.
Центральный процессор MC68000 не может выполнять несколько программ
одновременно, но несмотря на это, при наличии некоторых аппаратных средств,
можно \"заставить\" процессор время от времени переключаться с одной
программы на другую.
|