Предметний покажчик

А

Application Programing Interface,  API, 96

E

Exception, 99 110

G

gec, 40

анотація розгалужень, 41 вбудований асемблер, 41 функції з підстановкою тіла, 40

Granularity,  174

L

Linux Kernel Mail List, 405 lkml, 405

P

POSIX, 96

S

SHA, 425

SMP-привязка, 71

T

Task, 46

Translation lookaside buffer, TLB, 329

V

Virtual memory  area, 316

VMA, 316

A

Адресний простір плоске, 311 процесу, SI 1 313

сегментированное, 311 структура

address_space, 297 333 address_space_operations, 334

Алгоритм, 429

Апаратна платформа, 391

Атомарні операції, 177 бітові, 181

change_bit(),  182 clear_bit(), 182 set_bit(), 182

test_and_change_bit(),   182 test_and_clear_bit(),   182

test_and_set_bit(), 182 test_bit(), 182

налагодження, 381

тип atomic_t, 178 цілочисельні, 178

atomic_add(), 180 atomic_add_negative(), 180 atomic_dec_and_test(),  180 atomic_inc(), 180 atomic_inc_and_test(),  180 atomic_read(),  180 atomic_set(),  180 atomic_sub(),  180 atomic_sub_and_test(),   180

Б

Бінарне дерево, 314 базисне, 335 червоно-чорне, 320

Блок, 294

Блокування

advisory, IBS dcache_lock,  282 deadlock, 172

deadly embrace,  172 dentry-&gtd_lock, 282 inode_lock,  273

lock contention, 174

mmlist_lock, 314 page_table_lock,  329 sell-deadlock, 172 voluntary,  168 xtime_lock,  219

велика блокування ядра (BKL), 197 lock_kernel (), 198

unlock_kernel (), 198 захоплення, 198 звільнення, 198

взаімоблокіровка, 172 типу AВВА, 172

в обробниках нижніх половин, 159 захист даних, 186

конфлікт при захопленні, 168 174 навязувані, 168 необовязкові, 168 обовязкові, 168

порядок захоплення, 173 преемптівность, 184 застосування, 167 рекомендовані, 168

рекурсивность, 185 самоблокировки, 172 189 секвентной, 199 222

read_seqbegin (), 199 read_seqretry (), 199 write_seqlock (), 199 write_sequnlock (), 199 захоплення на запис, 200 перевірка читання, 200

семафори, 184 190

DECLARE_MUTEX(), 193

DECLARE_RWSEM(), 195 down(), 192  193 down_interruptible(), 193 down_read(), 195 down_write(),  195 init_MUTEX(), 193 init_rwsem(),   195 sema_init(), 193

up (), 192 up_read {), 195 up_write (), 195 бінарні, 192 захоплення, 194

захоплення на запис, 195

захоплення на читання, 195 ініціалізація, 193 194 інкремент, 192 використання, 196 мютекс, 192 звільнення, 194 особливості, 191 осовобожденіе, 195 перевірка, 192 реалізація, 190 лічильник, 192

читання-запису, 195

стан конфлікту, 183 спін-блокування, 183

read_lock(), 188 read_unlock(), 188 spin_is_locked(),  186 spin_lock(), 184 spm_lockbh() ,  187 spin_lock_init(), 186 spin_lock_irq{), 186 spin_lock_irqsave(),   185 spin_try_lock(),  186 spin_unlock(), 184 spin_unlock_bh(), 187 spin_unlock_irq{),  186 spin_unlock_irqrestore(),  185 write_lock(),  189 write_unlock(), 189

в обробниках нижніх половин, 187 записи, 188

захоплення, 187

захоплення на запис, 190 захоплення на читання, 190 ініціалізація, 187 190 використання, 189 196 звільнення, 187 налагодження, 186 381 преемптівность, 200 перевірка, 190

перевірка стан, 187 читання, 188

структури

completion, 196 rw_semaphore,  195 semaphore,  193

тупикова ситуація, 172

умовні змінні, 196

complete(), 197 wait_for_completion(),  197

Блоковий пристрій

RAID,  300

черга запитів, 301 сегмент, 298

структура

bio, 298 bio_vec,  298 buffer_head,   296 300 request, 301 request_queue, 301

Буфер, 295

швидкого перетворення адреси (TLB), 329 заголовок, 295

кільцевої, 377

повідомлень ядра, 377 стан, 296

У

Введення-виведення сторінковий, 331

Віртуальний ресурс память, 45 311 процесор, 45

Можливість використання, 103

CAP_SYS_TIME, 223

Час

абсолютне (wall time), 207 208 221 початок епохи (epoch), 222

операції gettimeofday (), 223 settimeofday (), 223

відносне, 207 time_after (), 216

time_after_eq(),  216 time_before(),   216 time_before_eq(),  216

роботи системи (uptime), 208

часовий пояс (time zone), 223

Вирівнювання, 396 природне, 396 масивів, 397

нестандартних типів даних, 397 обєднань, 397

змінних, 396 полів структур, 398 проблеми, 397 структур, 397

Витіснення, 66 164

г

Генератор випадкових чисел, 423

Головка, 295

Гранулярність, 174

cource,  174 fine,  174

рівень великих структурних одиниць, 174 рівень дрібних структурних одиниць, 174

д

Дайджест повідомлення, 425

Демон

klogd, 377 kupdated,  339 pdflush, 297 337 339

diity_background_ratio, 338 dirty_expire_centisecs, 338 dirty_rado, 338 dirty_writeback_centisecs, 338 laptop_mode, 338 запобігання зависання, 340

syslogd, 377

Денніс Рітчі, 23

Джон фон Нейман, 424

Дональд Кнут, 430

Завдання, 46

Завдання, 46

Латка

генерація, 412 подання, 413 застосування, 413 утиліти

diff, 412  diffstat, 413 patch,  412

Заповнення структур, 398

І

Інсталяція модулів, 38 347 ядра, 38

Виняткова ситуація, 99 110

Істинно випадкові числа, 423

До

Кен Томпсон, 23

Кластер, 295

Клод Шеннон, 423

Код ядра дерево, 34 латки, 34 інсталяція, 33 конфігурація, 35

make config, 36 make defconfig, 36 make gconfig, 36 make menuconfig, 36 make oldconfig, 37 make xconfig, 36 змінні, 35

файл config, 36 отримання, 33 збірка, 34

паралельна, 37

Константа

__BIG_ENDIAN,401

    LITTLE_ENDIAN, 401

BITTS_PER_LONG, 392

HZ, 401

PAGE_SHIFT, 403

PAGE_SIZE, 403

Конфігурація

CONFIG_PREEMPT, 171

CONFIG_SMP, 171

Кеш

буферний, 336 дисковий, 331 сторінковий, 331

Л

Лінус Торвальдс, 25

м

Масштабованість, 71 174

О (1), 419 431

О (n), 421 431 алгоритмів, 429

Машинне слово, 391

Багатозадачність

preemptive, 66 витісняє, 66

кооперативна, 66 преемптівная, 66

Безліч

більшого-О, 430 болиного-тета, 430

