Training Categories
Click on a link to see more about each course.
Course Outline
Dates Offered (click on the desired date to register):
This course is currently not scheduled for the near future.
Linux Device Drivers and Kernel
Course Number: LIN2
Course Description:
Linux is the fastest growing segment of the OS market today. This course will introduce the participant on how to design, create and implement drivers for character devices, block devices, and network interfaces. Further, participants will also learn the fundamentals of the kernel, how it works, its components, memory management, file system and more.
Objectives:
By the end of the course the participant will be able to: Design a driver (character, block or network), Build a driver (character, block or network), Build and load modules, Debug a driver, Understand portability issues, Describe timing, Use memory management and DMA, Describe the Linux kernel, Describe how threads work on the Linux Kernel
Benefits:
Target Audience:
Prerequisites:
Practical experience in C programming and at least 6-months practical experience using Linux. An understanding of Operating System architecture is also required.
Course Length: 4 or 5 days
CourseTopics:
Introduction to the Linux Kernel The Kernel Classes of devices and modules Security issues Version Numbering Data Types Use of standard C types Assigning an explicit size to data items Interface-specific types Physical layout of the Kernel source Booting the kernel Before booting The init process The kernel directory The mm directory The fs directory Networking IPC and lib functions Drivers Architecture dependencies The task structure The process table Files and inodes Dynamic memory management Queues and semaphores System time and timers Main algorithms Signals Interrupts Booting the system Timer interrupts The scheduler Implementing system calls How does system calls actually work? Example of simple system calls Memory Management The architecture independent memory model Pages of memory Virtual address space Converting the linear address The page directory The page middle directory The page table The virtual address space for a process The user segment Virtual memory areas The system call brk Mapping functions The kernel segment Static memory allocation in the kernel segment Dynamic memory allocation in the kernel segment Block device caching Block buffering The update and bdflush processes List structures for the buffer cache Using the buffer cache Paging under Linux Page cache and management Finding a free page Page errors and reloading a page