Управление памятью.

Подсистема управления памятью производит распределение физической памяти между всеми существующими в системе процессами, загрузку и удаление программных кодов и данных процессов в отведенные им области памяти, настройку адресно-зависимых частей кодов процесса на физические адреса выделенной области, а также защиту областей памяти каждого процесса. Стратегия управления памятью складывается из стратегий выборки, размещения и замещения блока программы или данных в основной памяти. Соответственно используются различные алгоритмы, определяющие, когда загрузить очередной блок в память (по запросу или с упреждением), в какое место памяти его поместить и какой блок программы или данных удалить из основной памяти, чтобы освободить место для размещения новых блоков.

Одним из наиболее популярных способов управления памятью в современных ОС является виртуальная память. Реализация механизма виртуальной памяти позволяет программисту считать, что в его распоряжении имеется однородная оперативная память, объем которой ограничивается только возможностями адресации, предоставляемыми системой программирования.

Важная функция управления памятью – защита памяти.
Нарушения защиты памяти связаны с обращениями процессов к участкам памяти, выделенной другим процессам прикладных программ или программ самой ОС. Средства защиты памяти должны пресекать такие попытки доступа путем аварийного завершения программы-нарушителя.

В 32 разрядном Windows реализована система виртуальной памяти, осн на 32-разрядном адресном пространстве, адресует 4 Гб виртуальной памяти. Диапазон адресов х00000000 – х7FFFFFFF отдается процессу, а х8FFFFFFF – xFFFFFFFF система использует в собственных целях (чтобы операционная система могла обратиться к своему собственному коду и данным и к коду и данным, выполняющегося в настоящее время процесса, без необходимости изменять адресное пространство, она делает свою виртуальную память видимой из адресных пространств всех процессов).

Виртуальное адресное пространство является набором адресов, доступных потокам процесса, дает только логическое представление и не обязательно соответствует структуре физической памяти. В период выполнения диспетчер памяти, используя аппаратную поддержку, транслирует или проецирует виртуальные адреса на физические, по которым реaльно хранятся данные Недостающая память берется на диске в файле подкачки.

Каждая страница помечается тэгом, определяющим, в каком режиме должен работать процессор для чтения и/или записи данной страницы Страницы в системном пространстве доступны только в режиме ядра, только для чтения ни в каком режиме для записи не доступны