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

109 Пока оба процесса только читают из совместно используемой страницы, в памяти располагается одна ее копия (рис. 4.10.). Как только один из процессов попытается изменить страницу, для него тут же будет создана своя копия этой страницы в памяти, причем доступная только ему, то есть другие процессы не увидят изменений. Сторожевая страница (ее атрибут – PAGE_GUARD) – это страница, при обращении к которой вырабатывает специальное исключение. Такие страницы используются для контроля выхода из заданной области памяти (например, желтая зона стека, границы пользовательской области памя- ти). Для выделения и резервирования области памяти имеется API-функция VirtualAlloc, при вызове которой указываются следующие параметры: 1) адрес выделяемой или резервируемой области памяти. В случае резер- вирования он выравнивается на границу сегмента (64K), а в случае выделения – на границу страницы (4К). 2) размер выделяемой области памяти, округляется в большую сторону до целого числа страниц. 3) способ выделения памяти: MEM_RESERVE - память резервируется; MEM_COMMIT - память выделяется; MEM_TOP_DOWN - память выделяется сверху вниз. 4) тип доступа к выделяемой/резервированной области: PAGE_READONLY PAGE_READWRITE … PAGE_GUARD Если область была зарезервирована с помощью VirtualAlloc с параметром MEM_RESERVE, то для ее выделения нужно еще раз вызвать VirtualAlloc с па- раметром MEM_COMMIT.

RkJQdWJsaXNoZXIy MTY0OTYy