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