This course examines the principles underlying the operating system design and implementation. Starting with the brief historical perspective of the evolution of the operating system, we will turn our focus to the kernel aspects of general purpose multi-tasking operating systems, cover most major components such as: process management, resource allocation, memory management, time management, file management, and security. A number of different actual operating systems (UNIX, Windows, Mac OS, etc) will be referenced throughout the course to illustrate real implementations. This course focuses mainly on the pragmatic aspects of modern operating systems. The assignments can be completed using any programming language although Java is the language of choice for this class.
This is a pragmatic operating system course with emphasis on individual software development process. After the end this course, students should have a basic practical understanding of the following:
Reading the texts prior to class attending will increase the students’ understanding. Moreover, the students benefit the most from their own experiments than from lecturing. In other word, self-teaching is the key to be successful in this course.
Week No. |
Topics |
1 |
Introduction to Operating System |
2 |
Operating System Structures |
3 |
Process |
4 |
Thread |
5 |
CPU Scheduling |
6 |
Process Coordination |
7 |
Deadlocks |
8 |
Midterm Examination |
9 |
Memory Management |
10 |
Virtual Memory |
11 |
File System-Interface |
12 |
File System-Implementation |
13 |
I/O Systems |
14 |
Protection |
15 |
Security |
16 |
Conclusion |
17 |
Final Examination |
The course grade will be based on
Item |
Weight |
Assignments |
30% |
Operating System Articles Reading |
10% |
10% |
|
Quizzes |
10% |
Exams |
40% |
The above description is only tentative; it may be changed at the instructor’s discretion.