Модуль

завантажуваний, 343 depmod, 348

EXPORT_SYMROL(), 353

EXPORT_SYMBOL_GPL(), 353 insmod,  348

Makefile,  346

make modules_install, 347 modprobe,  348

MODULE_AUTHOR(), 345 module_exit(), 344 module_init(), 344

MODULE_LICENSE(), 345 354 module_param(), 351 module_param_array(), 353 module_param_array_named(), 353 module_param_named(), 352 module_param_string, 352

MODULE_PARM_DESC(),353 rmmod,  348

залежності, 347

завантаження, 348 інсталяція, 347 конфігурація, 349 параметри, 351 розробка, 343 збірка, 345

експорт символів, 353

н

Найменша верхня межа, 430

Неатомарние операції бітові, 182

find_first_bit(),   183 find_first_zero_bit(),  183 sched_find_first_bit(),  75

Нижні половини, 132 187

bottom half, 134

] Ocal_bh_disable (), 160 local_bh_enable (), 160 softirq, 135 136 заборона, 160 інтерфейс ВН, 134 148:

відкладене переривання, 134 169 188

open_softirq (), 140 raise_softirq (), 140 виконання, 137 витіснення, 137 генерація, 137

демон ksoftirqd, 138 147

індекс, 139 використання, 139 отдообработчік, 137 реєстрація, 140 тасклет, 141

структура softirq_action, 136 tasklet_struct, 141 144

тасклет, 134 139 169 187

DECLARE  _TASKLET(), 144

DECLARE_TASKLET_DISABLED(), 144

tasklet_disable (), 145 tasklet_disable_nosync (), 145 tasklet_enable (), 145 tasklet_hi_scbedule (), 142 tasklet_init (), 144 tasklet_kill (), 145 tasklet_schedule (), 142 145 обробник, 142 планування, 142 145 реалізація, 141 створення, 144

Про

Областьпамяті, 311 316 дерева, 320

інтервал адрес, 317 операції, 319

close(),319 nopage(), 320 open(), 319 populate{),320

права доступу, 317

списки, 320 структура

vm_area_struct, 319 vm_operations_struct,  319

прапори, 317

захисту, 325

Обєкт

kobject, 356 kobject_get(),   361 kobject_init(), 360 kobject_put(), 361

kobject_set_name(},   361

декларація, 360 захоплення, 361

ініціалізація, 360 звільнення, 361 присвоєння імені, 361 лічильник посилань, 361

Операційна система

Linux, 25

Multics, 23

Unix, 23

AT&ampT, 23

BSD, 24 особливості, 24

многозадачная, 65 визначення, 26

з віртуальною памяттю, 311

Налагодження

BUG(), 382

BUG_ON (), 382 dump_stack (), 382 атомарні операції, 381 генерація помилок, 382

дослідження і тестування, 385 конфігураційні параметри, 381 магічна клавіша SysRq, 382 обмеження частоти подій, 387 утиліта ksymoops, 380

функція kallsyms, 380

Отладчик gdb, 384 kdb, 385 kgdb, 385

Відкладене дію, 136

cancel_delayed_work(),  156 create_workqueue(),   156

DECLARE_WORK(),  154 flush_scheduled_work{),    155 flush_workqueue(),   156

INIT_WORK{),  154

queue_work{), 156 run_workqueue(),  152 schedule_delayed_work(),    155 schedule_work{), 155 work_handler(),  154

work queue, 149 демон keventd, 157 використання, 154 очікування завершення, 155 черги завдань, 134 157 планування, 155

робочий потік, 150 реалізація, 150 створення, 156 структура

cpu_workqueue_struct,  150 work_struct,   151 workqueue_struct,  150

Відображення анонімне, 312 325 виконуваного коду, 312

ініціалізованих змінних, 312

області введення-виведення, 319 налагодження, 381

спільно використовуване, 318 322

сторінки памяті, заповненої нулями, 312

файлу, 322 325 приватне, 318

Черга очікування add_wait_queue (), 82

DECLARE_WAIT_O_UEUE_HEAD(), 82 remove_wait_queue(),  83

п

Память

MMU, Memory Management Unit, 233 адреса, 311

верхня

налагодження, 381 переносимість, 403

віртуальна, 234 311

виділення

__alloc_percpu(), 261

    get_free_pages(),   238 alloc_page(),238 alloc_pages,  238 alloc_percpu(), 261

DEFINE_PER_CPU(), 260

get_zeroed_page(),   238

gfp_mask, 238 241 kmalloc(), 240 kmap(),  257 kmap_atomic(),  258 page_address(),  238 vmalloc(),246

віртуально безперервний ділянку, 247

тимчасове відображення, 258 високорівневе, 240 контекст процесу, 245 модифікатори зони, 242 модифікатори операцій, 241 нижня половина, 245 низкоуровневое, 238 обробник переривання, 245

відображення верхньої памяті, 257 постійне відображення, 257

повязана з процесором (per-CPU), 259 слябової розподільник (slab layer, slab

allocator),  248

списки вільних ресурсів, 248 стек ядра, 257

фізично безперервний ділянку, 238

240  246

прапори типів, 243 дескриптор, 313

виділення, 315

лічильник використання, 314

видалення, 315 захист, 41 зони, 235

ZONE_DMA, 235

ZONE_HIGHMEM, 235

ZONE_NORMAL, 235

верхня память (high memory), 234 236 нижня память (low memory), 236

кешування, 263

область, 311 звільнення

_free_pages(),239 free_page(),239 free_pages(),   239 free_percpu(),  261 kfree(),  245 kunmap(),  258

kunmap_atomic(), 259

vftee(),  247

прямий доступ (ПДП, DMA), 235 повязана з процесором

get_cpu_ptr(), 262 get_cpu_var(),   260 put_cpu_ptr(), 262 put_cpu_var(),  260

слябової розподільник, 47

kmem_cache_alloc(), 254 kmem_cache_create(), 252 kmem_cache_destroy{),  253

NUMA, 249 дескриптор сляба, 250 кеш, 249

налагодження, 381

сляб (slab), 249 стек

перевірка переповнення, 381 процесу, 312

ядра, 42 256

сторінка, 233

page_count (), 234 віртуальний адреса, 234 витіснення, 234 гігантська, 318

дані буфера, 297

змінена, 337 копіювання при записі, 54 нульова, 312

розмір, 402 прапори, 234

сторінковий кеш, 235

структура

kmem_cache_s,   250 mm_struct,  313 page, 234299

slab, 250

vm_area_struct,   316 319 zone, 237

фізична, 234

Паралелізм

pseudo-concurrency, 169 race condition, 164 безпека

при SMP-обробці, 170 при переривання, 170

захист даних, 170

істинний, 169 конкурентний доступ, 163 критичний ділянку, 164 багатопоточність, 57 багатопроцесорність, 403 псевдопараллелізм, 169

симетрична багатопроцесорність, 163

синхронізація, 164 стан гонок, 164

стан конкуренції за ресурс, 42 164

Перемикання контексту, 87

Переносимість, 43 389

Планування

передача управління, 66

