عبر الإنترنت
Linux Kernel Internals
  • مدة الدورة التدريبية: 16 ساعة إبدأ الآن
  • طريقة تقديم الدورة: عبر عرض الفيديو

تفاصيل الدورة

16 hours real time session + 10 hours monitored hands-on

Ideal For: This training is targeted primarily at software professionals – tech leads, system programmers / developers, maintainers and testers – who would like to delve much deeper into the internal functioning of the Linux operating system.

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.


  • Good working knowledge of and experience programming using the ‘C’
  • Successfully attended the “LINUX Fundamentals for Software Developers” training program -or-have the equivalent knowledge / skill
  • Successfully attended the “Advanced LINUX Programming” training program -or-have the equivalent knowledge / skill Implies knowledge / skill sets of: POSIX library and system call API set, process management, IPC mechanisms, etc.
  • Extensive user-space development experience on a POSIX

Course Content

  • Linux OS : Fundamental Prerequisites
  • OS Architecture
  • Processor Protection Levels
  • Architecture Layers
  • Monolithic / Microkernel / Hybrid OS Architectures
  • Tracking Linux kernel changes.
  • Practical Guide to Writing Kernel Code with LKMs
  • Introduction to Loadable Kernel Modules (LKMs)
  • Setting up your Test System
  • The Hello World Module
  • Compiling, the Makefile, Insertion and Removal
  • Lab Assignment.
  • Passing Parameters
  • Kernel API and ABI.
  • Lab Assignment.
  • Kernel Architecture and the Process Descriptor
  • Timer Interrupt and the Tick Rate (HZ)
  • Kernel Architecture in Brief
  • Kernel Mapping of Processes and Threads
  • Multiple Stacks
  • Process Descriptor
  • Task List
  • Accessing the current task with ‘current’
  • The task_struct.
  • Lab Assignments.
  • Linux Memory Management – Essentials
  • Introduction
  • What is VM; Hardware Paging
  • Linux VM Architecture
  • (n-Level) Arch-independent Paging on Linux
  • 64-bit VM Layout
  • Memory (De)Allocation API
  • GFP flags and action modifiers
  • vmalloc
  • Slab Cache API interfaces
  • Which API to Use When
  • Lab Assignments
  • Test the kmalloc limits
  • Verify the internal fragmentation (wastage).
  • Kernel Segment: Kernel Memory Map on the Linux OS
  •  Examining the Kernel Segment – kernel Virtual Address Space.
  • Process Virtual Memory Mapping
  • The mm_struct
  • Memory Regions and VMAs
  • Viewing VMAs
  • VMAs on 64-bit
  • proc: maps, pmap(1), smaps
  • smem, smemcap.
  • Low-Level API
  • Freeing Pages
  • kmalloc, kfree
  • GFP flags and action modifier
  • vmalloc
  • Slab Cache API interfaces
  • Which API to Use When
  • TheLinuxKernelScheduler
  • Introduction
  • Linux Process State Machine
  • Real-Time and Linux
  • POSIX Scheduling Policies
  • Realtime Policies
  • Priority Range
  • Pthreads soft-RT example
  • taskset
  • chrt
  • Linux as an RTOS: a mention of the PREEMPT_RT patch.
  • Control Groups
  • The Need
  • Cgroup Model
  • Configuration
  • Cgroups example for allocating cpu bandwidth.
  • Handling Concurrency in the Kernel
  • The Need for Atomicity
  • Causes of Concurrency in the kernel
  • Deadlock Prevention
  • Important Guidelines
  • Concurrency in the Kernel
  • Spinlocks and Mutexes
  • The Need
  • Understanding when to use which
  • The Semaphore Interface
  • A note on Spinlock Implementation
  • Specialized Locking
  • Atomic Operators
  • Reader-Writer Locks
  • Memory Barriers
تحديث بتاريخ 29 September, 2019

المتطلبات

Good working knowledge of and experience programming using the ‘C’
Successfully attended the “LINUX Fundamentals for Software Developers” training program -or-have the equivalent knowledge / skill
Successfully attended the “Advanced LINUX Programming” training program -or-have the equivalent knowledge / skill Implies knowledge / skill sets of: POSIX library and system call API set, process management, IPC mechanisms, etc.
Extensive user-space development experience on a POSIX