System Programming Syllabus
System Programming Syllabus
1. Introduction
Authors
2. Background
Systems Architecture
Debugging and Environments
Valgrind
GDB
Homework 0
University of Illinois Specific Guidelines
3. The C Programming Language
History of C
Crash course introduction to C
Language Facilities
The C and Linux
Common C Functions
C Memory Model
Pointers
Common Bugs
Logic and Program flow mistakes
Topics
Questions/Exercises
Rapid Fire: Pointer Arithmetic
4. Processes
File Descriptors
Processes
Process Contents
Intro to Fork
Waiting and Executing
exec
The fork-exec-wait Pattern
Further Reading
Questions/Exercises
5. Memory Allocators
Introduction
C Memory Allocation API
Intro to Allocating
Memory Allocator Tutorial
Case Study: Buddy Allocator, an example of a segregated list
Case Study: SLUB Allocator, Slab allocation
Further Reading
Topics
Questions/Exercises
6. Threads
Processes vs threads
Thread Internals
Simple Usage
Pthread Functions
Race Conditions
Topics
Questions
7. Synchronization
Mutex
Condition Variables
Thread-Safe Data Structures
Software Solutions to the Critical Section
Working Solutions
Implementing Counting Semaphore
Barriers
Ring Buffer
Extra: Process Synchronization
External Resources
Topics
Questions
8. Deadlock
Resource Allocation Graphs
Coffman Conditions
Approaches to Solving Livelock and Deadlock
Dining Philosophers
Viable Solutions
Topics
Questions
9. Virtual Memory and Interprocess Communication
Translating Addresses
mmap
Pipes
Named Pipes
Files
IPC Alternatives
Topics
Questions
10. Scheduling
High Level Scheduler Overview
Measurements
Measures of Efficiency
Scheduling Algorithms
Topics
Questions
11. Networking
The OSI Model
Layer 3: The Internet Protocol
Layer 4: TCP and Client
Layer 4: TCP Server
Layer 4: UDP
Layer 7: HTTP
Non-Blocking IO
Remote Procedure Calls
Topics
Questions
12. Filesystems
What is a filesystem?
Storing data on disk
Permissions and bits
Virtual filesystems and other filesystems
Memory Mapped IO
Reliable Single Disk Filesystems
Simple Filesystem Model
Topics
Questions
13. Signals
The Deep Dive of Signals
Sending Signals
Handling Signals
Blocking Signals
Signals in Child Processes and Threads
Topics
Questions
14. Security
Security Terminology and Ethics
Security in C Programs
Cyber Security
Topics
Review
15. Review
C
Processes
Memory
Threading and Synchronization
Deadlock
IPC
Filesystems
Networking
Security
Signals
16. Honors topics
The Linux Kernel
Containerization
17. Appendix
Shell
Stack Smashing
Compiling and Linking
Banker’s Algorithm
Clean/Dirty Forks (Chandy/Misra Solution)
Actor Model
Includes and conditionals
threads.h
Modern Filesystems
Linux Scheduling
The Curious Case of Spurious Wakeups
Condition Wait Example
Implementing CVs with Mutexes Alone
Higher Order Models of Synchronization
Actor Model and Goroutines
Scheduling Conceptually
Networking Extra
Assorted Man Pages
System Programming Jokes
18. Post Mortems
Shell Shock
Heartbleed
Dirty Cow
Meltdown
Spectre
Mars Pathfinder
Mars Again
Year 2038
Northeast Blackout of 2003
Apple IOS Unicode Handling
Apple SSL Verification
Sony Rootkit Installation
Civilization and Ghandi
The Woes of Shell Scripting
Appnexus Double Free
ATT Cascading Failures - 1990