Course CSC 345 - Operating Systems
Description This is an
introductory course to the theory, design and implementation of operating
systems. A typical operating system is the software layer between user
programs and the computer hardware. It provides abstractions (processes,
file system, etc.) of the underlying hardware that are easier to program, and
it manages the hardware resources.
We will cover the following basic operating system topics, including processes, CPU scheduling, synchronization, deadlock detection/avoidance, memory management, and file and I/O systems. Basic security and one of case studies may be covered as time permits.
Prerequisites CSC 240 and CSC 265
Time & Room T-TH 8:00 - 9:50, Nethken 243
Course URL http://www.latech.edu/~box/oss2005.htm
Instructor Dr. Chokchai (Box) Leangsuksun
Grader Hertong Song, firstname.lastname@example.org
Texts Silberschatz, Abraham, and Peter Galvin, Operating System Concepts, 7th Ed., John Wiley & Sons, 2004, ISBN 0- 471-69466-5, 921 pp.
Linux Kernel/device drivers books (e.g. Linux Device Drivers 2nd Edition by Rubini & Corbet, O'Reilly Pub, ISBN 0- 596-00008-1)
In addition to materials from the above main textbook, Iíll provide more references (URL or some books) when we discuss on some particular topics in the programming projects..
Grading Policy 3 Programming Projects 30% (see more details below)
2-3 Homework assignments 15%
Term Paper 10% April 21, 2005
Midterm Examination 20% April 26, 2005
Final Examination (comp.) 25% May 12, 2005
Presentations will be graded using this grade sheet
Programming There will be three programming projects and objective. I will explain
Projects More detail for each project and my expectation. Additional references will be provided in the class.
1. A simple shell is a basic shell program that supports commands with I/O re-direction.
Objective: To learn a user interface aspect (shell), how to interface to process management and basic I/O system calls.
2. Dining Philosophers: You will implement the DP solution using some synchronization mechanisms (e.g semaphore) and analyze the solution with regards to starvation of processes to see if it occurs regularly in practice.
Objective: To understand synchronization issues and to learn how to use process management and synchronization system calls
3. FIFO device driver
Objective: To understand I/O system and learn how to develop a device driver interface to a kernel.
|Class syllabus and Chapter 1 Introduction|
|Chapter 1 Introduction ( ppt )& Chapter 2 Computer System Structure|
|Chapter 3 (6th edition) Operating System Structure (pdf, ppt)|
|Project1 & Intro to Unix & Chapter 4 Process|
|Chapter 3 & Project 1 & sample code and Homework1|
|Chapter 3 new (chap 4 of 6th edition) Process (process concept, scheduling queue, context switching)|
|Chapter 3 Process (Collaborating processes, IPC and Unix IPC)|
|Chapter 3 Process (Unix IPC) sample2.tar|
|Chapter 4 (5 old) Thread ,|
|Chapter 5 (6 old) CPU Scheduling|
|Chapter 5 (6 old) CPU Scheduling & Homework2|
|Chapter 5 (6 old) CPU Scheduling & midterm review|
|April 26, 2005||Midterm exam|
|Chapter 6 (7 old) Process Synchronization|
|give out project 2 (see sample code in sample3.tar)|
|Chapter 7 Process Synchronization|
|Project 3, Linux Device Driver presentation and sample code|
|Chapter 7 (8 old) Deadlock Detection|
|Chapter7( 8 old) Deadlock Detection|
|Chapter 8 & 9: Memory Management and Virtual Memory|
|Chapter 12 File System Implementation|