Skip to content
Travis CI User edited this page Jan 13, 2019 · 68 revisions

Home

Welcome to System Programming coursebook!

This coursebook is being built by students and faculty from the University of Illinois. It is based on a crowd-source authoring wikibook experiment by Lawrence Angrave from CS @ Illinois, but is now its own .tex based project

This book is an introduction to programming in C, and system programming (processes, threads, synchronization, networking and more!). We assume you've already had some programming experience, in an earlier computer science course.

  1. Systems Architecture
  2. Debugging and Environments
  3. Valgrind
  4. GDB
  5. Homework 0
  6. UIUC Specific Guidlines
  1. History of C
  2. Features
  3. Crash course intro to C
  4. Preprocessor
  5. Language Facilities
  6. Common C Functions
  7. System Calls
  8. C Memory Model
  9. Pointers
  10. Shell
  11. Common Bugs
  12. Logic and Program flow mistakes
  13. Topics
  14. Questions/Exercises
  1. Processes
  2. Process Contents
  3. Intro to Fork
  4. Waiting and Execing
  5. exec
  6. The fork-exec-wait Pattern
  7. Further Reading
  8. Questions/Exercises
  1. Introduction
  2. C Memory Allocation Functions
  3. Intro to Allocating
  4. Memory Allocator Tutorial
  5. Case study: Buddy Allocator (an example of a segregated list)
  6. Further Reading
  7. Topics
  8. Questions/Exercises
  1. Processes vs threads
  2. Thread Internals
  3. Simple Usage
  4. Pthread Functions
  5. Race Conditions
  6. Topics
  7. Questions
  1. Mutex
  2. Condition Variables
  3. Thread Safe Data Structures
  4. Candidate Solutions
  5. Working Solutions
  6. Implementing Counting Semaphore
  7. Ring Buffer
  8. Extra: Process Synchronization
  9. Extra: Higher Order Models of Synchronization
  10. External Resources
  11. Topics
  12. Questions
  1. Resource Allocation Graphs
  2. Coffman conditions
  3. Approaches to solving deadlock
  4. Dining Philosophers
  5. Viable Solutions
  6. Topics
  7. Questions
  1. Measurements
  2. Measures of Efficiency
  3. Scheduling Algorithms
  4. Topics
  5. Questions
  1. MMU and Translating Addresses
  2. Advanced Frames and Page Protections
  3. Pipes
  4. Named Pipes
  1. The OSI Model
  2. Layer 3: The Internet Protocol
  3. Layer 4: TCP and Client
  4. Layer 4: TCP Server
  5. Layer 4: UDP
  6. Layer 7: HTTP
  7. Nonblocking IO
  8. Remote Procedure Calls
  9. Topics
  10. Questions
  1. What is a filesystem?
  2. Storing data on disk
  3. Permissions and bits
  4. Virtual filesystems and other filesystems
  5. Memory Mapped IO
  6. Reliable Single Disk Filesystems
  7. Simple Filesystem Model
  8. Topics
  9. Questions

13. Signals

  1. The Deep Dive of Signals
  2. Sending Signals
  3. Handling Signals
  4. Signal Disposition
  5. Disposition in Child Processes (No Threads)
  6. Signals in a multithreaded program
  7. Topics
  8. Questions

14. Review

  1. C
  2. Threading
  3. Deadlock
  4. IPC
  5. Processes
  6. Mapped Memory
  7. Networking
  8. Signals
  1. Shell
  2. Stack Smashing
  3. Assorted Man Pages
  4. System Programming Jokes
  1. Shell Shock
  2. Heartbleed
  3. Dirty Cow
  4. Meltdown
  5. Spectre
  6. Mars Pathfinder
  7. Mars Again
  8. Year 2038
  9. Northeast Blackout of 2003
  10. Apple IOS Unicode Handling
  11. Apple SSL Verification
  12. Sony Rootkit Installation
  13. Civilization and Ghandi
  14. The Woes of Shell Scripting
  15. Appnexus Double Free
  16. ATT Cascading Failures - 1990