c57a7841

Первое знакомство с кодом

Введение
Как организована эта книга
Для кого предназначена эта книга
Как читать эту книгу
Глава 1. Введение в Linux
Краткая история создания Linux и Unix
Соглашение GNU General Public License
Процесс разработки Linux
Глава 2. Первое знакомство с кодом
Характерные особенности исходного кода ядра Linux
Использование свойств, специфических для gcc
Идиомы кода ядра
Сокращенное применение #if и #ifdef

Пример кода
Printk
Очереди ожидания
Struct wait_queue


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
Глава 5. Системные вызовы
Что такое системный вызов?
Прерывания, пространство пользователя и пространство ядра
Способы реализации системных вызовов
System_call

Lcall7
Примеры системных вызовов
Sys_ni_syscall
Sys_time

Sys_reboot
Sys_sysinfo

Первое знакомство с кодом

Глава 6. Сигналы, прерывания и время
Краткое замечание о блокировках
Сигналы
Структуры данных
Sigset_t
Struct sigaction
Siginfo_t
Struct signal_queue
Сервисные функции

Платформенно-независимая версия функций для sigset_t
Sigaddset
Sigdelset
Sigismember
Sigfindinword
Sigmask
Платформенно-зависимая версия функций для sigset_t

Функции работы с наборами
_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
Run_bottom_halves - 2
Время и таймер
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

Первое знакомство с кодом

Приложение А. Linux 2.4
Уменьшение случаев бегства
До свидания, Java!
Разряды возможности ELF
Ускорение планировщика
Больше процессов
Существенное усовершенствование поддержки SMP-машин
Приложение B. GNU General Public License
Preamble
Terms And Conditions For Copying, Distribution And Modification

No Warranty
How to Apply These Terms to Your New Programs
Сопровождающий CD-ROM
Программное обеспечение:
Аппаратные средства:

Содержание раздела