з динамічним управлінням по пріоритетах, 68

з керуванням за пріоритетами, 68

Планувальник, 65

0 (1), 66 71 175 балансування навантаження, 83 бітова маска пріоритетів, 74 введення-виведення, 302

CFQ, 308 deadline,  304 noop,  309

затримки обслуговування, 305 ліфтовий алгоритм, 303 обєднання, 302 прогнозирующий, 307 злиття, 302

сортування, 302

з лімітом за часом, 304

з відсутністю операцій, 309 з повністю рівноправними

чергами, 308 масив пріоритетів, 74

активний, 76 минулий, 76

чергу виконання, 72 174 реального часу, 89 стратегія, 67

SCHED_FIFO,  89

SCHED_RR, 90 структура

prio_array,  74

runqueue,  72

Підсистема, 358

Порядок виконання, 180 барєр, 403

барєри, 180 202

barrier(), 204 mb(), 203 read_barrier_depends(),  203 rmb(), 202

smp_mb()(204 smp_rmb(), 204 smp_wmb(), 204

wmb(), 203

записи памяті, 203

компілятора, 204 читання памяті, 202

переносимість, 403

Порядок проходження

     be32_to_cpu(),401

     cpu_to_be32(),401

     cpu_to_le32(),401

     le32_to_cpus(),401 big-endian, 399

little-endian, 399 байтів, 399

визначення, 400 зворотний, 399 прямий, 399

Потік, 45 57 315

простору ядра, 59 316 kernel_thread (), 59

Преемптівность, 164 169

дані повязані з процесорами, 201 заборона, 200

preempt_disable(), 201 preerapt_enable{),  201

переносимість, 403

лічильник preempt_count, 89 160

Переривання, 27 109 169 427

/proc/interrupts, 123 do_IRQ(), 122

handler, 111

interrupt request line, 110 interrupt service routine, 111

IRQ, 110

ret_from_intr(), 123

верхня половина, 111 131 контекст, 111 119

лінія запиту, 110

нижня половина, 111 132 обробник, 111

add_interrupt_randomness(), 122 free_irq(), 114

request_irq(), 112

RTC, 117 shared, 116 швидкий, 113

опис, 115 звільнення, 114 реєстрація, 112 реєнтерабельним, 116

спільно використовуваний, 113 116 реалізація обробки, 121 управління, 124

cli(),  126 disable_irq(), 126 disable_irq_nosync(),  126 enable_irq(), 126 in_interrupt(), 127 in_irq(), 127 irq_disabled(), 127 local_irq_disable(),  125 local_irq_enable(), 125 local_irq_restore(), 125 local_irq_save(), 125

sti (), 126 synchronize_irq (), 126 заборона, 125 дозвіл, 125

прапор

SA_INTERRUPT, 113 117

SA_SAMPLE_RANDOM, 113 427

SA_SHIRQ, 113 116

Простір завдання, 27 користувача, 51 ядра, 27 51

Процес

I/O-bound, 67 ink, 52

parent, 52

processor-bound, 67 runnable, 65 timeslice, 66 wake_up(),83

адресний простір, 51 311 витіснення, 70

простору користувача, 88 простору ядра, 88

готовий до виконання, 65

дескриптор, 46 289

створення, 47 видалення, 61 завершення, 59

ідентифікатор, 48 ієрархія, 52

квант часу, 66 69 209 контекст, 52 104

кореневої каталог, 290 макрос current, 49

не готовий до виконання, 65 обмежений швидкістю введення-виведення, 67

обмежений швидкістю процесора, 67 операції

wakc_up (), 232 визначення, 45 парамтер

nice, 68

перепризначення батьківського процесу, 61 породжений, 46

пріоритет, 68 78

простір імен (namespace), 291 батьківський, 46

створення, 53 стан, 5 ()

sel_current_stale(), 51 set_task_state(), 51 sleep, 81

TASK_UNTERRUFTIBLE, 50 81 230

TASK_RUNNING, 50 70

TASK_STOPPED, 51

TASK_UNINTERRUPTIBLE, 51 81 230

TASK_ZOMBIE, 51 очікування, 81 заблоковане, 81 очікування, 170

структура

task_struct, 46 thread_info,  47

поточний каталог 290

трасування, 61 прапор

need_resched, 83 212

Псевдовипадкові числа, 423

Пул ентропії, 423 операції

add_inlerrupl_randomness(), 426 add_keyboard_randomness(),  426 add_mouse_randomness(),  426 get_random_bytes{), 427

р

Режим ноутбука, 338

З

Збірка модулів, 345

Звязаний список, 320 415 головного елемент, 417 двохзвязної, 415 ініціалізація, 418 кільцевої, 416 однослязний, 415 операції

     list_for_each(), 422 list_add(), 419 list_add_tail(),419

list_del(),419 list_del_init(),419 list_cmpty(), 420 list_cntry(), 421 list_for_each(),421 fist_for_each_prev(),  422 list_for_each_safe(),  422 list_move(), 420 list_move_tail(),420 iist_splice(),420 list_splice_init(), 420

переміщення, 416 421

структура елемента, 417

Сегмент bss, 312 даних, 312

коду, 312 . Сектор, 294

розмір, 294

Система, 26

Системний виклик, 27 errno, 97 errnosys_call_table, 98 getpid (), 97

int

А

Application Programing Interface,  API, 96

E

Exception, 99; 110

G

gec, 40

анотація розгалужень, 41 вбудований асемблер, 41 функції з підстановкою тіла, 40

Granularity,  174

L

Linux Kernel Mail List, 405 lkml, 405

P

POSIX, 96

S

SHA, 425

SMP-прив’язка, 71

T

Task, 46

Translation lookaside buffer, TLB, 329

V

Virtual memory  area, 316

VMA, 316

A

Адресний простір плоске, 311 процесу, SI 1; 313

сегментированное, 311 структура

address_space, 297; 333 address_space_operations, 334

Алгоритм, 429

Апаратна платформа, 391

Атомарні операції, 177 бітові, 181

change_bit(),  182 clear_bit(), 182 set_bit(), 182

test_and_change_bit(),   182 test_and_clear_bit(),   182

test_and_set_bit(), 182 test_bit(), 182

налагодження, 381

тип atomic_t, 178 цілочисельні, 178

atomic_add(), 180 atomic_add_negative(), 180 atomic_dec_and_test(),  180 atomic_inc(), 180 atomic_inc_and_test(),  180 atomic_read(),  180 atomic_set(),  180 atomic_sub(),  180 atomic_sub_and_test(),   180

Б

Бінарне дерево, 314 базисне, 335 червоно-чорне, 320

Блок, 294

Блокування

advisory, IBS dcache_lock,  282 deadlock, 172

deadly embrace,  172 dentry->d_lock, 282 inode_lock,  273

lock contention, 174

mmlist_lock, 314 page_table_lock,  329 sell-deadlock, 172 voluntary,  168 xtime_lock,  219

велика блокування ядра (BKL), 197 lock_kernel (), 198

unlock_kernel (), 198 захоплення, 198 звільнення, 198

взаімоблокіровка, 172 типу AВВА, 172

в обробниках нижніх половин, 159 захист даних, 186

конфлікт при захопленні, 168; 174 нав’язувані, 168 необов’язкові, 168 обов’язкові, 168

порядок захоплення, 173 преемптівность, 184 застосування, 167 рекомендовані, 168

рекурсивность, 185 самоблокировки, 172; 189 секвентной, 199; 222

read_seqbegin (), 199 read_seqretry (), 199 write_seqlock (), 199 write_sequnlock (), 199 захоплення на запис, 200 перевірка читання, 200

семафори, 184; 190

DECLARE_MUTEX(), 193

DECLARE_RWSEM(), 195 down(), 192;  193 down_interruptible(), 193 down_read(), 195 down_write(),  195 init_MUTEX(), 193 init_rwsem(),   195 sema_init(), 193

up (), 192 up_read {), 195 up_write (), 195 бінарні, 192 захоплення, 194

захоплення на запис, 195

захоплення на читання, 195 ініціалізація, 193; 194 інкремент, 192 використання, 196 м’ютекс, 192 звільнення, 194 особливості, 191 осовобожденіе, 195 перевірка, 192 реалізація, 190 лічильник, 192

читання-запису, 195

стан конфлікту, 183 спін-блокування, 183

read_lock(), 188 read_unlock(), 188 spin_is_locked(),  186 spin_lock(), 184 spm_lockbh() ,  187 spin_lock_init(), 186 spin_lock_irq{), 186 spin_lock_irqsave(),   185 spin_try_lock(),  186 spin_unlock(), 184 spin_unlock_bh(), 187 spin_unlock_irq{),  186 spin_unlock_irqrestore(),  185 write_lock(),  189 write_unlock(), 189

в обробниках нижніх половин, 187 записи, 188

захоплення, 187

захоплення на запис, 190 захоплення на читання, 190 ініціалізація, 187; 190 використання, 189; 196 звільнення, 187 налагодження, 186; 381 преемптівность, 200 перевірка, 190

перевірка стан, 187 читання, 188

структури

completion, 196 rw_semaphore,  195 semaphore,  193

тупикова ситуація, 172

умовні змінні, 196

complete(), 197 wait_for_completion(),  197

Блоковий пристрій

RAID,  300

черга запитів, 301 сегмент, 298

структура

bio, 298 bio_vec,  298 buffer_head,   296; 300 request, 301 request_queue, 301

Буфер, 295

швидкого перетворення адреси (TLB), 329 заголовок, 295

кільцевої, 377

повідомлень ядра, 377 стан, 296

У

Введення-виведення сторінковий, 331

Віртуальний ресурс пам’ять, 45; 311 процесор, 45

Можливість використання, 103

CAP_SYS_TIME, 223

Час

абсолютне (wall time), 207; 208; 221 початок епохи (epoch), 222

операції gettimeofday (), 223 settimeofday (), 223

відносне, 207 time_after (), 216

time_after_eq(),  216 time_before(),   216 time_before_eq(),  216

роботи системи (uptime), 208

часовий пояс (time zone), 223

Вирівнювання, 396 природне, 396 масивів, 397

нестандартних типів даних, 397 об’єднань, 397

змінних, 396 полів структур, 398 проблеми, 397 структур, 397

Витіснення, 66; 164

г

Генератор випадкових чисел, 423

Головка, 295

Гранулярність, 174

cource,  174 fine,  174

рівень великих структурних одиниць, 174 рівень дрібних структурних одиниць, 174

д

Дайджест повідомлення, 425

Демон

klogd, 377 kupdated,  339 pdflush, 297; 337; 339

diity_background_ratio, 338 dirty_expire_centisecs, 338 dirty_rado, 338 dirty_writeback_centisecs, 338 laptop_mode, 338 запобігання зависання, 340

syslogd, 377

Денніс Рітчі, 23

Джон фон Нейман, 424

Дональд Кнут, 430

Завдання, 46

Завдання, 46

Латка

генерація, 412 подання, 413 застосування, 413 утиліти

diff, 412  diffstat, 413 patch,  412

Заповнення структур, 398

І

Інсталяція модулів, 38; 347 ядра, 38

Виняткова ситуація, 99; 110

Істинно випадкові числа, 423

До

Кен Томпсон, 23

Кластер, 295

Клод Шеннон, 423

Код ядра дерево, 34 латки, 34 інсталяція, 33 конфігурація, 35

make config, 36 make defconfig, 36 make gconfig, 36 make menuconfig, 36 make oldconfig, 37 make xconfig, 36 змінні, 35

файл. config, 36 отримання, 33 збірка, 34

паралельна, 37

Константа

__BIG_ENDIAN,401

    LITTLE_ENDIAN, 401

BITTS_PER_LONG, 392

HZ, 401

PAGE_SHIFT, 403

PAGE_SIZE, 403

Конфігурація

CONFIG_PREEMPT, 171

CONFIG_SMP, 171

Кеш

буферний, 336 дисковий, 331 сторінковий, 331

Л

Лінус Торвальдс, 25

м

Масштабованість, 71; 174

О (1), 419; 431

О (n), 421; 431 алгоритмів, 429

Машинне слово, 391

Багатозадачність

preemptive, 66 витісняє, 66

кооперативна, 66 преемптівная, 66

Безліч

більшого-О, 430 болиного-тета, 430

Модуль

завантажуваний, 343 depmod, 348

EXPORT_SYMROL(), 353

EXPORT_SYMBOL_GPL(), 353 insmod,  348

Makefile,  346

make modules_install, 347 modprobe,  348

MODULE_AUTHOR(), 345 module_exit(), 344 module_init(), 344

MODULE_LICENSE(), 345; 354 module_param(), 351 module_param_array(), 353 module_param_array_named(), 353 module_param_named(), 352 module_param_string, 352

MODULE_PARM_DESC(),353 rmmod,  348

залежності, 347

завантаження, 348 інсталяція, 347 конфігурація, 349 параметри, 351 розробка, 343 збірка, 345

експорт символів, 353

н

Найменша верхня межа, 430

Неатомарние операції бітові, 182

find_first_bit(),   183 find_first_zero_bit(),  183 sched_find_first_bit(),  75

Нижні половини, 132; 187

bottom half, 134

] Ocal_bh_disable (), 160 local_bh_enable (), 160 softirq, 135; 136 заборона, 160 інтерфейс ВН, 134; 148:

