Принципы
ЛЕКЦИЯ №4
Алгоритмы выгружения страниц из ОЗУ.
1. Циклический алгоритм
2. Случайная страница
3. Выгружается страница, к которой было меньше всего обращений
4. Выгружается страница, к которой было меньше всего обращений за последнее время.
5. Выгружается страница, к которой дольше всего не обращались
Принцип SWAP
a | m |
Рассматривается два бита: а – бит обращений и m – бит модификаций. В связи с этим существует 4 группы страниц, которые описаны в таблице
.
1. принцип рабочего набора.
По горизонтальной оси : количество страниц процесса, находящихся в ОЗУ.
По вертикальной оси: Вероятность отказа страницы.
Принцип: операционная система не должна выгружать из памяти страницы, которые относятся к рабочему набору процесса.
2. Принцип локальности-глобальности.
УПРАВЛНИЕ ПАМЯТЬЮ В WINDOW’S
В Window’s каждому процессу выделяется 4Gb адресного пространства.
лог. уровень – адреса
физ. уровень – память
Они распределяются следующим образом
Причем 2 страничных Gb одинаковы у всех процессов, ни читать, ни писать мы туда не можем.
64к адресов, доступ к которым закрыт для всех, включая OS и необходимы для того, чтобы не писать сложных алгоритмов анализа.
Виртуальная память страничная.
ФУНКЦИИ
1. Вспомогательные
/* типы данных:
BOOL
DWORD (0…232)
SIZE_T (0…232 or 0… 264)
LP… - указатель на то, что дальше написано.
P… - указатель на то, что дальше написано.
HANOLE – описывает любой системный объект
LP…STR – указатель на строку
__ /\__
С , W , T – тип строки зависит от режима компиляции
*/
1) Функция GetSystemInfo возвращает информацию относительно текущей системы.
VOID GetSystemInfo(
LPSYSTEM_INFO lpSystemInfo // адрес структуры информации системы
);
Параметры: LpSystemInfo
Указатель на структуру SYSTEM_INFO, которая будет заполнена этой функцией.
Структура SYSTEM_INFO содержит следующие поля:
DWORD dwPageSize; // размер строки
LPVOID lpMinimumApplicationAddress; // указатель на самую первую ячейку, которая доступна программе
LPVOID lpMaximumApplicationAddress; // указатель на самую старшую ячейку, которая доступна программе
DWORD dwActiveProcessorMask; //Возвращает маску, представляющую набор процессоров, конфигурированных в систему. Бит 0 - процессор 0; бит 31 - процессор 31.
DWORD dwNumberOfProcessors; //количество процессоров в системе
DWORD dwProcessorType;
DWORD dwAllocationGranularity; //размер адресов, кратных которому разрешается выделять виртуальную память
WORD wProcessorLevel;
WORD wProcessorRevision;
Структура SYSTEM_INFO содержит информацию относительно текущей компьютерной системы. Она включает тип процессора, размер страницы, первоначальный изготовитель оборудования (OEM) идентификатор, и другая подобная информация.
2)Функция ZeroMemory заполняет блок памяти с нулями.
VOID ZeroMemory(
PVOID Destination // адрес блока, заполняемого нулями
DWORD Length // размер, в байтах, блока, заполняемого нулями
);
3) Функция CopyMemory копирует блок памяти от одного местоположения до другого.
VOID CopyMemory (
PVOID Destination, // // адрес адресата копии
CONST VOID * Source, // адрес блока для копирования
DWORD Length // размер, в байтах, блока для копирования
);
4) BOOL IsBad[Read/Write]Ptr(
LPVOID Ptr,
SIZE_T bytes);
можно/ нельзя писать/читать в участок, указанный в скобках