CS 4328 - Operating Systems

Course Description:

This course covers the principles of operating systems, algorithms for CPU scheduling, memory management, cooperating sequential processes and device management.

Prerequisite:

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.