Архитектура современных операционных систем
110 Для освобождения выделенной или зарезервированной области памяти ис- пользуется вызов VirtualFree с параметрами: 1) адрес начала освобождения памяти; 2) размер освобождаемой области; 3) выполняемая операция. MEM_RELEASE - освобождение выделенной или зарезервированной па- мяти; MEM_DECOMMIT – перевод выделенной области в зарезервированную. Рис. 4.11. Любая область (страница) памяти в каждый момент времени может нахо- диться в одном из следующих состояний (рис. 4.11.): Одним из недостатков виртуальной памяти является то, что в некоторый момент времени она бывает, недоступна, так как выгружена на диск. В ряде случаев, когда ввод/вывод осуществляется непосредственно в буфе- ры, расположенные в процессах пользователей, нельзя допустить, чтобы в мо- мент обращения драйвера ввода/вывода к этому буферу он оказался выгружен. Для временного запрета выгрузки области памяти использует вызов Virtu- alLock, который позволяет запретить выгрузку области памяти размером до 30 страниц. Есть и обратный вызов VirtualUnLock, разрешающий снова выгружать об- ласть памяти. Свободна Free Зарезервирована Reserved Выделена Commited VirtualFree(Decommit) VirtualAlloc(Commit) VirtualAlloc(Mem_Reserved) VirtualFree(Mem_Release) VirtualFree(Mem_Release) VirtualAlloc(Mem_Commit)
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy