Understanding the Linux Kernel


LXKer1 - Version:1
Description
The course describes in details the structure of the Linux kernel and the various mechanisms it contains. A deep understanding of the kernel components helps solving complicate problems, improving system performance and securing the system.
Intended audience
System managers and programmers who want to deepen their knowledge of Linux OS, or a first step for those who intend to become kernel programmers.
Expand All
  • Linux OS Overview
    • Operating system components
    • Operation modes
    • Linux kernel structure
    • Errors in kernel mode
    • User interface to the kernel
    • Kernel parameters
    • System calls
    • Timekeeping
    • Compiling the kernel
  • Linux memory management
    • The virtual address space
    • Mapping and translating virtual addresses
    • Paging
    • Physical memory allocation
    • I/O buffer cache
    • Linux memory usage
    • Some tunable parameters
    • Out Of Memory mechanism
  • Linux Process Management
    • Processes and threads representation
    • Process creation
    • Kernel threads
    • Process states
    • Signals
    • Process scheduling
  • Linux I/O
    • Accessing devices
    • I/O types
    • Direct Memory Access (DMA)
    • Host adapters
    • Linux device types
    • Device drivers
    • Device files
    • I/O system calls
    • I/O scheduling
  • The Boot Process
    • Boot loader stages
    • The kernel initialization
    • Process ID 1 (init)
  • Linux on ARM
    • What is ARM
    • ARM Linux vs x86 Linux
    • Device-tree
    • Embedded Linux
  • Crash Dump
    • Dump-capture kernel
    • kexec
    • kdump
    • Core collector
    • The kdump process
    • Forced crash
    • The crash utility
  • Virtualization
    • Containers support on Linux
    • Docker
    • Virtual Machines on Linux
  • Writing a device driver
    • Building a kernel module
    • Compiling the module
    • Register a module as a device driver
    • Adding operations to the driver
    • An interrupt handler
  • A knowledge of Linux usage and system management.
  • Basic knowledge of C programing language.