Курс про это ваше ядро
Концепция
- Интерфейсы ядра
- Организация ядра
План
- (не в порядке изложения)
- Интерфейсы ядра
- ABI
- syscalls
- vdso, (vsyscall)
- procfs
- sysfs
- Для того, чтобы нормально рассказать про sysfs и kobjects, сначала нужно про базовые механизмы ядра рассказать
- debugfs
- Другие виртуальные ФС — configfs, selinuxfs, ...
- sysctl
- ABI
- "Механизмы" ядра
- Programming tricks и подходы к реализации, которые многое определяют
- lists, rbtree. RCU.
- containerof/offsetof, полиморфизм™
- callbacks
- kobjects (kref, kset, ...)
- kthread, workqueue, sync primitives
- MM
- Тут я вообще слабо в курсе
- struct page, struct vma
- buddy allocator
- slab/slob/slub
- Scheduler
- Модули
- Модульная магия (параметры, crc символов)
- Зависимости, алиасы
- VFS
- chardev, blkdev
- Драйверы ФС
- Сетевой стек
- Тема очень обширная, тут сформулировать выжимку на 2—4 лекции сложнее всего
- struct sk_buff
- netdev
- Роутинг, netfilter, BPF
- Scalability, DPDK
- netlink, SIOC
- Устройства
- struct bus, struct device
- Device model
- PCI(e)
- v4l2
- На этом мои познания заканчиваются
- Security
- LSM
- PAM
- Виртуализация™
- Namespaces/cgroups
- IOMMU, VFIO
- KVM
- Всякое
- IPC (sem/shm/msg)
- prctl
- get/set_thread_area
- quotactl
- sched_*
- xattr
- numa (get/set_mempolicy, move/migate pages)
- futex (WAKE_OP, PI, ROBUST)
- inotify
- epoll
- *fd (timerfd, eventfd, userfaultfd, ...)
- perf
- fallocate, copy_file_range, readahead, sendfile, sync_file_range, ...
- bpf
- ioctl
- Бездна
- v4l2
- term
- ...