Архитектура операционной системы UNIX


         

в частную таблицу областей процесса


алгоритм loadreg /* загрузка части файла в область */ входная информация: (1) указатель на точку входа в частную таблицу областей процесса (2) виртуальный адрес загрузки (3) указатель индекса файла (4) смещение в байтах до начала считы- ваемой части файла (5) объем загружаемых данных в байтах выходная информация: отсутствует { увеличить размер области до требуемой величины (алгоритм growreg); записать статус области как "загружаемой в память"; снять блокировку с области; установить в пространстве процесса значения параметров чтения из файла: виртуальный адрес, по которому будут размещены счи- тываемые данные; смещение до начала считываемой части файла; объем данных, считываемых из файла, в байтах; загрузить файл в область (встроенная модификация алго- ритма read); заблокировать область; записать статус области как "полностью загруженной в па- мять"; возобновить выполнение всех процессов, ожидающих оконча- ния загрузки области; }
Рисунок 6.23. Алгоритм загрузки данных области из файла



Рисунок 6.24. Загрузка области команд (текста)

алгоритм freereg /* освобождение выделенной области */ входная информация: указатель на (заблокированную) область выходная информация: отсутствует { если (счетчик ссылок на область имеет ненулевое значе- ние) { /* область все еще используется одним из процессов */ снять блокировку с области; если (область ассоциирована с индексом) снять блокировку с индекса; возвратить управление; } если (область ассоциирована с индексом) освободить индекс (алгоритм iput); освободить связанную с областью физическую память; освободить связанные с областью вспомогательные таблицы; очистить поля области; включить область в список свободных областей; снять блокировку с области; }
Рисунок 6.25. Алгоритм освобождения области


Содержание  Назад  Вперед