Welcome to Angrave's crowd-sourced System Programming wiki-book! This wiki is being built by students and faculty from the University of Illinois and is a crowd-source authoring experiment by Lawrence Angrave from CS @ Illinois.

Rather than requiring an existing paper-based book this semester, we will build our own set of resources here.

0. HW0/Resources

  • [[HW0]]
  • [[Informal Glossary of basic terms|#Informal Glossary]]
  • [[#Piazza: When And How to Ask For Help]]
  • [[ Programming Tricks, Part 1 ]]
  • [[ System Programming Short Stories and Songs ]]

1. Learning C

2. Processes

3. Memory and Allocators

4. Intro to Pthreads

5. Synchronization

6. Deadlock

  • [[Deadlock, Part 1: Resource Allocation Graph]]
  • [[Deadlock, Part 2: Deadlock Conditions]]
  • [[Deadlock, Part 3: Dining Philosophers]]
  • [[Deadlock Review Questions]]

7. Inter-process Communication & Scheduling

8. Networking

  • [[ POSIX, Part 1: Error handling]]
  • [[ Networking, Part 1: Introduction]]
  • [[ Networking, Part 2: Using getaddrinfo ]]
  • [[ Networking, Part 3: Building a simple TCP Client ]]
  • [[ Networking, Part 4: Building a simple TCP Server ]]
  • [[ Networking, Part 5: Shutting down ports, reusing ports and other tricks ]]
  • [[ Networking, Part 6: Creating a UDP server ]]
  • [[ Networking, Part 7: Nonblocking I O, select(), and epoll ]]
  • [[ RPC, Part 1: Introduction to Remote Procedure Calls ]]
  • [[ Networking Review Questions ]]

9. File Systems

  • [[ File System, Part 1: Introduction ]]
  • [[ File System, Part 2: Files are inodes (everything else is just data...) ]]
  • [[ File System, Part 3: Permissions ]]
  • [[ File System, Part 4: Working with directories ]]
  • [[ File System, Part 5: Virtual file systems ]]
  • [[ File System, Part 6: Memory mapped files and Shared memory ]]
  • [[ File System, Part 7: Scalable and Reliable Filesystems ]]
  • [[ File System, Part 8: Removing preinstalled malware from an Android device ]]
  • [[ File System, Part 9: Disk blocks example ]]
  • [[ File Systems Review Questions ]]

10. Signals

Exam Practice Questions

Warning these are good practice but not comprehensive. The CS241 final assumes you fully understand and can apply all topics of the course. Questions will focus mostly but not entirely on topics that you have used in the lab and programming assignments.

  • [[Exam Topics]]
  • [[C Programming: Review Questions]]
  • [[Multi-threaded Programming: Review Questions]]
  • [[Synchronization Concepts: Review Questions]]
  • [[Memory: Review Questions]]
  • [[Pipe: Review Questions]]
  • [[Filesystem: Review Questions]]
  • [[Networking: Review Questions]]
  • [[Signals: Review Questions]] (todo)
  • [[System Programming Jokes]]