Oregon Institute of Technology

Computer Systems Engineering Technology


CST 352 – Operating Systems


James N. Long

Office:                      Purvine Hall #179

Office Phone:            885-1580


Jim's Schedule

Email:                       james.long@oit.edu     

Web Page:                http://www.jnltech.com

Class: (3-3-4)



Text Book:               Operating Systems Concepts -Essentials

                                 ISBN: 978-0-470-88920-6





"We eat our own dog food."

The blue screen of death happens for a reason. The third law of software dynamics applies greatly to the operating system. In software engineering, our systems are transformed from order (a beautifully architected PCB and deterministic finite state machines), to disorder (throw in preemptive multitasking and things go non-deterministic). Complete understanding of this phenomenon is the goal of this course. The underlying structure of the OS should not be a mystery to any developer in Computer Science. When your computer "blue-screens", you should have a basic understanding of the information is presenting. You will develop a preemptive multitasking OS kernel then use it to solve some basic problems.

"We eat our own dog food."


The problems presented in this course are intended to be “real-world” problems in content and scope. Operating systems are difficult to program, develop, and most of all, debug. EXPECT TO SPEND LARGE AMOUNTS OF TIME ON THE PROJECTS AND ENCOUNTER PROBLEMS THAT REQUIRE RESEARCH AND PERSISTENCE TO SOLVE. This course will challenge your current knowledge of C and C++. Bad habits will bite you and cause you grief.


Course Description


Catalog Description: Issues in operating system design. Topics include supervisor calls, concurrent programming, semaphores, interrupt handling. Study of primary and secondary memory management, file systems, deadlock detection and prevention, and operation system security.

  Prerequisite: CST 211 – pass with a C or better.

The course will focus on operating systems theory from the hardware layer through the system call and application layer support. Labs are intended to support the theory presented in lecture. Homework assignments will focus on implementation of different OS components. The problems will be difficult and require persistence, creative problem solving, and hard work.


  1. Operating Systems Overview
  2. Operating Systems History
  3. Processes and Threads
    1. State Machine
    2. Thread Dispatching
    3. Process Dispatching
    4. Scheduling
    5. Race Conditions
    6. Synchronization Primitives
    7. Classic Problems
  4. Deadlock
    1. Resource Allocation
    2. Conditions
    3. Detection
    4. Recovery
    5. Avoidance
  5. Memory Management
    1. Heap Local Management
    2. Swapping
    3. Virtual Memory
    4. Paging
    5. Segmentation
  6. I/O
    1. Polled
    2. Interrupt Driven
    3. DMA
    4. Buffering
    5. Disk
  7. File Management
    1. Structure
    2. Operations
    3. Directories
    4. FAT
    5. HFS
    6. NTFS

COURSE REQUIREMENTS Objectives/Outcomes that are expected of students entering this course.

  1. The student will have an understanding data structures.
  2. The student will have an understanding of assembly programming.
  3. The student will have an understanding of computer architecture.
  4. The student will have an understanding of programming concepts and good programming practices.


At completion of this course, the students shall:




Every student is responsible for all information contained in the assigned reading material. Questions for exams will be taken from the text material, lecture notes, handouts, homework assignments, and laboratory exercises. Students should attend all class sessions. Homework will be handed in electronically and is due by midnight of the due date. Programming assignments must be received in a format that can be easily used by the professor and/or grading assistants.  IT IS THE RESPONSIBILITY OF THE STUDENT TO MAKE SURE ALL ASSIGNMENTS TURNED IN ARE ACCOUNTED FOR AND GRADED. If there are any circumstances related to the due date of assignments, turn assignments in early rather than late. Students must attend the lab to receive credit for in-lab exercises.



Programs will be graded on:

  1. Code style, format, modularization, delivery - 25%
  2. Documentation - 25%
  3. Proper Execution - 50%

Homework hand-in requirements:


All programs and code must be sent in the following format:

    1. Zip up all .asm, .c, .cpp, .h, .dsw, and .dsp or make files, etc. required to build the project..
    2.  In the archive, also include a “readme” file that lists all files included in the archive with a brief description of each file. The readme file should also contain installation instructions and instructions for running the program.
    3. The archive should also include any other deliverables as called out in the homework assignment write-up (e.g. design documents, project write-ups, etc.).
    4. The archive will be attached to an email with subject line:

CST352 HW Assignment #xfirst name and last name of team members.

Failure to do this will result in the assignment being discarded.


Students using platforms other than platforms supported in the labs must OK their environment with the instructor prior to handing in the first assignment.




Students are required to work on their assignments independently. Each assignment should reflect individual effort. Programs received that are determined to be duplicate will be consider to be copies. Do not leave copies of your work in the labs where they can be obtained. Each student is individually responsible for the well-being of their work.



Course Grading


The course grade is based upon the student’s attainment of points over the following allocation:




Hello World


Console and Shell


Memory Manager


Cooperative Multitasking


Preemptive Multitasking 200
Scheduler 200
Thread Synchronization 200
Exercise Questions 50
Exam 1 200
Exam 2 200
Final 400
Total :


Participation is a variable point assignment by the instructor. The points are designed to reward students who 1) attend and participate in class and 2) contribute to group discussion.

The grade breakdown will be:

>= 90%                         A

>= 80%                         B

>= 70%                         C

>= 60%                         D

< 60%                           F


Any student with a disability who anticipates a need for accommodation is this course is encouraged to talk with the instructor about those needs as soon as possible.