відкладене переривання, 134; 169; 188

open_softirq (), 140 raise_softirq (), 140 виконання, 137 витіснення, 137 генерація, 137

демон ksoftirqd, 138; 147

індекс, 139 використання, 139 отдообработчік, 137 реєстрація, 140 тасклет, 141

структура softirq_action, 136 tasklet_struct, 141; 144

тасклет, 134; 139; 169; 187

DECLARE  _TASKLET(), 144

DECLARE_TASKLET_DISABLED(), 144

tasklet_disable (), 145 tasklet_disable_nosync (), 145 tasklet_enable (), 145 tasklet_hi_scbedule (), 142 tasklet_init (), 144 tasklet_kill (), 145 tasklet_schedule (), 142; 145 обробник, 142 планування, 142; 145 реалізація, 141 створення, 144

Про

Областьпамяті, 311; 316 дерева, 320

інтервал адрес, 317 операції, 319

close(),319 nopage(), 320 open(), 319 populate{),320

права доступу, 317

списки, 320 структура

vm_area_struct, 319 vm_operations_struct,  319

прапори, 317

захисту, 325

Об’єкт

kobject, 356 kobject_get(),   361 kobject_init(), 360 kobject_put(), 361

kobject_set_name(},   361

декларація, 360 захоплення, 361

