Программирование в ядре Linux

!Программа курса находится в разработке!

Основные разделы курса

  • Введение
  • Tasks of the Kernel. Implementation Strategies. Elements of the Kernel overview.

  • Управление процессами и диспетчеризация
  • Process Priorities. Process Life Cycle. Process Representation. Process Management System Calls. Implementation of the Scheduler. The Real-Time Scheduling Class. Scheduler Enhancements

  • Управление памятью
  • Organization in the (N)UMA Model. Page Tables. Initialization of Memory Management. Management of Physical Memory. The Slab Allocator. Processor Cache and TLB Control.

  • Виртуальная память процессов
  • Virtual Process Address Space. Principle of Memory Mappings. Operations on Regions. Address Spaces. Memory Mappings. Reverse Mapping. Managing the Heap. Handling of Page Faults. Correction of Userspace Page Faults. Kernel Page Faults. Copying Data between Kernel and Userspace.

  • Блокировки и межпроцессное взаимодействие
  • Control Mechanisms. Kernel Locking Mechanisms. System V Interprocess Communication. Other IPC Mechanisms.

  • Драйверы устройств
  • I/O Architecture. Access to Devices. Association with the Filesystem. Character Device Operations. Block Device Operations. Resource Reservation. Bus Systems

  • Модули
  • Using Modules. Inserting Modules and Removing Modules. Automation and Hotplugging. Version Control.

  • Файловая подсистема
  • Filesystem Types. The Common File Model. Structure of the VFS. Working with VFS Objects. Standard Functions.
    The proc Filesystem. Simple Filesystems. Sysfs

  • Сетевая подсистема
  • The Layer Model of Network Implementation. Networking Namespaces. Socket Buffers. Network Access Layer. Network Layer. Transport Layer. Application Layer. Networking from within the Kernel.

  • Механизм системных вызовов
  • Basics of System Programming. Available System Calls. Implementation of System Calls.

  • Механизмы ядра
  • Interrupts. Software Interrupts. Tasklets. Wait Queues and Completions.

  • Управление временем
  • Implementation of Low-Resolution Timers. Generic Time Subsystem. High-Resolution Timers. Dynamic Ticks. Implementing Timer-Related System Calls. Managing Process Times

  • Механизмы буфферизации
  • Structure of the Page Cache. Address Spaces. Implementation of the Page Cache. Implementation of the Buffer Cache.

  • Механизмы синхронизации данных (*)
  • The pdflush Mechanism. Starting a New Thread. Thread Initialization. Performing Actual Work. Periodic Flushing. Central Control. Congestion. Forced Writeback. System Calls for Synchronization Control. Full Synchronization.

  • Механизмы вытеснения страниц (*)

Примерные темы практических занятий

  • Конфигурирование и сборка ядра
  • Разработка модулей. Модификация системы сборки. Управление зависимостиями
  • Исследование процессов. Разработка браузера процессов и потоков.
  • Реализация системных вызовов
  • Интерфейс netlink
  • Итерирование объектов ядра. sysfs, procfs, kobjects
  • Разработка драйвера файловой системы
  • Разработка инспектора виртуальной памяти
  • Разработка трассировщика ввода/вывода