Распределение дисковой памяти
Распределение дисковой памяти выполняется задачей АРХИВ автоматически при помощи таблиц распределения памяти. Каждый диск имеет собственную таблицу распределения памяти. Таблица создается при начальной генерации системы. В целях повышения надежности по отношению к сбоям таблица распределения на диске хранится в двух экземплярах (см. 3.3.7.). Одним из элементов таблицы распределения является карта памяти. Карта памяти представляется в виде шкалы, в которой отмечаются единицей все занятые блоки и нулем все свободные.
При запуске ОС задача АРХИВ переносит карты распределения памяти с дисков в массовую память.
Объекты ФС отображаются на внешнюю память в виде набора областей. Размер файла наращивается динамически в пределах максимального размера. Наращивание файла осуществляется по инициативе кластера соответствующего метода доступа. При попытке записи за текущую границу файла, но не за границу максимального размера файла, кластер обращается к задаче АРХИВ с командой расширения файла. АРХИВ ищет соответствующую область на том диске, где находится файл, и наращивает его таблицу отображения.
Области на диске выделяются равными степени двойки(используется разновидность известного алгоритма близнецов ). Всю память можно представить в виде дерева, листьями которого являются области памяти (свободные или занятые). Размеры листьев одного уровня равны между собой. Размеры листьев увеличиваются в два раза при переходе с некоторого уровня на предшествующий более высокий уровень. В начальном состоянии все дерево состоит из одной вершины - корня - размером в полную дисковую память (для простоты предположим, что размер дисковой памяти равен некоторой степени двойки).
При запросе области просматривается список областей уровня, соответствующего запросу. Если таких областей памяти нет, то запрашивается область удвоенного размера на более высоком уровне. Полученная область делится пополам. Половина выдается в качестве ответа на запрос, половина помечается свободной.