ініціалізація, 360 звільнення, 361 присвоєння імені, 361 лічильник посилань, 361

Операційна система

Linux, 25

Multics, 23

Unix, 23

AT&T, 23

BSD, 24 особливості, 24

многозадачная, 65 визначення, 26

з віртуальною пам’яттю, 311

Налагодження

BUG(), 382

BUG_ON (), 382 dump_stack (), 382 атомарні операції, 381 генерація помилок, 382

дослідження і тестування, 385 конфігураційні параметри, 381 магічна клавіша SysRq, 382 обмеження частоти подій, 387 утиліта ksymoops, 380

функція kallsyms, 380

Отладчик gdb, 384 kdb, 385 kgdb, 385

Відкладене дію, 136

cancel_delayed_work(),  156 create_workqueue(),   156

DECLARE_WORK(),  154 flush_scheduled_work{),    155 flush_workqueue(),   156

INIT_WORK{),  154

queue_work{), 156 run_workqueue(),  152 schedule_delayed_work(),    155 schedule_work{), 155 work_handler(),  154

work queue, 149 демон keventd, 157 використання, 154 очікування завершення, 155 черги завдань, 134; 157 планування, 155

робочий потік, 150 реалізація, 150 створення, 156 структура

cpu_workqueue_struct,  150 work_struct,   151 workqueue_struct,  150

Відображення анонімне, 312; 325 виконуваного коду, 312

ініціалізованих змінних, 312

області введення-виведення, 319 налагодження, 381

спільно використовуване, 318; 322

сторінки пам’яті, заповненої нулями, 312

файлу, 322; 325 приватне, 318

Черга очікування add_wait_queue (), 82

DECLARE_WAIT_O_UEUE_HEAD(), 82 remove_wait_queue(),  83

п

Пам’ять

MMU, Memory Management Unit, 233 адреса, 311

верхня

налагодження, 381 переносимість, 403

віртуальна, 234; 311

виділення

__alloc_percpu(), 261

    get_free_pages(),   238 alloc_page(),238 alloc_pages,  238 alloc_percpu(), 261

DEFINE_PER_CPU(), 260

get_zeroed_page(),   238

gfp_mask, 238; 241 kmalloc(), 240 kmap(),  257 kmap_atomic(),  258 page_address(),  238 vmalloc(),246

віртуально безперервний ділянку, 247

тимчасове відображення, 258 високорівневе, 240 контекст процесу, 245 модифікатори зони, 242 модифікатори операцій, 241 нижня половина, 245 низкоуровневое, 238 обробник переривання, 245

відображення верхньої пам’яті, 257 постійне відображення, 257

пов’язана з процесором (per-CPU), 259 слябової розподільник (slab layer, slab

allocator),  248

списки вільних ресурсів, 248 стек ядра, 257

фізично безперервний ділянку, 238;

240;  246

прапори типів, 243 дескриптор, 313

виділення, 315

лічильник використання, 314

видалення, 315 захист, 41 зони, 235

ZONE_DMA, 235

ZONE_HIGHMEM, 235

ZONE_NORMAL, 235

верхня пам’ять (high memory), 234; 236 нижня пам’ять (low memory), 236

кешування, 263

область, 311 звільнення

_free_pages(),239 free_page(),239 free_pages(),   239 free_percpu(),  261 kfree(),  245 kunmap(),  258

kunmap_atomic(), 259

vftee(),  247

прямий доступ (ПДП, DMA), 235 пов’язана з процесором

get_cpu_ptr(), 262 get_cpu_var(),   260 put_cpu_ptr(), 262 put_cpu_var(),  260

слябової розподільник, 47

kmem_cache_alloc(), 254 kmem_cache_create(), 252 kmem_cache_destroy{),  253

NUMA, 249 дескриптор сляба, 250 кеш, 249

налагодження, 381

сляб (slab), 249 стек

перевірка переповнення, 381 процесу, 312

ядра, 42; 256

сторінка, 233

page_count (), 234 віртуальний адреса, 234 витіснення, 234 гігантська, 318

дані буфера, 297

змінена, 337 копіювання при записі, 54 нульова, 312

розмір, 402 прапори, 234

сторінковий кеш, 235

структура

kmem_cache_s,   250 mm_struct,  313 page, 234;299

slab, 250

vm_area_struct,   316; 319 zone, 237

фізична, 234

Паралелізм

pseudo-concurrency, 169 race condition, 164 безпека

при SMP-обробці, 170 при переривання, 170

захист даних, 170

істинний, 169 конкурентний доступ, 163 критичний ділянку, 164 багатопоточність, 57 багатопроцесорність, 403 псевдопараллелізм, 169

симетрична багатопроцесорність, 163;

синхронізація, 164 стан “гонок”, 164

стан конкуренції за ресурс, 42; 164

Перемикання контексту, 87

Переносимість, 43; 389

Планування

передача управління, 66

з динамічним управлінням по пріоритетах, 68

з керуванням за пріоритетами, 68

Планувальник, 65

0 (1), 66; 71; 175 балансування навантаження, 83 бітова маска пріоритетів, 74 введення-виведення, 302

CFQ, 308 deadline,  304 noop,  309

затримки обслуговування, 305 ліфтовий алгоритм, 303 об’єднання, 302 прогнозирующий, 307 злиття, 302

сортування, 302

з лімітом за часом, 304

з відсутністю операцій, 309 з повністю рівноправними

чергами, 308 масив пріоритетів, 74

активний, 76 минулий, 76

чергу виконання, 72; 174 реального часу, 89 стратегія, 67

SCHED_FIFO,  89

SCHED_RR, 90 структура

prio_array,  74

runqueue,  72

Підсистема, 358

Порядок виконання, 180 бар’єр, 403

бар’єри, 180; 202

barrier(), 204 mb(), 203 read_barrier_depends(),  203 rmb(), 202

