Course Description:
This course covers the principles of operating systems, algorithms for CPU scheduling, memory management, cooperating sequential processes and device management.Prerequisite:
- C or higher in CS 3339
- C or higher in CS 3358: Data Structures
Course Objectives:
1. |
Compare and contrast several operating systems. |
2. |
Understand what a system call is and how to use many of the standard Unix calls. |
3. |
Understand traditional concurrency in a Unix environment including the role of the fork() - exec() calls employed by shells to carry out commands. |
4. |
Understand how a shell/command line decoder works in various operating systems. |
5. |
Understand interprocess communication mechanisms such as semaphores, monitors, event counts, message passing, etc. Be exposed to traditional solutions of IPC problems using these mechanisms (e.g. Dining Philosophers, Reader/Writer, Bounded Buffer, Barrier Problems, etc.) |
6. |
Understand abstractions of a file system. Be familiar with the details of at least one OS file system(like Unix's). |
7. |
Understand what a driver is-what its relationship is to other components such as the interrupt system and file system. Look at details of at least one driver in some operating system. |
8. |
Understand some classical scheduling algorithms-not as much time is spent on this, contrary to what many texts would suggest. |
9. |
Understand memory management, including virtual memory. Be familiar with the roles played by the hardware vs those activities carried out by the OS itself. |
10. |
Understand how interrupts are handled by an OS. |
11. |
Understand the problems of critical sections in kernel or other operating system code. |
12. |
Be exposed to significant sections of code from 'real' operating systems. |
Section Info:
Lecture/Lab Hours: 3 hours lecture, 0 hours lab
Offered: Very frequently.