Linux Kernel Internals

  • Soujanya
  • 8 (Registered)
  • (4 Reviews)
Linux Kernel
12
Mar

Description:

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. This may be in order to work on a project involving this directly or indirectly (for example, for those on an application development project on the Linux platform, this training would give them tremendous insight into optimization and code tweaking based on internal factors). Opensource (and closed-source commercial) contributors / developers (or to-be contributors) would find this training very useful as well.
This training is based on the latest 2.6.x / 3.x / 4.x Linux kernel. It starts with a quick and comprehensive look at the overall Linux OS architecture, monolithic kernel approach. It then moves into deep technical discussion of various kernel internal topics: kernel architecture, process descriptor, task list, task creation (with code walkthrough), CPU scheduler design and implementation, virtual memory and memory management.
In-depth coverage continues on: kernel build and the procedure to contribute to the kernel codebase; internal implementation of system calls and the framework of the Linux kernel module programming; the proc filesystem. Learning how to handle concurrency (race conditions, etc) both on uniprocessor and SMP systems is crucial; the why and how of advanced locking techniques is covered.
Throughout, professional / industry best practices are taught and encouraged.

 Duration:

2 days or 16 hours

 Prerequisites:

It is very important that the prerequisite(s) marked as Mandatory below be met by all participants intending to attend this training, either by having successfully attended a training program (mentioned below), or having the equivalent knowledge / skill sets.

Mandatory:

  • 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.

Optional / Advantageous:

  • Extensive user-space development experience on a POSIX

 Detailed Coverage:

  • 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

Enroll Now

Course Content

Time: 3 days

Curriculum is empty

Instructor

4.2

4 rating

5 stars
25%
4 stars
75%
3 stars
0%
2 stars
0%
1 star
0%
  • Sudeep Kumar

    Instructor who was friendly, knowledgeable and excellent overall

    The goods thing about the class was the Instructor who was friendly, knowledgeable, and excellent overall. The intermittent humour was excellent and helps continue the interest especially in Classroom training.
  • Vikash Yadav

    Builds on previous knowledge

    It really did build on previous knowledge since building kernel drivers as modules and installing them in the running system was needed at one point, and debugging why the kernel debug tools weren't working or were working in a limited fashion required clear understanding of internals and how they worked together. It was also a good bridge between an Admin/Advanced user usage of the kernel and kernel internals development
  • Jagannath G

    Instructor and course materials were awesome

    I like how the course package was well put together. The topics discussed were well written and in good order. This would serve as a good reference in the coming future.
  • Deepankar phogat

    I enjoyed the practical elements the best…

    The overview format was quite useful. Additional material/article references/mailing list summaries, etc were of immense value, and will continue well after the class is over. Many thanks! The development history of particular features, such as the scheduler - quite handy to see what lessons learned was, and how to promote updating to these newer features of the kernel.
Free

Customized, Immersive, Hands-On Driven

Includes

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

Enroll Now

Your Dream Course Is Only A Step Away




<


Your Dream Course Is Only A Step Away




<


Your Dream Course Is Only A Step Away




<