COURSE SYLLABUS

 

Course Title:          Operating Systems

Course No:             CS 3243/5243 

Level:                      Undergraduate/Graduate

Course Prereq:      Data Structures and Algorithm Analysis (CS3423), Computer Architecture & Assembly Language (CS2224).  Programming skills in JAVA is required for the course project.

Textbook:   Operating System Concept, 7th edition, Eds. Abraham Silberschatz, Greg Gagne, Peter Baer Galvin, John Wiley & Sons, Inc   ISBN 0-471-69466-5

 

Course Catalog Description:

The course is an introduction to basic operating system principles.  Process management, memory management (real and virtual), peripheral device management, file systems, and distributed systems are introduced and examined from a conceptual viewpoint.  Selected aspects of operating systems are explored in greater depth via software simulation projects.  A research project is also required. Selected advanced topics and a research project are also required of graduate students.

 

Course Objectives:

An operating system is a bridge between the user (and what the user wishes to accomplish) and the hardware (and what it needs to do its assigned tasks). This course attempts to remove all the mystery surrounding an operating system, as an intermediary between the user and the hardware, so that the student will have a very clear picture of all the functions of an operating system.

 

1.          To introduce students to fundamental concepts and principles of operating systems.  Emphasis is placed on the functions of operating systems to the computer system, the system operator (user), and variations in the design and implementations of operating systems.  Also discussed is the interplay between the OS and the underlying hardware.  Java is used as a technology (more so than a language) to illustrate or demonstrate several OS functions.  A semester-long capstone project is done to reinforce students’ understanding of some aspects or functions of an OS.  The capstone project may be implemented in C, C++, or Java according to student’s choice.

 

2.          The course focuses on the following concepts/principles:

1)          Foundational concepts – What an OS is, the functions or what it does, the design and construction of an OS, common and fundamental concepts of all OS, OS evolution, and hardware concepts that are important to OS design.

2)                                  Process management – What a process (or unit of work) is, process scheduling, separation of user and system processes and their management, concurrency issues, process synchronization, and deadlock management.

3)                                  Memory management – including virtual memory, file systems and I/O management

4)                                  Summary of distributed systems from conceptual point of view to include structures and algorithms for networking, distributed communication, coordination and distributed file systems.

 

Program Outcomes:

1.                                                                                                                                                                               The course will allow students to apply problem solving (analysis, design, and development) skills to operating systems at the conceptual/theoretical level.

2.                                                                                                                                                                               Student will be able to identify and understand the complexity of operating systems via lectures

3.             Students will be able to integrate OS and programming language concepts to solve/implement a virtual operating system via simulations (project)

4.                                                                                                                                                                               Students will be able to develop suites of protocols for implementing the communicating components of an operating system (e.g., interactions between the kernel, CPU, memory unit, scheduler), assess or validate their understanding through exercises and examinations

 

Other Support:      For Unix Tutorials:    http://unixhelp.ed.ac.uk/

                                For Java Tutorials:    (See Appendix of textbook)

 

 

COURSE SCHEDULE:

 

1.      Processes

1.1.      Scheduling

1.2.      Operations

1.3.      Interprocess communication

1.4.      IPC

1.5.      Client server communication

2.      CPU scheduling

2.1.   Scheduling criteria

2.2.   Scheduling algorithms

2.3.   Multiple process scheduling

2.4.   Thread scheduling

3.      OS structures

3.1.   OS Services

3.2.   User OS Interface

3.3.   System calls

3.4.   System programs

3.5.   OS Design and implementation

3.6.   OS structure

3.7.   Virtual machines

4.      Process synchronization

4.1.   Critical section

4.2.   Synchronization hardware

4.3.   semaphores

4.4.   monitors

4.5.   atomic transactions

5.      Memory

5.1.   swapping

5.2.   contiguous memory allocation

5.3.   paging

5.4.   page table structure

5.5.   segmentation

6.      Virtual memory

6.1.   Demand paging

6.2.   copy-on-write

6.3.   page replacement

6.4.   allocation of frames

6.5.   thrashing

6.6.   memory-mapped files

6.7.   kernel memory allocation

7.      File system interface

7.1.   concepts

7.2.   access methods

7.3.   directory structure

7.4.   file system mounting

7.5.   file sharing

7.6.   protection

8.      File system implementation

8.1.   File system structure

8.2.   file system implementation

8.3.   directory implementation

8.4.   allocation methods

8.5.   free space management

8.6.   efficiency and performance

8.7.   recovery

8.8.   log structured file systems

8.9.   NFS

9.      Distributed system structures

9.1.   types of distributed OS

9.2.   network structure

9.3.   network topology

9.4.   communication structure

9.5.   communication protocols

9.6.   robustness

9.7.   design issues

       

COURSE LOAD DESCRIPTION:

There will be three written examinations – each will be worth 20 pts:       = 60 points.

The 2-Phase semester simulation project will be worth (40 pts together):  = 15, 25 points (phase 1 & 2, respectively)

 

Students will work in groups of 3-5 on the simulation project. 

 

Grading will be based on the following scale:  90+  (A), 80+ (B), 70+ (C), <70 (D or F)

 

Course Policies:

·             Each student is expected to be in attendance every class period. 

·             The textbook is required and each student must have a copy during class time.  Each chapter, or coverage sections, should be read BEFORE each lecture.

·             Assignment due dates must be adhered to.  Each assignment will cover concepts/principles that will be discussed in the weeks following its assigned date. 

·             The course project (simulation) will be done in groups to allow team-oriented reasoning, design, and development.

·             Any form of copying or plagiarizing from past or current  students’ project code or report will result in disciplinary action and automatic F grade for an entire group, or student(s), involved.

 

In case of illness, emergencies, etc., students are required to call (or leave a message) on my voice mail or call the main office and leave a written message at 678-915-7406.  This must be done before the class takes place, not after-the-fact.

 

 

NOTES:

 

"Students with disabilities who believe that they may need accommodations in this class are encouraged to contact the counselor working with disabilities at (678) 915-7226 as soon as possible to better ensure that such accommodations are implemented in a timely fashion."

 

 "If you are majoring in Computer Science and have questions about your schedule or you are having registration problems, please contact the CS Student Services office located at J 393 or call (678) 915-7406 and ask for an appointment."