80.1.3.2. ПРОЦЕССЫ И УПРАВЛЕНИЕ ВИРТУАЛЬНОЙ ПАМЯТЬЮ




THIS SECTION IS UNDER CONSTRUCTION


ПРОЦЕССЫ Процесс - это в первую очередь владелец ресурсов: памяти объектов (файлов итд)


Структура процесса



Из чего вообще состоят структуры связанные с процессами в современных OS? PID (Process ID) PID родителя Состояние процесса (в общем то всех интересует зомби ли он или нет) Указатели на структуры управления памятью Affinity Mask (показывает на каких процессорах процесс может выполняться) (особенно полезно для архитектур типа ccNUMA). Идеальный процессор для выполнения Класс приоритета процесса (как правило, Idle, Normal, Runtime) Базовый приоритет процесса Размер кванта времени Указатели на дескрипторы файлов Текущий каталог Терминал ассоциированный с процессом Структуры связанные с обработкой внешних событий Для UNIX систем - таблицы обработчиков сигналов и принятые сигналы Для Windows систем - LPC ports (exceptions, debug) Quotes (Ограничения) на размер адрессного пространства процесса на количество процессорного времени на размер стека на размер кучи на количество locked memory максимальный размер рабочего набора процесса Security связанный с процессом Для UNIX систем: Effective UID, Effective GID Для Windows систем: Token доступа Статистика Текущий размер виртуальной памяти используемой процессом Пиковый размер виртуальной памяти используемой процессом Время выполнения в режиме ядра Время выполнения в пользовательском режиме Startup information Имя программного модуля (и/или командная строка) Набор переменных окружения Список нитей процесса


Состояния процесса




Управление физической памятью

Управление реальной памятью Bitmap List





Стратегии выделения First fit Next fit Best fit Worst fit Quick fit


Виртуальная память

Виртуальная память


Сегментная Селектор.смещение




Страничная Адресс страницы.смещение








Отображение виртуальной памяти в физическую

Отображение виртуальной памяти в физическую





Адрессное пространство User Kernel



segment not present page fault


Подкачка

Swapping перемещение moveable сброс кода discardable swappable Зачистка использованных страниц при новом выделении










Thrashing




Paged pool Non-paged pool Блокировка страниц (если на них буфер ввода-вывода) Динамическое выделение стека (Win32 implementation)


Сбой страницы

Page Fault




Дисциплины вытеснения страниц

Алгоритмы вытеснения страниц


FIFO

FIFO-

additional reference bit second chance

enhanced second chance


LRU

NRU- не использованная в последнее время LRU-


(Optimal)

Optimal


Stack



Belady Anomaly


Clock

Clock-


Сравнение дисциплин






Рабочий pool процесса

Рабочий pool процесса prepaging при старте процесса




Жизненый цикл страницы




Разделяемая память

бит обращения к странице (accessed) Совмесное использование секций кода (если запущено несколько копий приложения) Разделение между процессами

Разделение данных и кода

fork() копия адрессного пространства (оптимизация - copy-on-write) vfork() управление возращается родителю только после вызова childом exec() TLS (Thread Local Storage) Memory Mapped Files






Index Prev Next