Kernel Programming
This is the home page for the "Kernel Programming" course.
Here, you will find (in a badly-organised form) all the
material, slides, and information needed to attend the course
Lessons:
- First lesson: 2018/1/22, 9:30 -> 12
- Second lesson: 2018/1/29, 9:30 -> 12
- Recording of an introduction to Linux kernel modules
- How to use a kernel module in a VM
- Modules that can crash or hang the kernel
- How to build a minimal OS to test a Linux kernel
- Third lesson: 2018/2/05, 9:30 -> 12, Palazzo Toscanelli, room 1
- Something about user space / kernel space interactions
- More advanced examples on misc devices
- Forth lesson: 2018/2/12, 9:30 -> 12, sede centrale, aula 10
- Misc devices, again (with mutexes for competitive synchronization)
- Cooperative synchronization on device files
- Coping with signals
- Cooperative synchronization with completions
- Fifth lesson: 2018/2/19, 9:30 -> 12, sede centrale, aula 6
- Possible solution for the proposed exercize
- Sixth lesson: 2018/2/26, 9:30 -> 12, sede centrale, aula 6
- Seventh lesson: Friday March 9, 15:00, at tecip in PC room
- Example about kernel threads and description of an exercize to be solved
- Discussion of a possible solution to the exercize
- Example about mutex debugging and lock dependencies
- Last lesson: Friday March 16, 15:00, at tecip in Grey room
- First part: the CPU scheduler in general and in Linux
- Second part: the fixed priority scheduling class in the Linux kernel
Slides:
Example Code:
Other Material:
- Basic OS image for testing the modules (built with https://gitlab.retis.sssup.it/l.abeni/BuildCore.git)
- To update this image, create a new cpio file by putting what you need in a directory, and then running "
find . | cpio -H newc -o | gzip > ../mod.gz" from inside the directory. The resulting .gz file can be concatenated with tinyfs.gz
- Precompiled Linux kernel (published for your convenience only, you are encouraged to compile your own kernel!)