🔩 Example and activity code from UWaterloo SE350: Operating Systems! Made in Winter 2023.
Unless otherwise stated in code comments, these code examples are or based upon the notes and lecture content in Jeff Zarnett's SE350 repository. SE350: Operating Systems is a Software Engineering course at the University of Waterloo. If there is something in this repository that is incorrect or should be taken down, please let me know!
- Lecture 1 - N/A
- Lecture 2 - Review of Computer Architecture: Reading from Disk example (system-call-read-from-disk.c)
- Lecture 3 - The File System: personal example (file-system-fun.c)
- Lecture 4 - N/A
- Lecture 5 - Processes in UNIX: examples (basic-fork.c and fork-design-solution.c)
- Lecture 6 - Inter-Process Communication: example (parent-to-child-message.c) and external example (signals.c)
- Lecture 7 - Sockets: in-class exercise (sockets.c) and snippet (sockets-server.c)
- Lecture 8 - Network Communication: external example (datagrams.c) and snippet/example (curl.c)
- Lecture 9 - Pipes and Shared Memory: examples (parent-to-child-message-with-pipes.c, parent-to-child-message-with-shared-memory.c, and memory-mapping.c)
- Lecture 10 - Threads: example (basic-thread.c)
- Lecture 11 - Threads and Concurrency: example (data-pass-basic-thread.c)
- Lecture 12 - N/A
- Lecture 13 - Semaphores: example with some personal amendments (linked-list-integrity.c)
- Lecture 14 - N/A
- Lecture 15 - The Producer/Consumer Problem: examples (basic-producer-consumer.c and parallel-mutex-producer-consumer.c)
- Lecture 16 - The Readers/Writers Problem: examples that have had personal amendments (basic-reader-writer.c and basic-search-insert-delete.c)
- Lecture 17 - Deadlock: external examples that solve the Dining Philosopher's Problem two ways (dining-philosophers-1.c and dining-philosophers-2.c)
- Lecture 18-Lecture 35 - N/A (except for the in-class exercise on caching: feast.c)