Title: Computer Science 635
1Computer Science 635
- Advanced Systems Programming
- Fall 2007
- Professor Allan Cruse
2Courses theme is
- Using the computer to study the computer
3Normal C/C programming
We would write most of this source-code
app.cpp but we would call some
library-functions e.g., open(), read(),
write(), malloc(), then our code would
get linked with standard runtime
libraries (So this is an example of code
reuse)
application
call
ret
standard runtime libraries
4Normal C/C programming
Many standard library functions perform
services that require executing privileged
instructions (which only the kernel can do)
application
call
Operating System kernel
ret
syscall
standard runtime libraries
sysret
user space
kernel space
5Linux Kernel Modules
Linux allows us to write our own
installable kernel modules and add them to a
running system
application
module
call
ret
call
Operating System kernel
ret
syscall
standard runtime libraries
sysret
user space
kernel space
6Requirements/Benefits
- An LKM has to be written using C -- but can
include inline assembly language - An LKM runs in kernel-space so it can do
anything that the CPU supports - So an LKM can
- directly control the peripheral devices
- modify the kernels scheduling algorithms
- examine the kernels hidden data-structures
7Course prerequisites
- Be a CS Graduate Student
- Be familiar with using Linux (or UNIX)
- Be able to write programs in C (or C)
- Be able to use an assembler
- Be acquainted with x86 architecture
- General-purpose registers (EAX, EBX, )
- Categories of instructions (MOV, ADD, )
- Ways to address memory (direct, indirect,)
8Recommended texts
Corbet, Rubini, and Kroah-Hartman, Linux Device
Drivers (3rd Ed), OReilly (2005), ISBN
0-596-00590-3 Bovet and Cesati, Understanding
the Linux Kernel (3rd Ed), OReilly (2006), ISBN
0-598-00565-2