• И обои grandeco

    Для вас любые услуги и обои grandeco по привлекательной цене.

    www.oboi-dom.ru

  • Корма, товары для животных. интернет-магазин рыжий кот

    Корма, товары для животных. интернет-магазин рыжий кот

    www.magazindoberman.ru





Linux Kernel (Ядро линукса) (часть 1)


Пул зарезервированных страничных кадров

Запросы на выделение памяти можно удовлетворять двумя разными способами. Если в наличии имеется достаточно свободной памяти, запрос может быть удовлетворен немедленно. В противном случае должна быть выполнена утилизация памяти, и управляющий тракт ядра, сделавший запрос, блокируется до появления свободной памяти.

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

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

Объем зарезервированной памяти (в килобайтах) хранится в переменной min free kbytes. Ее начальное значение устанавливается при инициализации ядра и зависит от объема физической памяти, непосредственно отображенной в четвертый гигабайт линейных адресов ядра, т. е. значение зависит от количества страничных кадров в зонах памяти zone dma и zone normal:
размер зарезервированного пула = yj\6xn (килобайт), где п — напрямую отображенная память.
Впрочем, начальное значение переменной min free kbytes не может быть меньше 128 и больше 65 5364.
Зоны памяти zone dma и zone normal жертвуют” под зарезервированную память количество страничных кадров, пропорциональное их размерам. Например, если зона zone normal в восемь раз больше зоны zone dma, то семь восьмых зарезервированных страничных кадров берется из zone normal, а одна восьмая — ИЗ ZONE_DMA.

Поле pages min дескриптора zone содержит количество зарезервированных страничных кадров внутри зоны. Как мы увидим в главе 17, это поле играет свою роль в алгоритме утилизации страничных кадров (совместно с полями pages iow и pages high). Значение в поле pages iow всегда равно 5/4 от значения в поле pages min, а значение pages high всегда равно 3/2 от значения в поле pages_min.

Предыдущая страница | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | Следующая страница




Возможно, Вас также заинтересует:

ОС Knoppix - это Linux без проблем

ВведениеЕсли вы цените свое время, умеете считать деньги и знаете стоимость информации, то эта книга для вас. А так как к книге прилагается компакт- диск с готовой к работе операционной системой Knoppix Live CD, то лишь достаточно вставить его в привод и перегрузить компьютер,...

Linux Kernel (Ядро линукса) (часть 1)

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

Linux Kernel (Ядро линукса) (часть 2)

Копирование при записи В системах Unix первых поколений создание процесса было реализовано довольно неуклюже: получив системный вызов fork о, ядро в буквальном смысле дублировало все адресное пространство родителя и присваивало копию процессу-потомку. Такая операция...

Linux Kernel (Ядро линукса) (часть 3)

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