Внутреннее устройство ядра Linux 2.4

       

Внутреннее устройство ядра Linux 2.4


Построение образа ядра Linux
Загрузка: Обзор
Загрузка: BIOS POST
Загрузка: bootsector и setup
LILO в качестве загрузчика.
Высокоуровневая инициализация

SMP Загрузка на x86
Освобождение памяти после инициализации
Разбор командной строки
Структура задачи и таблица процессов
Создание и завершение задач и потоков ядра.

Планировщик
Реализация связанных списков в Linux
Очереди ожидания (Wait Queues)

Таймеры
Нижние половины (Bottom Halves)
Очереди задач
Tasklets
"Мягкие" IRQ
Как реализуются системные вызовы в архитектуре i386?
Атомарные (неделимые) операции
Блокировки (Spinlocks), Read-write блокировки и Big-Reader блокировки;

Семафоры
Поддержка загружаемых модулей
Кеш Inode и взаимодействие с Dcache

Регистрация/Дерегистрация файловых систем.
Управление файловыми дескрипторами
Управление файловой структурой

Управление Суперблоком и точкой монтирования
Пример виртуальной файловой системы: pipefs
Пример дисковой файловой системы: BFS

Домены исполнения и двоичные форматы
Кэш страниц в Linux
Механизмы IPC
Семафоры
Sys_semget()
Sys_semctl()

Sys_semop()
Незаблокированные операции над семафорами
Ошибка при выполнении операций над семафорами
Заблокированные операции над семафорами
Структуры даных поддержки механизма семафоров
Struct sem_array
Struct sem
Struct seminfo
Struct semid64_ds
Struct sem_queue

Struct sembuf
Struct sem_undo
Функции для работы с семафорами
Newary()
Freeary()
Semctl_down()
IPC_RMID
IPC_SET
Semctl_nolock()
IPC_INFO и SEM_INFO

SEM_STAT
Semctl_main()
GETALL
SETALL
IPC_STAT
GETVAL
GETPID
GETNCNT
GETZCNT
SETVAL

Count_semncnt()
Count_semzcnt()
Update_queue()
Try_atomic_semop()
Sem_revalidate()
Freeundos()
Alloc_undo()
Sem_exit()
Sys_msgget()
Sys_msgctl()

IPC_INFO ( или MSG_INFO)
IPC_STAT ( или MSG_STAT)
Sys_msgsnd()
Sys_msgrcv()
Структуры очередей сообщений
Struct msg_queue

Struct msg_msg
Struct msg_msgseg
Struct msg_sender
Struct msg_receiver
Struct msqid64_ds
Struct msqid_ds
Msg_setbuf
Newque()
Freeque()
Ss_wakeup()

Ss_add()
Expunge_all()
Load_msg()
Store_msg()
Free_msg()
Convert_mode()
Testmsg()
Pipelined_send()
Copy_msqid_to_user()
Copy_msqid_from_user()

Sys_shmget()
IPC_INFO
SHM_INFO
SHM_STAT, IPC_STAT
SHM_LOCK, SHM_UNLOCK
Sys_shmat()
Sys_shmdt()
Struct shminfo64

Struct shm_info
Struct shmid_kernel

Struct shmid64_ds
Struct shmem_inode_info
Newseg()
Shm_get_stat()
Shmem_lock()
Shm_destroy()
Shm_inc()
Shm_close()
Shmem_file_setup()
Универсальные примитивы, используемые всеми тремя механизмами IPC

Ipc_alloc()
Ipc_addid()
Ipc_rmid()
Ipc_buildid()
Ipc_checkid()
Grow_ary()
Ipc_findkey()
Ipcperms()
Ipc_lock()
Ipc_lockall()

Ipc_unlockall()
Ipc_get()
Ipc_parse_version()
Struct kern_ipc_perm
Struct ipc_ids
Struct ipc_id