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. Students will also be introduced to Linux in both user and system/kernel modes.

Prerequisites     CSC 222

Time & Room     T-TH 8:00 - 9:50, Nethken 120

Course URL

Instructor          Dr. Chokchai (Box) Leangsuksun

Grader             Apurba dhungana <>

Texts                Silberschatz, Abraham, and Peter Galvin, Operating System Concepts, 7th or 8th Ed., John Wiley & Sons, 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/assignments               30%     (see more details below)

                         2-5 Homework assignments             †††††††††††† 15%

                         Term Paper                                  ††††††††††††††††††††††† 10%     April 28, 2011

                         Midterm Examination                      ††††††††††††† 20%     April 14, 2011

                         Final Examination (comp.)               †††††††††††† 25%     May 12, 2011 (Grade for Degree Candidate - May 17)

                         Peer Evaluation form  and calculation formula for team projects

                         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 Materials




Class syllabus, intro of Linux and Chapter 1 Introduction

week 2

Chapter 1 Introduction ( ppt )& Chapter 2 Operating System Structure & emacs quick ref card

Homework 1 (programming assignment #1) & Intro to Unix & Chapter 4 Process


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  Thread , pthread  & sample codes


Chapter 5  CPU Scheduling

April 14, 2011April 12, 2011

Midterm exam


Chapter 6 Process Synchronization


project 2 (see sample code in sample codes)


Chapter 7  Deadlock Detection


Chapter 11 File System Implementation




Linux Device Driver presentation and sample code


Chapter 8 & 9: Memory Management and Virtual Memory

Homework 3

May 12, 2011

Final exam




Term paper topics can be found at