Design of Operating Systems


General Material

  1. Syllabus (NEW August 12 2022)
  2. Ubiquitous Presenter Lecture Notes
  3. Ubiquitous Presenter Interactive Tutorial
  4. Piazza Discussion Board
  5. Virtual Box Software for Windows
  6. Operating Systems Virtual Machine
  7. Operating Systems Virtual Machine (On campus link)
  8. Research Paper Assignment (NEW August 12 2022)

Exam Information

  1. Midterm Exam Review Sheet (NEW August 12 2022)
  2. Final Exam Review Sheet (NEW August 12 2022)

Lectures

  1. Course Introduction (NEW August 12 2022)
  2. Review of C and the GCC Compiler Chain (NEW August 12 2022)
    • hello.c
    • respond.c
    • respond.h
    • makefile (NEW August 12 2022)
  3. An Introduction to Operating Systems (NEW August 12 2022)
  4. Operating Systems Structures (NEW August 12 2022)
  5. Operating Systems Structures and Virtual Machines (NEW August 12 2022)
  6. Processes
  7. Process Operations
  8. Communicating Between Processes
  9. Communicating Between Processes Continued
  10. Threads
  11. ATMEGA32 Example Operating System
  12. Threading Challenges
  13. CPU Scheduling
  14. Process Synchronization
  15. Semaphores, Monitors, and Condition Variables
  16. Exam Review / Catchup
  17. Midterm Exam
  18. Deadlocks
  19. Deadlocks Continued
  20. Memory Management
  21. Virtual Memory
  22. Thrashing
  23. File Systems Interface 1
  24. File Systems Interface 2
  25. File System Implementation
  26. I/O Systems
  27. Protection
  28. Security
  29. Review for final exam

Labs

  1. Lab 1: Getting used to Linux (NEW August 12 2022)
  2. Lab 2: A Linked List in C (NEW August 12 2022)
  3. Lab 3: A UNIX Word Counter - Part 1 (NEW August 12 2022)
  4. Lab 4: A UNIX Word Counter - Part 2 (NEW August 12 2022)
  5. Lab 5: Lets Chat: A lab where two partners can talk to each other. (NEW August 12 2022)
  6. Lab 6: A Dynamic Memory Manager. (NEW August 12 2022)

Videos

  1. Installing and starting your Virtual Box Virtual machine
  2. Installing Guest Additions to your Virtual Box Virtual Machine (Needed for file sharing with Windows)
  3. Developing with Emacs
  4. Debugging with gdb (A basic tutorial)
  5. Debugging with gdb (A second tutorial)