Лекция 8. Управление...
TRANSCRIPT
НачалоФиксированное распределение
Сегментная организацияСтраничная организация
НазваниеЦели
Лекция 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Использование в ОС
Реальный режим
03419
сегмент 0 0 0 0
+0151619
0 0 0 0 смещение
=019
физический адрес
Рис. 3 : адресация паяти в реальном режиме процессора 80x86
Лекция 8 6 / 50
НачалоФиксированное распределение
Сегментная организацияСтраничная организация
Реальный режимЗащищённый режимРеализация в архитектуре 80286Использование в ОС
Реальный режим (окончание)
Вычисление физического адреса
адрес = сегмент× 16+ смещение
сегментсегментсегментсегментсегмент
Рис. 4 : адресация паяти в реальном режиме процессора 80x86
Лекция 8 7 / 50
НачалоФиксированное распределение
Сегментная организацияСтраничная организация
Реальный режимЗащищённый режимРеализация в архитектуре 80286Использование в ОС
Короткие и длинные адреса
Пример (Assembler 8086)
mov bx, 01hmov ax, [bx] ; короткая адресация: ds:[bx]mov es, axmov 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Использование в ОС
Селектор
012315
индекс TI RPL
Рис. 5 : формат селектора в защищённом режиме процессора 80286
Поле Значения Название ПримечаниеRPL 0 . . . 3 Requested Privilege Level 0 ∼ режим ядраTI 0 . . . 1 Table Indicator 0 ⇒ GDT, 1 ⇒ LDTиндекс 0 . . . 8 191 —
Таблица 1 : значения полей селектора
Лекция 8 11 / 50
НачалоФиксированное распределение
Сегментная организацияСтраничная организация
Реальный режимЗащищённый режимРеализация в архитектуре 80286Использование в ОС
Сегментные регистры
Обозн. Название ПримечаниеCS Code Segment 3 CPL—Current Privilege LevelDS Data SegmentSS Stack SegmentES Extra SegmentFS сегмент общего назначенияGS сегмент общего назначенияGDTR Global Descriptor Table Register адрес (32 бит) и размер (16 бит)LDTR Local Descriptor Table Register адрес (32 бит) и размер (16 бит)
Таблица 2 : сегментные регистры процессоров архитектуры X86
Лекция 8 12 / 50
НачалоФиксированное распределение
Сегментная организацияСтраничная организация
Реальный режимЗащищённый режимРеализация в архитектуре 80286Использование в ОС
Трансляция адресов (80286)
логический адрес
блок сегментации
физический адрес
Рис. 6 : трансляция адресов в защищённом режиме процессора 80286
Лекция 8 13 / 50
НачалоФиксированное распределение
Сегментная организацияСтраничная организация
Реальный режимЗащищённый режимРеализация в архитектуре 80286Использование в ОС
Трансляция адресов (продолжение)
индекс
базовый адрес
базовый адрес
базовый адрес
базовый адрес
0 0 0 0 0 0 0 0 смещение
+
физический адрес
15 3 15 0
23 0
Рис. 7 : трансляция адресов в защищённом режиме процессора 80286
Лекция 8 14 / 50
НачалоФиксированное распределение
Сегментная организацияСтраничная организация
Реальный режимЗащищённый режимРеализация в архитектуре 80286Использование в ОС
Поля дескриптора сегмента (8 байт)
Поле Бит Название ПримечаниеBase 32 линейный адрес началаG 1 Granularity 0 ⇒ размер в байтах, иначе
в 4 096-байтных блоках.Limit 20 размер (1 байт . . . 1 Мбайт или
4 Кбайт . . . 4 Гбайт)S 1 System 0 ⇒ хранит системные данные
(LDT, . . . ) иначе обычный сегменткода/данных.
DPL 2 Descriptor Privilege Level Уровень привилегий.P 1 Присутствие 1 ⇒ сегмент присутствует (в Linux
всегда).Type 4 тип сегмента
Таблица 3 : некоторые поля дескриптора сегмента процессора 80286
Лекция 8 15 / 50
НачалоФиксированное распределение
Сегментная организацияСтраничная организация
Реальный режимЗащищённый режимРеализация в архитектуре 80286Использование в ОС
Типы сегментов
Тип Таблица S Хранениекода GDT, LDT 1 сегмент кодаданных GDT, LDT 1 сегмент данных или сте-
касостояния задачи (TSS) GDT 0 сегмент с процессорны-
ми регистрами.локальной таблицы де-скрипторов
GDT 0 сегмент с 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.11 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 1 флаг присутствияадрес 20 20 старших бит.Accessed 1 устанавливается, когда блок управления адресует
соответствующий кадрDirty 1 (для таблицы страниц) устанавливается, когда вы-
полняется запись в кадрRead/Write 1 права доступа на запись.User/Supervisor 1 уровень привилегий ( = 3 или < 3).Page Size 1 (для каталога страниц) = 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
Расширение размера страниц
0212231
таблица смещение
Рис. 10 : формат смещения в режиме адресации расширенных страниц процессораPentium
Определение
Режим расширения размера страниц: (Page size extension, PSE) — режим,включаемый полем PSE регистра CR4 (поле «Page size»элемента таблицы = 1).
Лекция 8 25 / 50
НачалоФиксированное распределение
Сегментная организацияСтраничная организация
Реализация в архитектуре x86Использование в Windows 3.1Использование в Windows NTИспользование в Linux
Механизм расширения физических адресов
011122021293031
pdpt таблица страница смещение
Рис. 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
Расширение размера страниц
0111220212930383947
PML4 (9) PDPT (9) каталог (9) таблица (9) смещение (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
);
flAllocationTypeMEM_RESERVEMEM_COMMITMEM_RESERVE | MEM_COMMITMEM_LARGE_PAGESMEM_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
);
dwFreeType ОграниченияMEM_DECOMMIT —MEM_RELEASE dwSize == 0
Таблица 7 : возможные значенияпараметров функции
Лекция 8 33 / 50
НачалоФиксированное распределение
Сегментная организацияСтраничная организация
Реализация в архитектуре x86Использование в Windows 3.1Использование в Windows NTИспользование в Linux
Адресное пространство процесса в 32-битном режиме
2 ГБайт
hhhhhhhhhhhhhhhhhhhhhhhh
Ядро
64 КБайт2 ГБайт − 128 КБайтhhhhhhhhhhhh
hhhhhhhhhhhh
Процесс
64 КБайт
1 ГБайтhhhhhhhhhhhhhhhhhhhhhhhh
Ядро
64 КБайт
3 ГБайт − 128 КБайт
hhhhhhhhhhhhhhhhhhhhhhhh
Процесс
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