1. Dive into System programming
Prelecture: HW0. The lecture will assume you've made significant progress on this homework
2. Dive into C programming
Prelecture: Intro to C Notes. The lecture will assume you've already reviewed and played with this material.
See the Wikibook C Gotchas
Labor day (no class)
4. getenv, scanf, getline, fork
See the Wikibook Input and Output
5. fork and waitpid
See the Wikibook forking
6. The fork-exec-wait pattern
See the Wikibook Fork, Exec, Wait
7. Introducing POSIX signals to suspend and kill child processes. SIGSTOP, SIGKILL, SIGINT
See the Wikibook process control
8. Advanced Signals
How to build a memory allocator. Placement algorithms. Fragmentation.
Hone your pointer skills when writing malloc and free.
Memory allocators part 2.
Introducing pthreads. stacks. Concurrency programming gotchas.
See Intro to Threads
Introducing pthreads. stacks, shared memory. creating and joining. Concurrency programming gotchas.
Why we need Mutex locks and semaphores. Basic usage of pthread implementations. Common gotchas.
Mutex and Condition Variable examples. How to implement a lock (The critical section problem).
Incorrect attempts to solve the Critical Section Problem. Introduction to Condition Variables.
Condition Variables. Implementing a semaphore using a Condition Variable.
See Condition Variables.
The Dining Philosophers problem
See Dining Philosophers.
Introduction to Deadlock. Coffman conditions.
See Virtual Memory.
Scheduling simulator. epoll
POSIX Pipes, files, memory II
ext2/3/4 filesystem. inode
file meta data
TCP/IP Header. IPv4 exhaustion. A web client
Passive sockets. The 4 server calls and what they do. Gotchas.
Socket Programming Gotchas. Intro to scheduling