netlib.narod.ru
< Назад |
Оглавление
| Далее >
Оглавление
Об авторе
Благодарности
Введение
Как организована эта книга
Для кого предназначена эта книга
Как читать эту книгу
Часть I. Код ядра Linux
arch/i386/kernel/entry.S
arch/i386/kernel/init_task.c
arch/i386/kernel/irq.c
arch/i386/kernel/irq.h
arch/i386/kernel/process.c
arch/i386/kernel/signal.c
arch/i386/kernel/smp.c
arch/i386/kernel/time.c
arch/i386/kernel/traps.c
arch/i386/lib/delay.c
arch/i386/mm/fault.c
arch/i386/mm/init.c
fs/binfmt_elf.c
fs/binfmt_java.c
fs/exec.c
include/asm-generic/smplock.h
include/asm-i386/atomic.h
include/asm-i386/current.h
include/asm-i386/dma.h
include/asm-i386/elf.h
include/asm-i386/hardirq.h
include/asm-i386/page.h
include/asm-i386/pgtable.h
include/asm-i386/ptrace.h
include/asm-i386/semaphore.h
include/asm-i386/shmparam.h
include/asm-i386/sigcontext.h
include/asm-i386/siginfo.h
include/asm-i386/signal.h
include/asm-i386/smp.h
include/asm-i386/softirq.h
include/asm-i386/spinlock.h
include/asm-i386/system.h
include/asm-i386/uaccess.h
include/linux/binfmts.h
include/linux/capability.h
include/linux/elf.h
include/linux/elfcore.h
include/linux/interrupt.h
include/linux/kernel.h
include/linux/kernel_stat.h
include/linux/limits.h
include/linux/mm.h
include/linux/module.h
include/linux/msg.h
include/linux/personality.h
include/linux/reboot.h
include/linux/resource.h
include/linux/sched.h
include/linux/sem.h
include/linux/shm.h
include/linux/signal.h
include/linux/slab.h
include/linux/smp.h
include/linux/smp_lock.h
include/linux/swap.h
include/linux/swapctl.h
include/linux/sysctl.h
include/linux/tasks.h
include/linux/time.h
include/linux/timer.h
include/linux/times.h
include/linux/tqueue.h
include/linux/wait.h
init/main.c
init/version.c
ipc/msg.c
ipc/sem.c
ipc/shm.c
ipc/util.c
kernel/capability.c
kernel/dma.c
kernel/exec_domain.c
kernel/exit.c
kernel/fork.c
kernel/info.c
kernel/itimer.c
kernel/kmod.c
kernel/module.c
kernel/panic.c
kernel/printk.c
kernel/sched.c
kernel/signal.c
kernel/softirq.c
kernel/sys.c
kernel/sysctl.c
kernel/time.c
mm/memory.c
mm/mlock.c
mm/mmap.c
mm/mprotect.c
mm/mremap.c
mm/page_alloc.c
mm/page_io.c
mm/slab.c
mm/swap.c
mm/swap_state.c
mm/swapfile.c
mm/vmalloc.c
mm/vmscan.c
Часть II. Комментарии кода ядра Linux
Глава 1. Введение в Linux
Краткая история создания Linux и Unix
Соглашение GNU General Public License
Процесс разработки Linux
Глава 2. Первое знакомство с кодом
Характерные особенности исходного кода ядра Linux
Использование свойств, специфических для gcc
Идиомы кода ядра
Сокращенное применение #if и #ifdef
Пример кода
printk
printk
Очереди ожидания
struct wait_queue
wait_event
__wait_event
__wake_up
Модули ядра
request_module
exec_modprobe
Конфигурирование и компиляция ядра
Конфигурирование ядра
Сборка ядра
Резервное копирование
Распространение изменений
Глава 3. Обзор архитектуры ядра
Цели проектирования
Ясность
Совместимость
Переносимость
Живучесть и безопасность
Быстродействие
Первый взгляд на архитектуру ядра
Более пристальный взгляд на архитектуру ядра
Так что же, ядро многослойное, модульное или какое?
Ядро Linux — в основном монолитное
Отношения между проектированием и реализацией
Структура каталогов исходного кода ядра
Documentation
arch
drivers
fs
include
init
ipc
kernel
lib
mm
net
scripts
Зависящий и независящий от архитектуры код
Глава 4. Инициализация системы
Загрузка ПК
Инициализация ядра Linux
start_kernel
BogoMIPS
calibrate_delay
Разбор параметров, передаваемых ядру
parse_options
checksetup
profile_setup
Init
init
Глава 5. Системные вызовы
Что такое системный вызов?
Прерывания, пространство пользователя и пространство ядра
Способы реализации системных вызовов
system_call
system_call
lcall7
lcall7
Примеры системных вызовов
sys_ni_syscall
sys_time
sys_reboot
sys_sysinfo
Глава 6. Сигналы, прерывания и время
Краткое замечание о блокировках
Сигналы
Структуры данных
sigset_t
struct sigaction
siginfo_t
struct signal_queue
Сервисные функции
Платформенно независимые версии функций
sigaddset
sigdelset
sigismember
sigfindinword
sigmask
Платформенно зависимые версии функций
sigaddset
sigdelset
sigismember
sigmask
sigfindinword
Функции работы с наборами
_SIG_SET_BINOP
_SIG_SET_OP
sigemptyset
sigaddsetmask
siginitset
Отправка сигналов
sys_kill
kill_something_info
kill_pg_info
kill_proc_info
send_sig_info
force_sig_info
recalc_sigpending
ignored_signal
do_signal
dequeue_signal
notify_parent
handle_signal
Другие функции, связанные с обработкой сигналов
sys_sigpending
do_sigation
sys_rt_sigtimedwait
Различия кодов для сигналов реального и не реального времени
sys_sigprocmask
sys_rt_sigprocmask
Прерывания
IRQ
Нижние половины
Структуры данных
Действия и IRQ
init_IRQ
init_ISA_irqs
set_intr_gate
setup_x86_irq
request_irq
free_irq
probe_irq_on
probe_irq_off
Обработчики и нижние половины аппаратных прерываний
do_IRQ
handle_IRQ_event
do_bottom_half
run_bottom_halves
Время и таймер
do_timer
timer_bh
update_times
update_wall_time
calc_load
run_old_timers
Очереди таймера
Глава 7. Процессы и потоки
Планирование и временные кванты
Процессы реального времени
Приоритеты
Идентификаторы процессов (PID)
Подсчет ссылок
Возможности
Представление процессов в ядре
Состояния процессов
Происхождение процессов: fork и __clone
do_fork
Выделение PID
get_pid
Запуск новой программы
do_execve
prepare_binprm
search_binary_handler
Форматы исполняемых файлов
Пример: обработчик двоичных файлов Java
do_load_java
load_java
java_format
init_java_binfmt
Планирование: посмотрите, как они выполняются!
Функции и политики планирования
schedule
switch_to
Вычисление адекватности процесса
goodness
Приоритеты не реального времени
sys_setpriority
update_process_times
Приоритеты реального времени
setscheduler
Учет ограничений
Возможности
sys_capget
sys_capset
Идентификаторы пользователей и групп
Ограничения ресурсов
Все хорошее когда-то кончается — а теперь, как это делается
exit
do_exit
__exit_files
wait
sys_wait4
release
Глава 8. Память
Виртуальная память
Свопинг и страничный обмен
Адресное пространство
Модуль управления памятью
Каталоги страниц и таблицы страниц
Буфера хранения результатов преобразования
__flush_tlb
Сегменты
Компоновка процессов памяти
struct vm_area_struct
struct vm_operations_struct
struct mm_struct
Операции со структурами VMA
find_vma
find_vma_prev
Страничный обмен
Подробный обзор средств защиты страниц
Копирование при записи
Ситуация отсутствия страницы
do_page_fault
handle_mm_fault
pgd_offset
pmd_alloc
pte_alloc
handle_pte_fault
update_mmu_cache
do_wp_page
Вывод страниц на диск
try_to_swap_out
Устройства свопинга
get_swap_page
swap_free
sys_swapoff
sys_swapon
Отображение памяти с помощью mmap
do_mmap
merge_segments
do_munmap
unmap_fixup
Динамическая память пространства пользователя и пространства ядра
brk
sys_brk
vmalloc и vfree
vmalloc
get_vm_area
vfree
Дамп памяти
elf_core_dump
Глава 9. Межпроцессное взаимодействие по принципу System V
Очереди сообщений
Краткий обзор очереди сообщений
struct msg
struct msqid_ds
msgque
msg_init
real_msgsnd
real_msgrcv
sys_msgget
sys_msgctl
findkey
newque
freeque
Семафоры
struct sem
struct semid_ds
struct sem_queue
struct sembuf
struct sem_undo
sys_semop
sys_semctl
sem_exit
append_to_queue
prepend_to_queue
remove_from_queue
try_atomic_semop
update_queue
count_semncnt
count_semzcnt
Разделяемая память
struct shmid_ds
struct shmid_kernel
newseg
sys_shmget
killseg
sys_shmctl
insert_attach
remove_attach
sys_shmat
shm_open
shm_close
sys_shmdt
Глава 10. Симметричная мультипроцессорная обработка
Понятия и примитивы параллельного программирования
Атомарные операции
Проверка и установка
Семафоры
down
down_interruptible
down_trylock
DOWN_VAR
DOWN_HEAD
DOWN_TAIL
__down
__down_interruptible
__down_trylock
up
__up
__wake_up
Блокировка в цикле
spin_lock_string
spin_unlock_string
read_lock
read_unlock
write_lock
write_unlock
Усовершенствованные программируемые контроллеры прерываний и связь между процессорами
smp_send_reschedule
send_IPI_single
Как поддержка симметричной мультипроцессорной обработки влияет на архитектуру ядра
Влияние SMP на планирование
schedule
__schedule_tail
reschedule_idle
reschedule_idle_slow
release
smp_local_timer_interrupt
smp_local_timer_interrupt
lock_kernel и unlock_kernel
lock_kernel
unlock_kernel
softirq_trylock
softirq_trylock
cli и sti
__global_cli
__global_sti
irq_enter и irq_exit
irq_enter
irq_exit
Глава 11. Настраиваемые параметры ядра
struct ctl_table
Поддержка /proc/sys
register_proc_table
unregister_proc_table
do_rw_proc
proc_dostring
proc_doutsstring
do_proc_dointvec
proc_dointvec_minmax
Системный вызов sysctl
do_sysctl
parse_table
do_sysctl_strategy
register_sysctl_table
unregister_sysctl_table
sysctl_string
sysctl_intvec
Приложение А. Linux 2.4
Приложение В. Общая лицензия GNU
Сопровождающий CD-ROM
netlib.narod.ru
< Назад |
Оглавление
| Далее >
Сайт управляется системой
uCoz