• Полоски для отбеливания зубов

    Отбелить зубы пастой - полоски для отбеливания зубов.

    clickonbeauty.ru





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


Запись старых грязных страниц на диск

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

Работа по нахождению старых грязных страниц поручается потоку ядра pdflush, который периодически пробуждается. На этапе инициализации ядра функция page writeback init устанавливает динамический таймер wb_timer так, чтобы ОН ДОХОДИЛ ДО нулевого значения через dirty_writeback_centisecs сотых секунды (обычно 500, но это значение можно изменить в файле /proc/sys/vm/dirty_writeback_centisecs). Функция-таймер wb timer fn вызывает функцию pdflush operation , передавая ей адрес функции обратного ВЫЗОВа wb_kupdate .

Функция wb kupdate просматривает кэш страниц в поисках старых грязных" индексных дескрипторов. Она выполняет следующие действия:
1. Вызывает функцию sync supers о для записи "грязных” суперблоков на диск. Хотя этот вызов, строго говоря, не имеет отношения к записи страниц, находящихся в кэше, он гарантирует, что никакой суперблок не останется грязным” дольше, чем в течение пяти (как правило) секунд.
2. Записывает в поле oider than this дескриптора writeback controi указатель на значение в тиках, соответствующее текущему времени минус 30 секунд. Тридцать секунд— это максимальный интервал, в течение которого странице разрешается быть грязной.
3. На основании переменной page state (своей у каждого процессора) определяет приблизительное количество грязных страниц, находящихся в данный момент в кэше.
4. Многократно вызывает функцию writeback_inodes , пока либо количество страниц, записанных на диск, не достигнет значения, определенного на предыдущем шаге, либо все страницы старше 30 секунд не будут записаны. В течение этого цикла выполнение функции может быть приостановлено, если очередь запросов переполнится.
5. Вызывает mod_timer ДЛЯ Запуска динамического таймера wb timer, который дойдет ДО нуля через dirty writeback centisecs СОТЫХ секунды С МО- мента вызова этой функции (или через одну секунду после настоящего момента, если выполнение этой функции затянется надолго).

Предыдущая страница | 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 108 109 110 111 | Следующая страница




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

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

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

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

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

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

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

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

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