Linux Kernel and Device Driver Development Training

  • Overview
  • Course Content
  • Drop us a Query

Linux Kernel and Device Driver Development Training focuses on the learning of Linux kernel, device driver, and real time operating system (RTOS). The course commences with providing information on process management and further goes deep into memory management, time management, scheduling, and interrupt handling in Linux environment.

The course then introduces the students to System Calls, Linux API’s for file operations, ipc, sockets etc. Design approaches are shown for soft- as well as hard- real time systems. The emphasis of the course content is on providing the students with actual work-oriented application skills. The course will provide the student with a life cycle view for designing multi-processing, multi-threading embedded systems.

By the completion of training, you will inculcate the following skillset:

  • Work on process management
  • Learn process management by understanding multitasking, Linux process scheduler policy, and scheduling algorithms
  • Understand the significance and types of system calls
  • Proper usage of memory management
  • Detailed understanding of Virtual File System, interrupt handlers, and time management
  • Writing device driver programs
  • Idea of Real Time operating System (RTOS)
Target audience
  • Students from third and fourth year of BE / B. Tech. courses (Computers, Electronics, Electronics & Telecommunication, Instrumentation, Computer Science, Information Technology).
  • Final year students of MCA/BCA/M.Sc-IT/M.Tech
  • Working professionals from embedded systems and related domains.
  • Professionals willing to develop device driver programming skills.
Prerequisites

Candidates having knowledge of Linux operating system along with shell scripting can undergo this training.

1. Process Management (kernel side) 

  • The Process
  • Process Descriptor and the Task Structure
  • Allocating the Process Descriptor
  • Storing the Process Descriptor
  • Process State
  • Manipulating the Current Process State
  • Process Context
  • Copy-on-Write
  • Forking
  • vfork()
  • Kernel Threads

2. Process Scheduling

  • Multitasking
  • Linux’s Process Scheduler Policy
    • I/O-Bound Versus Processor-Bound Processes
    • Process Priority
    • Time slice
    • The Scheduling Policy in Action
  • The Linux Scheduling Algorithm
    • Scheduler Classes
    • Process Scheduling in Unix Systems
    • Fair Scheduling
  • The Scheduler Entry Point
  • Wait Queues
  • Waking Up
  • Preemption and Context Switching

3. System Calls

  • System Calls
  • Examples of system calls
  • Examples of Standard APIs
  • System call Implementation
  • API-system Call-OS relationship
  • Types of system calls
  • Processor Affinity System Calls
  • Yielding Processor Time
  • Communicating with the Kernel
  • APIs, POSIX, and the C Library
  • Accessing the System Call from User-Space

4. Memory Management

  • Pages
  • Zones
  • Getting Pages
  • Getting Zeroed Pages
  • Freeing Pages
  • kmalloc()
  • gfp_mask Flags
  • Action Modifiers
  • Zone Modifiers
  • Type Flags
  • kfree()
  • vmalloc()
  • Slab Layer
  • Design of the Slab Layer
  • Slab Allocator Interface
  • Allocating from the Cache
  • The Process Address Space

5. The Virtual File system

  • Common File system Interface
  • File system Abstraction Layer
  • Unix File systems
  • VFS Objects and Their Data Structures
  • The Superblock Object
  • Superblock Operations
  • The Inode Object
  • Inode Operations
  • The Dentry Object
  • The File Object
  • File Operations
  • Data Structures Associated with File systems
  • Data Structures Associated with a Process

6. Interrupts and Interrupt Handlers                                                              

  • Top Halves verses Bottom Halves
  • Registering an interrupt handler
  • Interrupt context
  • Taslets
  • Softirq

7. An Introduction to Kernel Synchronization

  • Kernel Synchronization Methods
  • Spin locks
  • Reader-writer locks
  • Semaphores

8. Timers and Time Management

  • Jiffies
  • Hardware clocks and timers

9. LINUX DEVICE DRIVER

  • Introduction
  • Role of Device Driver
  • types of Device driver
  • loadable modules and its benefits
  • Functions used to load and unload modules
  • Passing parameters to a loadable module

10. Writing a device Driver Program

  • Important header files
  • Writing a simple module
  • Compiling and loading modules
  • Device information in /proc
  • Character driver
  • character driver basics
  • major and minor numbers
  • creating device files with mknod
  • registering a character device driver
  • Hand- on   Practice                                          
  • Character Device Driver writing
  • Userspace interaction
  • Proc/sys model
  • Lcd implementation
  • Understanding the serial device driver

11. RTOS

  • Introduction to RTOS
  • What is Real Time System?
  • Requirements of Real time System
  • Hard Real-time Systems and Soft Real-time Systems

12. Task

  • What is a task creation?
  • Unitask approach Vs multitask approach
  • Task states

13. Scheduling

  • Multitasking Kernel
  • Context switch
  • Priority based scheduling
  • Round Robin scheduling

14. Task functions

  • Task states  
  • Task hooks
  • Task synchronization

A Few Things You'll Love!

What our Students Speak

+