· History and philosophy of Unix/Linux and Open Source
· System architecture: from user interface to hardware
· Getting around: shell basics
· Overview: strace-ing “Hello World”
· Anatomy of a system call: uname()
· /proc – your window to the kernel
· Overview of common file systems: ext2/3, nfs, reiserfs, xfs, vfat
· Kernel file system architecture, from block devices to files & directories
· File related system calls: stat, access, open, close, read, write
· More file related system calls: readv, writev
· Overview of signals
· Typical usage
· Gotcha’s – traps and pitfalls
· What is a process
· Process environment
· Working with processes: fork, exec* and wait*
· Pipe and dup2, popen and pclose system calls
· FIFOs (named pipes)
· Shared memory
· Sockets
· Semaphores
· Time, gettimeofday system calls
· Alarm, setitimer
· Nanosleep
· Using the Unix clock
· Internal clocks
· TCP/IP overview
· The socket API
· Datagram v.s. connection-oriented sockets
· Typical client/server examples
· File locking with fcntl
· Asynchronous I/O via select
· The kernel boot process
· Building the kernel
· An overview of module programming
· Overview
· Variables
· Functions
· Examples
· Summary
· Q&A
· Evaluation