Управление памятью в многозадачной операционной системе. Свопинг и подкачка по запросу.

Адресация виртуальной памяти. UNIX использует трехуровневую структуру таблицы страниц, состоящую из следующих таблиц:

• Каталог страниц. Активный процесс имеет единый каталог страниц, размер которого равен размеру одной страницы. Каждая запись в каталоге страниц указывает на одну страницу промежуточного каталога страниц. Каталог страниц активного процесса должен находиться в активной памяти.

• Промежуточный каталог страниц может охватывать несколько страниц. Каждая запись этого каталога указывает на одну страницу таблицы страниц.

• Таблица страниц также может охватывать несколько страниц. Каждая запись указывает на одну виртуальную страницу процесса.

Для использования трехуровневой структуры таблицы страниц виртуальный адрес рассматривается как состоящий из четырех частей:

• индекс в каталоге страниц

• индекс в промежуточном каталоге страниц

• индекс в таблице страниц

• смещение в таблице страниц

Распределение памяти ядра. Фундаментом распределения памяти ядра является механизм распределения страниц, используемый для управления пользовательской виртуальной памятью. Здесь, как и в схеме виртуальной памяти, используется алгоритм близнецов. Поскольку минимальное количество памяти, которое может быть выделено, составляет одну страницу, такое распределение неэффективно в связи с частыми запросами на выделение небольших участков памяти разного размера с минимальным временем жизни. Для повышения эффективности Linux использует схему, известную как кусочное распределение (slab allocation) в пределах выделенной страницы.

СВОПИНГ

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

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

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

1. Произведено обращение к системной функции fork, которая должна выделить место в памяти для процесса-потомка.

2. Произведено обращение к системной функции brk, увеличивающей размер процесса.

3. Размер процесса увеличился в результате естественного увеличения стека процесса.

4. Ядру нужно освободить в памяти место для подкачки ранее выгруженных процессов.

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

ПОДКАЧКА ПО ЗАПРОСУ

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

Процессы стремятся исполнять команды небольшими порциями, которые именуются программными циклами или подпрограммами, используемые ими указатели группируются в небольшие поднаборы, располагаемые в информационном пространстве процесса. В этом состоит суть так называемого принципа "локальности".


Наши рекомендации