• Чехол для iphone zero 5

    Чехлы для аппарата Apple iphone 5. Чехол для iphone zero 5.

    uppstore.ru

  • Доставка цветов

    Компания экзотических цветов и растений ME4.RU : курьерская доставка цветов по Москве

    www.zakaz-buketa.ru





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


Системные вызовы syncO, fsyncO и fdatasyncQ

В этом разделе мы кратко опишем три системных вызова, доступных пользовательским приложениям и позволяющих принудительно записать грязные” буферы на диск:
- sync — позволяет процессу записать на диск все грязные” буферы;
- fsynco — позволяет процессу записать на диск все блоки конкретного открытого файла;
- fdatasync — почти идентичен вызову fsynco, но не записывает блок индексного дескриптора этого файла.

Системный вызов sync

Служебная процедура sys synco системного вызова synco вызывает серию дополнительных функций:
wakeup_bdflush (0) ; sync_inodes(0) ; sync_supers; sync_filesystems(0) ; sync_filesystems(1); sync_inodes(1);
Как показано в предыдущем разделе, функция wakeup bdfiusho запускает поток ядра pdflush, который сбрасывает на диск все грязные страницы из кэша страниц.

Функция sync inodes сканирует список суперблоков в поисках грязных” индексных дескрипторов, которые следует сбросить на диск. Она принимает параметр wait, который определяет, должна ли она подождать, пока запись на диск будет выполнена, или нет. Функция сканирует суперблоки всех смонтированных в этот момент файловых систем. Для каждого суперблока, содержащего грязные” индексные дескрипторы, эта функция сначала вызывает функцию sync sb inodes для сброса на диск соответствующих грязных страниц, а затем функцию sync_biockdev — для явного сброса грязных страниц буферов, владельцем которых является блочное устройство, содержащее этот суперблок. Это делается потому, что метод суперблока write inode во многих дисковых файловых системах просто помечает буфер блока, соответствующий индексному дескриптору на диске, как грязный”. Функция sync_biockdev гарантирует, что изменения, внесенные функцией sync sb inodes , будут действительно записаны на диск.

Функция sync supers о записывает на диск "грязные" суперблоки, если необходимо, используя операции суперблока write super. Наконец, функция
sync filesystems ВЫПОЛНЯеТ МеТОД СуперблОКа sync fs для всех файловых систем, поддерживающих запись. Этот метод является вспомогательным инструментом, предлагаемым файловой системе на случай, если ей понадобятся какие-то специальные операции при каждой синхронизации. Он используется только в журналируемых файловых системах, например, в Ext3 Обратите внимание, ЧТО функции sync_inodes И sync filesystems ВЫЗЫ- ваются дважды, один раз с параметром wait, равным нулю, а второй — с этим параметром, равным единице. Это сделано не случайно: вначале они быстро сбрасывают на диск незаблокированные индексные дескрипторы, а затем ждут разблокирования каждого незаблокированного индексного дескриптора и записывают их на диск по одному.

Предыдущая страница | 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. Этот дескриптор содержит всю информацию, необходимую ядру для работы с блоком, так что перед обработкой блока ядро обязательно проверяет голову...