Home - tcloaa/SystemProgramming GitHub Wiki
Forked from Lawrence Angrave from CS @ Illinois. https://github.com/angrave/SystemProgramming/wiki
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
C Programming
- HW0
- C Programming, Part 1: Introduction
- C Programming, Part 2: Text Input And Output
- C Programming, Part 3: Common Gotchas
- C Programming, Part 4: Strings and Structs
- C Programming, Part 5: Debugging
- Programming Tricks, Part 1
Memory Allocation
- Memory, Part 1: Heap Memory Introduction
- Memory, Part 2: Implementing a Memory Allocator
- Memory, Part 3: Smashing the Stack Example
HW0/Resources
Fork, Process
Fork Signal
- Process Control, Part 1: Wait macros, using signals
- Signals, Part 2: Pending Signals and Signal Masks
- Signals, Part 3: Raising signals
- Signals, Part 4: Sigaction
Thread
Thread Synchronization
- Synchronization, Part 1: Mutex Locks
- Synchronization, Part 2: Counting Semaphores
- Synchronization, Part 3: Working with Mutexes And Semaphores
- Synchronization, Part 4: The Critical Section Problem
- Synchronization, Part 5: Condition Variables
- Synchronization, Part 6: Implementing a barrier
- Synchronization, Part 7: The Reader Writer Problem
- Synchronization, Part 8: Ring Buffer Example
- Synchronization, Part 9: The Reader Writer Problem (part 2)
- Deadlock, Part 1: Resource Allocation Graph
- Deadlock, Part 2: Deadlock Conditions
- Dining Philosophers
Virtual Memory
Pipe
Networking
- 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
Scheduler
File System
- 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 8: Disk blocks example