East Carolina University
Department of Computer Science
CSCI 3000
Operating Systems
Standard Syllabus
3 credits |
Prepared by K. Gopalakrishnan, May 2018 |
Catalog entry
P: CSCI 2405, CSCI 2530. Operating system design and
implementation. Process and memory management, and file
systems. Operating system support for distributed systems.
Course summary
The objective of this course is to provide the computer science
students a thorough understanding of the concepts and principles of
operating systems and an appreciation of the implementational
issues. The prerequisites for this course are working knowledge of
C or C++ programming language, knowledge of
UNIX from the user point of view and a thorough understanding
of basic computer architecture and data structures.
An operating system is a program that acts as an interface between
a user of a computer and the computer hardware. The primary goal of
the operating system is to make the computer system convenient
to use. A secondary goal, but still an important one, is to
utilize the computer hardware in an efficient manner. In
this course, we will study the different parts of an operating system
that enables it to satisfy the above goals and to shield the users
from the messy details of controlling the hardware.
Course topics
-
Introduction: History of OS, Computer Hardware Review, Basic concepts of OS and Structure of OS.
-
Processes: Classical Process Model, Solving a problem using multiple processes, Process implementation.
-
Threads: Classical Thread Model, Solving a problem using multiple threads, Thread implementations.
-
Process Synchronization: Methods of Interprocess Communication, Race Conditions, Mutual Exclusion Problem, Different solutions for it, Semaphores, Classical process synchronization such as producer-consumer problem, readers and writers problem and dining philosophers problem, monitors and message passing.
-
CPU Scheduling: Scheduling in Batch Systems and Interactive Systems, Different Scheduling algorithms such as FCFS, SJF and priority based schemes.
-
Memory Management: Concept of address space, Swapping, Memory Management using bitmaps and linked lists, Virtual Memory, Page Replacement Algorithms and Segmentation
-
File Management: Files and Directories, Different ways of implementing them, File system consistency and performance and Disk space management.
-
Security: Protection mechanisms such as access control lists and capability lists, Different methods of authenticating users, Introduction to private-key, public-key cryptography and digital signature schemes.
-
Distributed Computing: Basic Concepts of Distributed Computing, Shared Memory Model vs. Message Passing Model, Asynchronous and Synchronous Systems, Examples of distributed algorithms.
Student learning outcomes
-
Solve computational problems using multiple processes that communicate with each other.
-
Write multi-threaded programs using POSIX library calls.
-
Find subtle errors in seemingly correct (but actually wrong) concurrent programs.
-
Use semaphores for process synchronization.
-
Implement scheduling algorithms using appropriate data structures.
-
Compare and contrast different memory management schemes.
-
Explain the inner workings of UNIX File systems.
-
Discuss basic security issues and solutions for them.
-
Describe the basic concepts of distributed computing.
Textbook
Modern Operating Systems by Andrew Tanenbaum, Pearson Education Inc., Fourth Edition,
2015.
Other required material
The following are good reference books and will be placed
as reserved material in the library. You do not have to purchase them, but will
need to consult them. The first one is a good alternate textbook and the last two
would help in doing the programming assignments given in C and UNIX.
-
Operating System Concepts ,
by Silberschatz, Galvin and Gagne,
John Wiley and Sons, ninth edition, 2013.
-
Advanced UNIX Programming , by
Marc J. Rochkind.
Addison-Wesley Professional Computing Series, Second edition, 2004.
- Advanced Programming in the UNIX Environment
by W. Richard Stevens and Stephen A. Rago, Addison-Wesley Professional
Computing Series, Third edition, 2013.
Grading
Your grade in this course will be based on your performance in
assignments and examinations. The examinations will account for 55 percentage
of your grade and the assignments will account for 45 percentage of your grade.
Assignments must be taken seriously and must be submitted in time.
Most of the assignments will be programming assignments in C and UNIX.
Some of the assignments will be
traditional paper based assignments (homework).
There will be two regular examinations during the semester
and a final comprehensive examination at the end of the semester.
Grade meanings
Grade |
Meaning |
A |
Achievement substantially exceeds basic course expectations |
A− |
|
B+ |
|
B |
Achievement exceeds basic course expectations |
B− |
|
B+ |
|
C |
Achievement adequately meets basic course expectations |
C− |
|
D+ |
|
D |
Achievement falls below basic course expectations |
D− |
|
F |
Failure – achievement does not justify credit for course |