تفاصيل الدورة
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
المتطلبات
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