Начало Фиксированное распределение Сегментная организация Страничная организация Название Цели Лекция 8. Управление памятью Операционные системы 27 января 2013 г. Лекция 8 1 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Название Цели Задачи управления памятью Задачи Перемещаемость кода и данных. Защита памяти. Совместное использование памяти. Логическая организация в виде сегментов, модулей. Двухуровневая память. Лекция 8 2 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Концепция Реализации OS/360 Фиксированное распределение памяти Резерв Резерв Рис. 1 : концепция фиксированного распределения паяти Лекция 8 3 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Концепция Реализации OS/360 Варианты OS/360 Версии ядра Single Sequential Scheduler (SSS). Primary Control Program (PCP). Multiple Sequential Scheduler (MSS). Multiprogramming with a Fixed number of Tasks (MFT). Multiple Priority Scheduler (MPS). Multiprogramming with a Variable number of Tasks (MVT). Лекция 8 4 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Концепция Реализации OS/360 Распределение памяти в OS/360 Рис. 2 : организация памяти в OS/360 – MFT Лекция 8 5 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Реальный режим 19 4 3 сегмент 0 0000 + 19 1615 0000 0 смещение = 19 0 физический адрес Рис. 3 : адресация паяти в реальном режиме процессора 80x86 Лекция 8 6 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Реальный режим (окончание) Вычисление физического адреса адрес = сегмент × 16 + смещение сегмент сегмент сегмент сегмент сегмент Рис. 4 : адресация паяти в реальном режиме процессора 80x86 Лекция 8 7 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Короткие и длинные адреса Пример (Assembler 8086) mov mov bx, 01h ax, [bx] ; короткая адресация: ds:[bx] mov mov es, ax cx, es:[bx] ; длинная адресация Пример (Borland C ++ 3.1 и т. д.) int n; int *far lpn = &n; int *near npn = &n; Лекция 8 8 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Режимы адресации, начиная с 80286 Режимы реальный; защищённый. Назначение реального режима Совместимость с предыдущим ПО; Начальная загрузка системы. Лекция 8 9 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Способы разбиения памяти Определения Сегмент: (segment) — область памяти заданного размера. Страница: (page) — диапазон линейных адресов (размер зависит от архитектуры, ∼ 4 Кбайт) и данные по ним. Страничный кадр: (page frame, физическая страница) — единица разбиения физической памяти, содержит 1 страницу. Лекция 8 10 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Селектор 15 3 индекс 2 TI 1 0 RPL Рис. 5 : формат селектора в защищённом режиме процессора 80286 Поле RPL TI индекс Значения 0 ... 3 0 ... 1 0 . . . 8 191 Название Requested Privilege Level Table Indicator — Примечание 0 ∼ режим ядра 0 ⇒ GDT, 1 ⇒ LDT Таблица 1 : значения полей селектора Лекция 8 11 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Сегментные регистры Обозн. CS DS SS ES FS GS GDTR LDTR Название Code Segment Data Segment Stack Segment Extra Segment Примечание 3 CPL — Current Privilege Level Global Descriptor Table Register Local Descriptor Table Register сегмент общего назначения сегмент общего назначения адрес (32 бит) и размер (16 бит) адрес (32 бит) и размер (16 бит) Таблица 2 : сегментные регистры процессоров архитектуры X86 Лекция 8 12 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Трансляция адресов (80286) логический адрес блок сегментации физический адрес Рис. 6 : трансляция адресов в защищённом режиме процессора 80286 Лекция 8 13 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Трансляция адресов (продолжение) 15 3 индекс 15 00000000 0 смещение базовый адрес базовый адрес базовый адрес + базовый адрес 23 0 физический адрес Рис. 7 : трансляция адресов в защищённом режиме процессора 80286 Лекция 8 14 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Поля дескриптора сегмента (8 байт) Поле Base G Limit Бит 32 1 Название Granularity 20 S 1 System DPL P 2 1 Descriptor Privilege Level Присутствие Type 4 Примечание линейный адрес начала 0 ⇒ размер в байтах, иначе в 4 096-байтных блоках. размер (1 байт . . . 1 Мбайт или 4 Кбайт . . . 4 Гбайт) 0 ⇒ хранит системные данные (LDT, . . . ) иначе обычный сегмент кода/данных. Уровень привилегий. 1 ⇒ сегмент присутствует (в Linux всегда). тип сегмента Таблица 3 : некоторые поля дескриптора сегмента процессора 80286 Лекция 8 15 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Типы сегментов Тип кода данных Таблица GDT, LDT GDT, LDT S состояния задачи (TSS) GDT 0 локальной таблицы дескрипторов GDT 0 1 1 Хранение сегмент кода сегмент данных или стека сегмент с процессорными регистрами. сегмент с LDT. Таблица 4 : некоторые виды сегментов процессора 80286 Лекция 8 16 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Работа блока сегментации Алгоритм 1 TI = 0 ⇒ базовый линейный адрес из GDTR, иначе — из LDTR. 2 адрес дескриптора сегмента = базовый линейный адрес + 8 × индекс; 3 max {CPL, RPL} > DPL ⇒ General Protection Fault (GP); 4 Из дескриптора сегмента выбирается поле «базовый адрес» (Base); 5 линейный адрес = базовый адрес + смещение. Лекция 8 17 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Использование сегментации в ОС Linux Для каждого процессора существует GDT, содержащая 4 дескриптора сегментов (Base = 0, G = 1, Limit = 0xFFFFF = 220 − 1): Для всех процессов ядра: код ядра; данные ядра; Для всех процессов пользователя: код пользователя; данные пользователя. + некоторые специфические сегменты. Для каждого процесса создаётся LDT по умолчанию ядром. Некоторые приложения обращаются к нему (Wine, . . . ) Лекция 8 18 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реальный режим Защищённый режим Реализация в архитектуре 80286 Использование в ОС Использование сегментации в ОС (окончание) Windows 3.1 1 GDT, 1 LDT для системной виртуальной машины и по 1 LDT для каждой ВМ для DOS-приложения (режим V86). Сегменты кода, данных приложений могут помечаться как фиксированные, перемещаемые, перемещаемые + удаляемые, . . . Windows NT Модель flat: 1 сегмент для кода и данных для приложения, сегментные регистры не должны меняться им. Лекция 8 19 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Трансляция адресов (80386) логический адрес блок сегментации линейный адрес блок управления страницами физический адрес Рис. 8 : трансляция адресов в защищённом режиме процессора 80386 Лекция 8 20 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Трансляция адресов (продолжение) 31 22 21 12 11 страница таблица 0 смещение адрес адрес адрес адрес адрес + адрес адрес адрес 31 0 физический адрес Рис. 9 : трансляция адресов в защищённом режиме процессора 80386 Лекция 8 21 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Поля таблицы страниц (4 байт) Поле Present адрес Accessed Бит 1 20 1 Dirty 1 Read/Write User/Supervisor Page Size 1 1 1 Примечание флаг присутствия 20 старших бит. устанавливается, когда блок управления адресует соответствующий кадр (для таблицы страниц) устанавливается, когда выполняется запись в кадр права доступа на запись. уровень привилегий ( = 3 или < 3). (для каталога страниц) = 1 ⇒ размер страницы = 4 Мбайт Таблица 5 : некоторые поля элемента таблицы страниц процессора 80386 Лекция 8 22 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Работа блока управления страницами Алгоритм 1 Адрес элемента Каталога Таблицы Страниц = *cr3 + 4 × каталог; 2 Адрес Таблицы Страниц — из поля «адрес» элемента Каталога Таблиц; 3 Адрес элемента Таблицы Страниц = адрес Таблицы Страниц × 4 096 + 4 × таблица; 4 Адрес страницы — из поля «адрес» дескриптора Таблицы Страниц; 5 Физический адрес = адрес страницы × 4 096 + смещение. Вместимость Каталога Таблиц/Таблицы Страниц До 1 024 элементов. Лекция 8 23 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Буфер ассоциативной трансляции Определение Буфер ассоциативной трансляции: (translation lookaside buffer, TLB) — кэш, отображающий (недавно вычисленные) линейные адреса в физические. Лекция 8 24 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Расширение размера страниц 31 22 21 0 таблица смещение Рис. 10 : формат смещения в режиме адресации расширенных страниц процессора Pentium Определение Режим расширения размера страниц: (Page size extension, PSE) — режим, включаемый полем PSE регистра CR4 (поле «Page size» элемента таблицы = 1). Лекция 8 25 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Механизм расширения физических адресов 31 30 29 pdpt 21 20 таблица 12 11 страница 0 смещение Рис. 11 : формат смещения в режиме расширения физических адресов процессора Pentium Pro Определение Механизм расширения физических адресов: (Physical Address Extension, PAE) — режим, включаемый полем PAE регистра CR4. Отличия: поле «адрес» элемента таблицы увеличивается с 32 до 36 бит ⇒ элемент таблицы увеличивается с 4 до 8 байт; количество элементов таблиц уменьшается с 1 024 до 512. Лекция 8 26 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux PML4 (9) PDPT (9) каталог (9) таблица (9) 0 12 11 21 20 30 29 47 39 38 Расширение размера страниц смещение (12) Рис. 12 : формат смещения в режиме long mode архитектуры AMD64 (x86-64) Лекция 8 27 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Использование страничной адресации в Windows 3.1 Windows 3.1 Страничный (32-битный) режим адресации используется только виртуальными драйверами, работающими в 0-м кольце защиты. Лекция 8 28 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Компоненты диспетчера памяти Функциональность ntoskrnl.exe Сервисы управления виртуальной памятью (приложения, драйверы устройств режима ядра). Обработчики ловушек трансляции недействительных адресов и нарушения прав доступа. Системные потоки режима ядра. Лекция 8 29 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Системные потоки диспетчера памяти Потоки режима ядра Поток обнуления страниц (zero page thread). Диспетчер рабочих наборов (working set manager). Поток загрузки и выгрузки стеков (process/stack swapper). Подсистема записи модифицированных страниц (modified page writer). Подсистема записи спроецированных страниц (mapped page writer). Поток сегмента разыменования (dereference segment thread). Лекция 8 30 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Состояния страниц Состояния страниц в диспетчере памяти Свободная (free). Зарезервированная (reserved). Переданная (committed). Последовательность работы со страницами 1 Резервирование (reserving). 2 Передача (committing). 3 Возврат (decommitting). 4 Освобождение (freeing). Лекция 8 31 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Выделение памяти Windows API VirtualAlloc() LPVOID WINAPI VirtualAlloc( __in_opt LPVOID lpvAddress, __in SIZE_T dwSize, __in DWORD flAllocationType, __in ); DWORD flProtect flAllocationType MEM_RESERVE MEM_COMMIT MEM_RESERVE | MEM_COMMIT MEM_LARGE_PAGES MEM_RESERVE | MEM_PHYSICAL ... Таблица 6 : возможные значения флагов параметров функции Лекция 8 32 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Освобождение памяти Windows API VirtualFree() BOOL WINAPI VirtualFree( __in LPVOID lpvAddress, __in SIZE_T dwSize, __in ); DWORD dwFreeType Лекция 8 dwFreeType MEM_DECOMMIT MEM_RELEASE Ограничения — dwSize == 0 Таблица 7 : возможные значения параметров функции 33 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Адресное пространство процесса в 32-битном режиме 2 ГБайт hhh h hhhhhhhh hhhh h hhhh h 64 КБайт 2 ГБайт hhhh − 128 КБайт h hh hhhhh hhhh h hhhh h Ядро hhhh1 ГБайт h hh hhhhh hhhh h hhhh h Ядро 64 КБайт 3 ГБайт − 128 КБайт Процесс hhh h hhhhhhhh hhhh h hhhh h 64 КБайт Процесс 64 КБайт Рис. 13 : адресное пространство процесса в Windows Лекция 8 34 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Доступность 3 (4) Гбайт для процесса Условия доступности более 2 Гбайт для 32-разрядного процесса Флаг IMAGE_FILE_LARGE_ADDRESS_AWARE в образе исполняемого файла. Настройка 32-разрядной системы (BCDEdit /set increaseuserva 3072) или 64-разрядная система. Размер адресного пространства для 64-разрядного процесса 8 Тбайт для платформы AMD64 (x86-64). Лекция 8 35 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Сеанс Определения Сеанс: (session) — средство удалённой работы при помощи служб терминалов (Terminal Services) и быстрого переключения пользователей. Оконная станция: (window station) — объект, содержащий буфер обмена, таблицу атомов один или несколько рабочих столов и имеющий атрибуты безопасности и права доступа. Данные сеанса Оконная станция; Пространство имён; ... Лекция 8 36 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Системные пулы памяти Определения Пул неподкачиваемой памяти: (nonpaged pool) — диапазон системных виртуальных адресов, присутствующих и доступных всё время (⇒ без ошибок страниц). Пул подкачиваемой памяти: (paged pool) — диапазон системных виртуальных адресов, которые система может выгружать в страничный файл/загружать из файла. Лекция 8 37 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Структура виртуального адресного пространства Виды данных в адресном пространстве Принадлежащие процессу (код/данные); Принадлежащие сеансу (код/данные); Принадлежащие системе (код/данные); Код ядра; Драйверы; Таблицы страниц процесса; Области системной подкачиваемой/неподкачиваемой памяти. ... Лекция 8 38 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Использование PSE Возможности использования больших страниц Базовые образы ОС (ntoskrnl.exe и hal.dll); Базовые системные данные (структуры, описывающие состояния страничных кадров, . . . ); Запросы большого ввода/вывода; Для приложений закрытые области памяти, выделенные VirtualAlloc() с использованием флага MEM_LARGE_PAGE; Другие заданные драйверы при настройке в реестре. Лекция 8 39 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Использование PAE Определение Расширения оконного доступа к адресам: (Address Windowing Extensions, AWE) — часть Windows API для доступа к памяти обычным процессам с использованием PAE. Порядок работы с памятью 1 Выделение физической памяти (AllocateUserPhysicalPages()); 2 Создание окна (VirtualAlloc() с флагом MEM_PHYSICAL); 3 Проецирование части физической памяти на окно (MapUserPhysicalPages(), MapUserPhysicalPagesScatter()). Лекция 8 40 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Адресное пространство процесса в 32-битном режиме 1 ГБайт 3 ГБайт Ядро Процесс 3 ГБайт Ядро Процесс Рис. 14 : адресное пространство процесса в Linux Лекция 8 41 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Особенности распределения адресного пространства Организация виртуального адресного пространства процессов Ядро сохраняет регистр cr3 в дескрипторе процесса ⇒ каждый процесс имеет собственный глобальный каталог таблиц. Первые 3 ГБайт адресного пространства доступны для процессов, различны. Последний 1 ГБайт доступен в режиме ядра, отображается в одну область памяти. Потоки ядра работают в 3–4 Гбайтном диапазоне верхних адресов, не ссылаясь ниже ⇒ неважно, какой таблицей страниц они пользуются. Для избежания лишних сбросов TLB-буферов используется таблица дескрипторов последнего процесса. Лекция 8 42 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Управление динамической памятью Виды оперативной памяти постоянно выделенная ядру; динамическая. Запросы на выделение памяти со стороны ядра Удовлетворяются немедленно: ядро является приоритетным компонентом; ядро доверяет самому себе. Запросы на выделение памяти со стороны пользовательского процесса процессу сразу выделяется диапазон ячеек, само выделение откладывается до момента обращения (лениво); код процесса может содержать ошибки. Лекция 8 43 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Исключения при обращении к памяти Причины Адреса, указанные вследствие программных ошибок; Адреса принадлежат отсутствующей странице, хотя принадлежат адресному пространству процесса ⇒ соответствующий кадр должен быть выделен. Лекция 8 44 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Обработка исключения обращения к странице если адрес ∈ адресному пространству процесса, то если вид доступа ∼ правам доступа к области, то допустимое обращение, выделить страничный кадр; иначе недопустимое обращение, послать SIGSEGV; иначе если исключение в режиме пользователя, то недопустимое обращение, послать SIGSEGV; иначе ошибка ядра, уничтожить процесс; Рис. 15 : упрощённый алгоритм обработки исключения обращения к странице Лекция 8 45 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux «Жадное» выделение памяти Старая реализация функции fork() 1 Выделение страничных кадров под таблицы страниц потомка. 2 Выделение страничных кадров под страницы потомка. 3 Инициализация таблиц страниц потомка 4 Копирование страниц родителя в страницы потомка. Лекция 8 46 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux «Ленивое» выделение памяти Особенности реализации функции fork() Страничные кадры не копируются, а используются совместно родителем и потомком; Страничные кадры помечаются недоступными для записи; Если родитель или потомок попытается записать в общую страницу, возникнет исключение, ядро создаст копию, оригинал останется доступным только для чтения. Если потом произойдёт попытка записи в исходную страницу, ядро проверит, является ли процесс единственным владельцем её (поле дескриптора страницы _count == 0). Да ⇒ пометит её как доступную на запись. _count == -1 ⇒ страница считается свободной. Лекция 8 47 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Выделение страниц по требованию Пример (проверка выделения памяти) int main() { try { char *pchData = new char[100000000]; // . . . } catch (const std::bad_alloc &) { // . . . } } Лекция 8 48 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Утилизация страничных кадров Особенности работы с памятью ОС Linux не делает проверок размеров доступной памяти ⇒ кеши диска и т. д. растут неограниченно. Определение Алгоритм утилизации страничных кадров: (Page Frame Reclaiming Algorithm, PFRA) — выбирает занятые страничные кадры для выгрузки на диск. Лекция 8 49 / 50 Начало Фиксированное распределение Сегментная организация Страничная организация Реализация в архитектуре x86 Использование в Windows 3.1 Использование в Windows NT Использование в Linux Выгрузка страниц Виды страниц Неутилизируемые (динамически выделенные ядру, временно заблокированные, . . . ) Выгружаемые (анонимные в АП режима пользователя) Синхронизируемые (отображение файлов в режиме пользователя, дисковые кэши, . . . ) На выброс (неиспользуемые, в кэшах памяти). Случаи утилизации Дефицит памяти в системе; Гибернация; Периодическая утилизация. Лекция 8 50 / 50