Linux Kernel Teaching¶
This is a collection of lectures and labs Linux kernel topics. The lectures focus on theoretical and Linux kernel exploration.
The labs focus on device drivers topics and they resemble "howto" style documentation. Each topic has two parts:
- a walk-through the topic which contains an overview, the main abstractions, simple examples and pointers to APIs
- a hands-on part which contains a few exercises that should be resolved by the student; to focus on the topic at hand, the student is presented with a starting coding skeleton and with in-depth tips on how to solve the exercises
This content is based on the Operatings Systems 2 course from the Computer Science and Engineering Department, the Faculty of Automatic Control and Computers, University POLITEHNICA of Bucharest.
You can get the latest version at http://github.com/linux-kernel-labs.
To get started build the documentation from the sources after installing docker-compose on you host:
cd tools/labs && make docker-docs
then point your browser at Documentation/output/labs/index.html.
Alternatively, you can build directly on the host (see tools/labs/docs/Dockerfile for dependencies):
cd tools/labs && make docs
- Operating Systems 2
- SO2 - General Rules and Grading
- SO2 Lecture 01 - Course overview and Linux kernel introduction
- Echipa
- Poziționare curs
- Resurse
- Comunitate
- Notare
- Obiectivele cursului
- Obiectivele laboratorului si a temelor
- Cursuri necesare
- Despre curs
- Lista cursuri
- Despre laborator
- Despre teme
- Lista teme
- Bibliografie curs
- Bibliografie laborator
- Lecture objectives:
- Basic operating systems terms and concepts
- User vs Kernel
- Typical operating system architecture
- Monolithic kernel
- Micro kernel
- Micro-kernels vs monolithic kernels
- Address space
- User and kernel sharing the virtual address space
- Execution contexts
- Multi-tasking
- Preemptive kernel
- Pageable kernel memory
- Kernel stack
- Portability
- Asymmetric MultiProcessing (ASMP)
- Symmetric MultiProcessing (SMP)
- CPU Scalability
- Overview of the Linux kernel
- SO2 Lecture 02 - System calls
- SO2 Lecture 03 - Processes
- SO2 Lecture 04 - Interrupts
- SO2 Lecture 05 - Symmetric Multi-Processing
- Lecture objectives:
- Synchronization basics
- Linux kernel concurrency sources
- Atomic operations
- Disabling preemption (interrupts)
- Spin Locks
- Cache coherency in multi-processor systems
- Optimized spin locks
- Process and Interrupt Context Synchronization
- Mutexes
- Per CPU data
- Memory Ordering and Barriers
- Read Copy Update (RCU)
- SO2 Lecture 06 - Address Space
- SO2 Lecture 07 - Memory Management
- SO2 Lecture 08 - Filesystem Management
- SO2 Lecture 09 - Kernel debugging
- SO2 Lecture 10 - Networking
- SO2 Lecture 11 - Architecture Layer
- SO2 Lecture 12 - Virtualization
- SO2 Lab 01 - Introduction
- SO2 Lab 02 - Kernel API
- SO2 Lab 03 - Character device drivers
- SO2 Lab 04 - I/O access and Interrupts
- SO2 Lab 05 - Deferred work
- SO2 Lab 06 - Memory Mapping
- SO2 Lab 07 - Block Device Drivers
- SO2 Lab 08 - File system drivers (Part 1)
- SO2 Lab 09 - File system drivers (Part 2)
- SO2 Lab 10 - Networking
- SO2 Lab 11 - Kernel Development on ARM
- SO2 Lab 12 - Kernel Profiling
- Collaboration
- Assignment 0 - Kernel API
- Assignment 1 - Kprobe based tracer
- Assignment 2 - Driver UART
- Assignment 3 - Software RAID
- Assignment 4 - SO2 Transport Protocol
- Assignment 7 - SO2 Virtual Machine Manager with KVM
- Introduction
- Lecture objectives:
- Basic operating systems terms and concepts
- User vs Kernel
- Typical operating system architecture
- Monolithic kernel
- Micro kernel
- Micro-kernels vs monolithic kernels
- Address space
- User and kernel sharing the virtual address space
- Execution contexts
- Multi-tasking
- Preemptive kernel
- Pageable kernel memory
- Kernel stack
- Portability
- Asymmetric MultiProcessing (ASMP)
- Symmetric MultiProcessing (SMP)
- CPU Scalability
- Overview of the Linux kernel
- System Calls
- Processes
- Interrupts
- Symmetric Multi-Processing
- Lecture objectives:
- Synchronization basics
- Linux kernel concurrency sources
- Atomic operations
- Disabling preemption (interrupts)
- Spin Locks
- Cache coherency in multi-processor systems
- Optimized spin locks
- Process and Interrupt Context Synchronization
- Mutexes
- Per CPU data
- Memory Ordering and Barriers
- Read Copy Update (RCU)
- Address Space
- Memory Management
- Filesystem Management
- Debugging
- Network Management
- Architecture Layer
- Virtualization
- Infrastructure
- Introduction
- Kernel modules
- Kernel API
- Character device drivers
- I/O access and Interrupts
- Deferred work
- Block Device Drivers
- File system drivers (Part 1)
- File system drivers (Part 2)
- Networking
- Kernel Development on ARM
- Memory mapping
- Linux Device Model
- Kernel Profiling