smp_mb()(204 smp_rmb(), 204 smp_wmb(), 204

wmb(), 203

записи пам’яті, 203

компілятора, 204 читання пам’яті, 202

переносимість, 403

Порядок проходження

     be32_to_cpu(),401

     cpu_to_be32(),401

     cpu_to_le32(),401

     le32_to_cpus(),401 big-endian, 399

little-endian, 399 байтів, 399

визначення, 400 зворотний, 399 прямий, 399

Потік, 45; 57; 315

простору ядра, 59; 316 kernel_thread (), 59

Преемптівность, 164; 169

дані пов’язані з процесорами, 201 заборона, 200

preempt_disable(), 201 preerapt_enable{),  201

переносимість, 403

лічильник preempt._count, 89; 160

Переривання, 27; 109; 169; 427

/proc/interrupts, 123 do_IRQ(), 122

handler, 111

interrupt request line, 110 interrupt service routine, 111

IRQ, 110

ret_from_intr(), 123

верхня половина, 111; 131 контекст, 111; 119

лінія запиту, 110

нижня половина, 111; 132 обробник, 111

add_interrupt_randomness(), 122 free_irq(), 114

request_irq(), 112

RTC, 117 shared, 116 швидкий, 113

опис, 115 звільнення, 114 реєстрація, 112 реєнтерабельним, 116

спільно використовуваний, 113; 116 реалізація обробки, 121 управління, 124

cli(),  126 disable_irq(), 126 disable_irq_nosync(),  126 enable_irq(), 126 in_interrupt(), 127 in_irq(), 127 irq_disabled(), 127 local_irq_disable(),  125 local_irq_enable(), 125 local_irq_restore(), 125 local_irq_save(), 125

sti (), 126 synchronize_irq (), 126 заборона, 125 дозвіл, 125

прапор

SA_INTERRUPT, 113; 117

SA_SAMPLE_RANDOM, 113; 427

SA_SHIRQ, 113; 116

Простір завдання, 27 користувача, 51 ядра, 27; 51

Процес

I/O-bound, 67 ink, 52

parent, 52

processor-bound, 67 runnable, 65 timeslice, 66 wake_up(),83

адресний простір, 51; 311 витіснення, 70

простору користувача, 88 простору ядра, 88

готовий до виконання, 65

дескриптор, 46; 289

створення, 47 видалення, 61 завершення, 59

ідентифікатор, 48 ієрархія, 52

квант часу, 66; 69; 209 контекст, 52; 104

кореневої каталог, 290 макрос current, 49

не готовий до виконання, 65 обмежений швидкістю введення-виведення, 67

обмежений швидкістю процесора, 67 операції

wakc_up (), 232 визначення, 45 парамтер

nice, 68

перепризначення батьківського процесу, 61 породжений, 46

пріоритет, 68; 78

простір імен (namespace), 291. батьківський, 46

створення, 53 стан, 5 ()

sel_current_stale(), 51 set_task_state(), 51 sleep, 81

TASK_UNTERRUFTIBLE, 50; 81; 230

TASK_RUNNING, 50; 70

TASK_STOPPED, 51

TASK_UNINTERRUPTIBLE, 51; 81; 230

TASK_ZOMBIE, 51 очікування, 81 заблоковане, 81 очікування, 170

структура

task_struct, 46 thread_info,  47

поточний каталог. 290

трасування, 61 прапор

need_resched, 83; 212

Псевдовипадкові числа, 423

Пул ентропії, 423 операції

add_inlerrupl_randomness(), 426 add_keyboard_randomness(),  426 add_mouse_randomness(),  426 get_random_bytes{), 427

р

Режим ноутбука, 338

З

Збірка модулів, 345

Зв’язаний список, 320; 415 головного елемент, 417 двохзв’язної, 415 ініціалізація, 418 кільцевої, 416 однослязний, 415 операції

     list_for_each(), 422 list_add(), 419 list_add_tail(),419

list_del(),419 list_del_init(),419 list_cmpty(), 420 list_cntry(), 421 list_for_each(),421 fist_for_each_prev(),  422 list_for_each_safe(),  422 list_move(), 420 list_move_tail(),420 iist_splice(),420 list_splice_init(), 420

переміщення, 416; 421

структура елемента, 417

Сегмент. bss, 312 даних, 312

коду, 312 .. Сектор, 294

розмір, 294

Система, 26

Системний виклик, 27 errno, 97 errnosys_call_table, 98 getpid (), 97

int $0x80, 99

ioctl(), 101; 368 mmap(), 326 mmap2(),, 326 munmapO, 327 sys_ni_syscall(), 98 syscall, 97

syscall(), 106

доступ з простору користувача, 106

модифікатор asmlinkage, 98 номер, 98

обробник, 101

передача параметрів, 100 планувальника, 91

nice(),91 sched_get_priority_max{),  91 sched_get_priority_min(), 91; 92 sched_getaffinity(),  91 sched_getcheduler(), 91 sched_getparam(), 91 schcd_getscheduler(), 91    . sched_rr_get_interval(), 91 sched_setaffinity(),  91 sched_setparam(), 91 sched_setscheduler(), 91 sched_yield(),91;92

продуктивність, 99

процесорної прив’язки schcd_getaffinity (), 92 schcd_sctaffinity (), 92

реалізація, 101

реєстрація, 104 файлі entry.S, 98; 105

Повідомлення

Oops,  378

рівень виведення, 376

Спільнота розробників, 32; 405

maintainers,  412

відповідальні розробники, 412 відправка повідомлень про помилки, 412 список розсилки, 32; 405

Зосередженість в часі, 331

Стан

паніки, 378

Середня завантаженість системи, 219

Стиль написання вихідного коду, 406

ifdef, 410 indent,  411 typedef, 410

довгі рядки, 407

імена, 408

ініціалізація структур, 411

коментарі, 408 відступи, 406 фігурні дужки, 406 функції, 408

Сторінковий кеш, 331

структура address_space, 332 address_space_operations, 334

Структура

attribute,  357; 366 cdev, 356 kobj_type, 357 kobject, 356

kref, 362 kref_get(),  362 kref_init(),  362 kref_put(),  362

kset, 358 list_head,  417 subsystem, 358

Структурність, 174

т

Табліцастраніц, 327

PGD, 328

PMD, 328

РТЕ, 328

глобальний каталог, 328

каталог середнього рівня, 328 управління, 329

рівні, 328

Таймер, 139

APIC,  219

тимчасова відмітка (tick), 208 гранулярность, 211 декрементного лічильник, 218 динамічний, 208; 223

обробник, 226 затримки, 223

BogoMIPS, 229 mdelay (), 229 udelay (), 229 короткі, 229

чергу очікування, 232 за допомогою циклу, 227

імпульс (tick), 208

константа

HZ, 209

USER_HZ, 217 операції

add_timer(),225  del_timer(),  225 del_timer_sync(),  226 init_timer(),224 mod_timer(),225 schedule_timeout(), 230

змінна

jiffies,  225 jiffies_64, 214 xtime, 219; 221 jiffies, 213

переносимість, 401

переповнення, 215 переривання, 207; 208; 219

програмований інтервальний (PIT), 218 системний, 207; 218

обробник переривання, 219 спрацьовування, 208

структура

timer_list,  224 timespec,  222

лічильник відміток часу (TSC), 219 частота імпульсів (tick rate), 208; 209 годинник реального часу, 117; 218 ядра, 135; 223

Типи даних char, 396 sl6, 395

s32, 395 s64, 395 s8, 395 ul6 ,  395 u32, 395 u64, 395 u8,395

Трасування

викликів функцій, 378

У

Попередній виклик, 319

Рівень блочного введення-виведення, 294

Рівень подій

kobject_uevent(), 370 kobjcct_uevcnt_atomic{),  371

Пристрій

блокове, 293 символьне, 293

уніфікована модель представлення, 355

Ф

Фай л

System.map,  380

Файлова система

/ Ргос, 363 sysfs, 352; 363

HAL,  365 kobject_add(), 365

kobject_del (), 365 kobject_init (), 365 kobject_register (), 365 kobject_unregister (), 365 sysfs_create_file (), 367 sysfs_crcate_link (), 367 sysfs_remove_file (), 368 sysfs_remove_link (), 368 атрибути,  366

додавання файлів, 357; 366 кореневої каталог, 363 операція show (), 367 операція store (), 367 угоди, 368

структура sysfs_ops, 366

файли, 366 блок, 294

віртуальна (VFS), 265

диспетчер логічних томів (LVM), 273 додавання і видалення об’єктів, 365 каталог (directory), 268

метадані (metadata), 268 монтування (mount), 288

прапори mnt_flags, 289 узагальнений інтерфейс, 266 об’єктна орієнтованість, 269 операції

суперблок alloc_inode, 273 clear_inode, 274 delete_inode, 273 destray_inode, 273 dirty_inode, 273 drop_inode, 273 put_inode, 273

put_super,  273 read_inode, 273 remount_fs,  274 statfs,  273 sync_fs, 273

umount_begin, 274

unlockfs,  273 write_inode,  273 write_super,  273 write_super_lockfs,   273

файл

alo_fsync,  286 aio_read,  285 aio_write,  285 check_flags,   287 fasync,  286

flush,  286 fsync,  286 get_unmapped_area, 287 ioctl,  286

llseek, 285 lock, 286; 287 mmap,  286 open,286

poll, 285 read,  285 readdir,  285 readv,  286 release,  286 sendfile,  287 sendpage,  287 write,  285 writev, 287

файловий індекс

create,  276 follow_link, 277 getattr,  278

link,  277 listxattr,  278 lookup,  276; 278 mkdir,  277 mknod,  277 permission,  278 put_link,  277 readlink,  277 femovexattr,   278 rename,  277 rmdir,  277 setattr,  278

setxattr,  278

symlink,  277 truncate,  277 unlink,  277

елемент каталогу

d_compare, 282

d_delete,  282 d_hash,  282 d_iput,  282 d_release,  282 d_revalidate,  282

особливості Unix, 267 простір імен, 55

простір імен (namespace), 267; 291 шлях (path), 268

системні виклики, 266 структура

dentry,  279; 356 dentry_operations, 270; 281 file, 283

file_operations,   270;  284 file_struct,   270 file_system_type, 270; 288 files_struct, 289

fs_struct,  270; 289 inode,  274 inode_operations, 270; 276 namespace,  270; 289 super_block,  271 super_operations, 270; 272 vfsmount,  270; 288

суперблок (superblock), 268; 269; 270 керуючий блок (control block), 270 файловий індекс (inode), 268; 269; 274

кеш (icache), 281

файл (file), 267; 269; 283

елемент каталогу (dentry), 268; 269; 279

LRU, 280 кеш (dcache), 280 стану, 280 хеш-таблиця, 281

Функція

bread(),  332 clone(),54;57  commit_writc(), 335 context_switch(), 390 copy_from_user(),  102 copy_mm(), 315 copy_process(), 55 copy_to_user(), 102 dup_task_struct(), 55 early_printk(),376 exec(),  54

exit(),46;59 exit_mm(), 315 flnd_vma(),  323

find_VMA_intersection(),    324 find_vma_prev(),  324 fork(),46;54;315

madvice(),  319 mmap(),319;325 munmap(), 327 panic(),  382 prepare_wrife(),  335 printk(),  39; 375 readpage(),  335 release_task(),  61 schedule(),76;87;104

SetPageDirty(),335 switch_mm(), 390 switch_to(),390  unhash_process(), 61 vfork(),54;56 vma_link(),  326 wakeup_bdflush(),   337 wb_kupdate(),  338

X

Хеш-таблиця сторінок, 336

Ц

Циліндр, 295

е.

Ентропія, 423 оцінка, 424

Шеннона, 424

Я

Ядро

Linux, 30 версії, 31 розроблювальне, 31 стабільне, 31

схема привласнення імен, 31 tainted, 345

Unix, 29 дефекти, 374 микроядро, 29 модульне, 343 монолітне, 29; 343 особливості, 38 налагодження, 373

рівень подій, 369 екзоядро, 29

Науково-популярне видання

Роберт Лав

Розробка ядра Linux

2-е видання

Літературний редакторЕ.Д. Давидян

ВерсткаТ.Н. Артемеіко

Художній редакторСЛ. Чернокозінскій

Коректори JI.A. Гордієнко, А.В. Луценко, О.В. Мішутіна, В.В. Столяр

Видавничий дім “Вільямові”

101509, м. Москва, вул. Лісова, буд 43, стр. 1

Підписано до друку 27.07.2006. Формат 70×100/16.

Гарнітура Times. Друк офсетний. Ум. печ. л. 36,12. Уч.-вид. л. 28,86. Тираж 3000 прим. Замовлення № 2169.

Віддруковано за технологією CtP

у ВАТ “Друкарський двір” ім. А. М. Горького

197110, Санкт-Петербург, Чкаловський пр., 15.

Джерело: Лав, Роберт. Розробка ядра Linux, 2-е видання. : Пер. з англ. – М.: ТОВ «І.Д. Вільямс »2006. – 448 с. : Ил. – Парал. тит. англ.

x80, 99

ioctl(), 101 368 mmap(), 326 mmap2(),, 326 munmapO, 327 sys_ni_syscall(), 98 syscall, 97

syscall(), 106

доступ з простору користувача, 106

модифікатор asmlinkage, 98 номер, 98

обробник, 101

передача параметрів, 100 планувальника, 91

nice(),91 sched_get_priority_max{),  91 sched_get_priority_min(), 91 92 sched_getaffinity(),  91 sched_getcheduler(), 91 sched_getparam(), 91 schcd_getscheduler(), 91     sched_rr_get_interval(), 91 sched_setaffinity(),  91 sched_setparam(), 91 sched_setscheduler(), 91 sched_yield(),9192

продуктивність, 99

процесорної привязки schcd_getaffinity (), 92 schcd_sctaffinity (), 92

реалізація, 101

реєстрація, 104 файлі entryS, 98 105

Повідомлення

Oops,  378

рівень виведення, 376

Спільнота розробників, 32 405

maintainers,  412

відповідальні розробники, 412 відправка повідомлень про помилки, 412 список розсилки, 32 405

Зосередженість в часі, 331

Стан

паніки, 378

Середня завантаженість системи, 219

Стиль написання вихідного коду, 406

ifdef, 410 indent,  411 typedef, 410

довгі рядки, 407

імена, 408

ініціалізація структур, 411

коментарі, 408 відступи, 406 фігурні дужки, 406 функції, 408

Сторінковий кеш, 331

структура address_space, 332 address_space_operations, 334

Структура

attribute,  357 366 cdev, 356 kobj_type, 357 kobject, 356

kref, 362 kref_get(),  362 kref_init(),  362 kref_put(),  362

kset, 358 list_head,  417 subsystem, 358

Структурність, 174

т

Табліцастраніц, 327

PGD, 328

PMD, 328

РТЕ, 328

глобальний каталог, 328

каталог середнього рівня, 328 управління, 329

рівні, 328

Таймер, 139

APIC,  219

тимчасова відмітка (tick), 208 гранулярность, 211 декрементного лічильник, 218 динамічний, 208 223

обробник, 226 затримки, 223

BogoMIPS, 229 mdelay (), 229 udelay (), 229 короткі, 229

чергу очікування, 232 за допомогою циклу, 227

імпульс (tick), 208

константа

HZ, 209

USER_HZ, 217 операції

add_timer(),225  del_timer(),  225 del_timer_sync(),  226 init_timer(),224 mod_timer(),225 schedule_timeout(), 230

змінна

jiffies,  225 jiffies_64, 214 xtime, 219 221 jiffies, 213

переносимість, 401

переповнення, 215 переривання, 207 208 219

програмований інтервальний (PIT), 218 системний, 207 218

обробник переривання, 219 спрацьовування, 208

структура

timer_list,  224 timespec,  222

лічильник відміток часу (TSC), 219 частота імпульсів (tick rate), 208 209 годинник реального часу, 117 218 ядра, 135 223

Типи даних char, 396 sl6, 395

s32, 395 s64, 395 s8, 395 ul6 ,  395 u32, 395 u64, 395 u8,395

Трасування

викликів функцій, 378

У

Попередній виклик, 319

Рівень блочного введення-виведення, 294

Рівень подій

kobject_uevent(), 370 kobjcct_uevcnt_atomic{),  371

Пристрій

блокове, 293 символьне, 293

уніфікована модель представлення, 355

Ф

Фай л

Systemmap,  380

Файлова система

/ Ргос, 363 sysfs, 352 363

HAL,  365 kobject_add(), 365

kobject_del (), 365 kobject_init (), 365 kobject_register (), 365 kobject_unregister (), 365 sysfs_create_file (), 367 sysfs_crcate_link (), 367 sysfs_remove_file (), 368 sysfs_remove_link (), 368 атрибути,  366

додавання файлів, 357 366 кореневої каталог, 363 операція show (), 367 операція store (), 367 угоди, 368

структура sysfs_ops, 366

файли, 366 блок, 294

віртуальна (VFS), 265

диспетчер логічних томів (LVM), 273 додавання і видалення обєктів, 365 каталог (directory), 268

метадані (metadata), 268 монтування (mount), 288

прапори mnt_flags, 289 узагальнений інтерфейс, 266 обєктна орієнтованість, 269 операції

суперблок alloc_inode, 273 clear_inode, 274 delete_inode, 273 destray_inode, 273 dirty_inode, 273 drop_inode, 273 put_inode, 273

put_super,  273 read_inode, 273 remount_fs,  274 statfs,  273 sync_fs, 273

umount_begin, 274

unlockfs,  273 write_inode,  273 write_super,  273 write_super_lockfs,   273

файл

alo_fsync,  286 aio_read,  285 aio_write,  285 check_flags,   287 fasync,  286

flush,  286 fsync,  286 get_unmapped_area, 287 ioctl,  286

llseek, 285 lock, 286 287 mmap,  286 open,286

poll, 285 read,  285 readdir,  285 readv,  286 release,  286 sendfile,  287 sendpage,  287 write,  285 writev, 287

файловий індекс

create,  276 follow_link, 277 getattr,  278

link,  277 listxattr,  278 lookup,  276 278 mkdir,  277 mknod,  277 permission,  278 put_link,  277 readlink,  277 femovexattr,   278 rename,  277 rmdir,  277 setattr,  278

setxattr,  278

symlink,  277 truncate,  277 unlink,  277

елемент каталогу

d_compare, 282

d_delete,  282 d_hash,  282 d_iput,  282 d_release,  282 d_revalidate,  282

особливості Unix, 267 простір імен, 55

простір імен (namespace), 267 291 шлях (path), 268

системні виклики, 266 структура

dentry,  279 356 dentry_operations, 270 281 file, 283

file_operations,   270  284 file_struct,   270 file_system_type, 270 288 files_struct, 289

fs_struct,  270 289 inode,  274 inode_operations, 270 276 namespace,  270 289 super_block,  271 super_operations, 270 272 vfsmount,  270 288

суперблок (superblock), 268 269 270 керуючий блок (control block), 270 файловий індекс (inode), 268 269 274

кеш (icache), 281

файл (file), 267 269 283

елемент каталогу (dentry), 268 269 279

LRU, 280 кеш (dcache), 280 стану, 280 хеш-таблиця, 281

Функція

bread(),  332 clone(),5457  commit_writc(), 335 context_switch(), 390 copy_from_user(),  102 copy_mm(), 315 copy_process(), 55 copy_to_user(), 102 dup_task_struct(), 55 early_printk(),376 exec(),  54

exit(),4659 exit_mm(), 315 flnd_vma(),  323

find_VMA_intersection(),    324 find_vma_prev(),  324 fork(),4654315

madvice(),  319 mmap(),319325 munmap(), 327 panic(),  382 prepare_wrife(),  335 printk(),  39 375 readpage(),  335 release_task(),  61 schedule(),7687104

SetPageDirty(),335 switch_mm(), 390 switch_to(),390  unhash_process(), 61 vfork(),5456 vma_link(),  326 wakeup_bdflush(),   337 wb_kupdate(),  338

X

Хеш-таблиця сторінок, 336

Ц

Циліндр, 295

е

Ентропія, 423 оцінка, 424

Шеннона, 424

Я

Ядро

Linux, 30 версії, 31 розроблювальне, 31 стабільне, 31

схема привласнення імен, 31 tainted, 345

Unix, 29 дефекти, 374 микроядро, 29 модульне, 343 монолітне, 29 343 особливості, 38 налагодження, 373

рівень подій, 369 екзоядро, 29

Науково-популярне видання

Роберт Лав

Розробка ядра Linux

2-е видання

Літературний редакторЕД Давидян

ВерсткаТН Артемеіко

Художній редакторСЛ Чернокозінскій

Коректори JIA Гордієнко, АВ Луценко, ОВ Мішутіна, ВВ Столяр

Видавничий дім Вільямові

101509, м Москва, вул Лісова, буд 43, стр 1

Підписано до друку 27072006 Формат 70×100/16

Гарнітура Times Друк офсетний Ум печ л 36,12 Уч-вид л 28,86 Тираж 3000 прим Замовлення № 2169

Віддруковано за технологією CtP

у ВАТ Друкарський двір ім А М Горького

197110, Санкт-Петербург, Чкаловський пр, 15

Джерело: Лав, Роберт Розробка ядра Linux, 2-е видання : Пер з англ – М: ТОВ «ІД Вільямс »2006 – 448 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*