Week 1. Course Information and OS Introduction
o Introduce the prerequisite, syllabus and assessment
o What is an OS?
o What does an OS do?
o OS basics
o What is a process?
o What is a shell?
o What is a system call?
o OS components
[Lab 1] Introduction to Basic Shell Commands and Fundamental C Programming.
Week 2. Fundamental OS Concepts
o Computer organization revision
o Kernel data structures in OS
o OS history
o Four fundamental OS concepts: Thread, Address space, Process and Dual model.
[Lab 2] Introduction to Shell and Shell Programming
Week 3. Process: from User Space
o What is a process?
o Process: Identification, Creation, Execution and Wait
o Process Life Cycle
[Lab 3] Process Operations, Signal and Pipe
Week 4. Process: from Kernel Space
o User time vs. System time
o System call: working inside the kernel
o Process Blossoming
o Process Life Cycle: a deeper view
[Lab 4] Project I Explanation and Process Exercise
Week 5. Signal
o Hardware Signals
o POSIX Signals Basics
o Handling POSIX Signals
o Foreground and Background Jobs
[Lab 5] Process Exercise (continue)
Week 6. Job Scheduling
o Context Switch
o Scheduling: Basics and Algorithms
[Lab 6] Implementation of Job Scheduling Algorithms
Week 7. Synchronization
o Inter Process Communication: Concepts, Race Condition and Mutual Exclusion
o User Level Synchronization: Busy Waiting, Spin Smarter and Semaphore
o Producer-Consumer Problem
o Dining Philosopher Problem
[Lab 7] Concurrency: Mutual Exclusion and Synchronization
Week 8. Thread and Deadlock
o Thread: Concepts and Benefits