Linux Kernel Internals and Development (LFD420)

Linux Kernel
10
Sep
  • Raghavan
  • 0 (Registered)
  • (0 Review)

Course duration: 32 hours real time session + 10 hours monitored hands-on

Batches Available: Weekend and Weekday Batches available

Ideal For: The course is ideal for beginners and intermediate level developers.

Post course benefits: Lifetime access to online repository, Mock interview support, Project support

Recruitment support: eAgeIT will propose candidates of this program for any open opportunities with its client portfolio. We do not guarantee placement. This will be purely merit based support.

Course Overview:

  1. Introduction
    • Procedures
    • Kernel Versions
    • Kernel Sources and Use of git
  2. Kernel Architecture I
    • UNIX and Linux
    • Monolithic and Micro Kernels
    • Object-Oriented Methods
    • Main Kernel Tasks
    • User-Space and Kernel-Space
    • Kernel Mode Linux
  3. Kernel Programming Preview
    • Error Numbers and Getting Kernel Output
    • Task Structure
    • Memory Allocation
    • Transferring Data between User and Kernel Spaces
    • Linked Lists
    • String to Number Conversions
    • Jiffies
    • Labs
  4. Modules
    • What are Modules?
    • A Trivial Example
    • Compiling Modules
    • Modules vs Built-in
    • Module Utilities
    • Automatic Loading/Unloading of Modules
    • Module Usage Count
    • The module struct
    • Module Licensing
    • Exporting Symbols
    • Resolving Symbols **
    • Practice
  5. Kernel Architecture II
    • Processes, Threads, and Tasks
    • Process Context
    • Kernel Preemption
    • Real Time Preemption Patch
    • Dynamic Kernel Patching
    • Run-time Alternatives **
    • Porting to a New Platform **
    • Practice
  6. Kernel Initialization
    • Overview of System Initialization
    • System Boot
    • Das U-Boot for Embedded Systems**
  7. Kernel Configuration and Compilation
    • Installation and Layout of the Kernel Source
    • Kernel Browsers
    • Kernel Configuration Files
    • Kernel Building and Makefiles
    • initrd and initramfs
    • Practice
  8. System Calls
    • What are System Calls?
    • Available System Calls
    • How System Calls are Implemented
    • Adding a New System Call
    • Practice
  9. Kernel Style and General Considerations
    • Coding Style
    • kernel-doc **
    • Using Generic Kernel Routines and Methods
    • Making a Kernel Patch
    • sparse
    • Using likely() and unlikely()
    • Writing Portable Code, CPU, 32/64-bit, Endianness
    • Writing for SMP
    • Writing for High Memory Systems
    • Power Management
    • Keeping Security in Mind
    • Mixing User- and Kernel-Space Headers **
    • Practice
  10. Race Conditions and Synchronization Methods
    • Concurrency and Synchronization Methods
    • Atomic Operations
    • Bit Operations
    • Spinlocks
    • Seqlocks
    • Disabling Preemption
    • Mutexes
    • Semaphores
    • Completion Functions
    • Read-Copy-Update (RCU)
    • Reference Counts
    • Practice
  11. SMP and Threads
    • SMP Kernels and Modules
    • Processor Affinity
    • CPUSETS
    • SMP Algorithms – Scheduling, Locking, etc.
    • Per-CPU Variables **
    • Practice
  12. Processes
    • What are Processes?
    • The task_struct
    • Creating User Processes and Threads
    • Creating Kernel Threads
    • Destroying Processes and Threads
    • Executing User-Space Processes From Within the Kernel
    • Practice
  13. Process Limits and Capabilities **
    • Process Limits
    • Capabilities
  14. Monitoring and Debugging
    • Debuginfo Packages
    • Tracing and Profiling
    • sysctl
    • SysRq Key
    • oops Messages
    • Kernel Debuggers
    • debugfs
  15. Scheduling
    • Main Scheduling Tasks
    • SMP
    • Scheduling Priorities
    • Scheduling System Calls
    • The 2.4 schedule() Function
    • O(1) Scheduler
    • Time Slices and Priorities
    • Load Balancing
    • Priority Inversion and Priority Inheritance **
    • The CFS Scheduler
    • Calculating Priorities and Fair Times
    • Scheduling Classes
    • CFS Scheduler Details
  16. Memory Addressing
    • Virtual Memory Management
    • Systems With and Without MMU and the TLB
    • Memory Addresses
    • High and Low Memory
    • Memory Zones
    • Special Device Nodes
    • NUMA
    • Paging
    • Page Tables
    • page structure
    • Kernel Samepage Merging (KSM) **
  17. Huge Pages
    • Huge Page Support
    • libhugetlbfs
    • Transparent Huge Pages
  18. Memory Allocation
    • Requesting and Releasing Pages
    • Buddy System
    • Slabs and Cache Allocations
    • Memory Pools
    • kmalloc()
    • vmalloc()
    • Early Allocations and bootmem()
    • Memory Defragmentation
  19. Process Address Space
    • Allocating User Memory and Address Spaces
    • Locking Pages
    • Memory Descriptors and Regions
    • Access Rights
    • Allocating and Freeing Memory Regions
    • Page Faults
    • Practice
  20. Disk Caches and Swapping
    • Caches
    • Page Cache Basics
    • What is Swapping?
    • Swap Areas
    • Swapping Pages In and Out
    • Controlling Swappiness
    • The Swap Cache
    • Reverse Mapping **
    • OOM Killer
    • Practice
  21. Device Drivers**
    • Types of Devices
    • Device Nodes
    • Character Drivers
    • An Example
    • Practice
  22. Signals
    • What are Signals?
    • Available Signals
    • System Calls for Signals
    • Sigaction
    • Signals and Threads
    • How the Kernel Installs Signal Handlers
    • How the Kernel Sends Signals
    • How the Kernel Invokes Signal Handlers
    • Real Time Signals

Course Content

Time: 10 weeks

Curriculum is empty

Instructor

0.0

0 rating

5 stars
0%
4 stars
0%
3 stars
0%
2 stars
0%
1 star
0%
Free
$2600

$999

Includes

  • Real time virtual classes
  • Pre course reading material
  • Suppliment resources
  • Language: English
  • Certificate of completion

Enroll Now