CS503 Operating Systems

Department of Computer Science and Engineering

University of Bridgeport

Spring 2004

Catalog Data:

An implementation-oriented course in the structure and design of operating systems. Processes and operating systems primitives; Synchronization of processes; Deadlock handling techniques; CPU scheduling and time management; Memory management; Space management and External device management. Students will be asked to implement 2-3 projects within the area of parametric optimization of various operating system modules. Prerequisite: Computer Science 102, Computer Engineering 312 or Computer Science 311, Knowledge of C/C++.

3 lecture hours; 3 semester hours

Textbook / Course web Site:

Abraham Silberschatz, Peter B. Galvin and Greg Cagne, Operating Systems Concepts, Windows XP Update, Sixth Edition, 2003, John Wiley and Sons.

Gary Nutt, Operating System Projects Using Windows NT, Addison Wesley Publishing Company, supplement to textbook.

Stephen G. Kochan, Patrick H. Wood, UNIX Shell programming, Revised Edition, Hayden Books-SAMS, 1989. ISBN: 0-672-48448-X

John Shapley Gray, Interprocess Communications in UNIX, Second Edition, Prentice Hall PTR, 1997. ISBN: 0-13-899592-3

Course web site: http://www.bridgeport.edu/sed/courses/cpe408

Unix programming web site: “Davin's collection of UNIX programming links”

http://www.cs.buffalo.edu/~milun/unix.programming.html

References:

Abraham Silberschatz, Peter Galvin and Greg Gagne, Applied Operating Systems Concepts, First Edition, 2000, John Wiley and Sons, Inc.

Gary Nutt, Operating Systems: A Modern Perspective, Addison Wesley, Second Edition with Lab. Update, 2002.

Andrew S. Tanenbaum, Modern Operating Systems, Second Edition, 2001, Prentice Hall.

Ida M. Flynn and Ann M. McHoes, Understanding Operating Systems, Third Edition, 2001, Brooks/Cole Publishing Company.

William Stallings, Operating Systems, Fourth Edition, 2001, Prentice Hall.

Dale Dougherty, Arnold Robins, Sed & Awk, Second Edition, 1997, O’Reilly & Associates, Inc. ISBN: 1-56592-225-5

John Strang, Programming with curses, 1999, O’Reilly & Associates, Inc. ISBN: 0-937175-02-1

Coordinator:

Prof. Tarek M. Sobh, Ph.D., P.E., CMfgE

Dean; School of Engineering

University of Bridgeport

Room 232 Engineering Technology Building, Tel: (203) 576-4111

Email:

Web: http://www.bridgeport.edu/~sobh

Web: http://www.bridgeport.edu/~risc

Goals:

This course is an implementation-oriented course in operating systems design. Various memory (space), time, process, and CPU management techniques will be studied and implemented. Students will be asked to implement 2-3 projects in the area of parametric optimization of various operating system modules. Some classes will be used for students to demonstrate their operating system modules software. Demonstrations will be done by the students individually on the Demo days. Students will get approximately 20-30 minutes to demonstrate their software during each demo day. Demo classes will also be used for demonstrating Windows NT and Unix case studies.

Prerequisites by Topic:

Ability to program in C/C++, data structures and algorithms, and general computer organization.

Meeting Times and Place:

Tuesdays 1:00 – 2:15, CARH 252

Thursdays 1:00 – 2:15, CARH 252

Office Hours:

Wednesday 3:00 – 5:00

Tech 232

Or by appointment.

Scheduled lectures and demos

Legend

Design/Theory lectures – D/L

Design/Theory assignment demo – Project #N demo

Windows NT labs lecture – NT Lab ?-? lecture

Windows NT lab demo – NT Lab ?-? demo

Unix lab lectures – UNIX Lab #N lecture

Unix lab demo – UNIX Lab #N demo




Topics:

·  Introduction and Overview of Operating and Computer Systems.

·  Operating System Structures.

·  Process Concept and Management.

·  CPU Scheduling.

·  Process Synchronization and Coordination.

·  Deadlocks and Deadlock Avoidance.

·  Physical and Virtual Memory Management and Paging.

·  Secondary-Storage Devices Management.

Windows NT Labs (in parallel with the above topics):

·  NT organization.

·  Multiple tasks and multithreaded software.

·  Manipulating kernel objects and thread synchronization.

·  Interprocess communication and TCP/IP.

·  Virtual memory and memory-mapped files.

·  Fast file and floppy disk I/O.

·  File Systems, directories and operations.

Unix Labs (in parallel with the above topics):

Lab 1 is a shell programming assignment that uses Bourne shell and most of its built-in constructs such as variables, loops, conditional statements and input redirection. Additionally, basic knowledge of sed is required for a certain part of it. Furthermore, students should be familiar with a UNIX system from the user’s perspective or at least being comfortable using the command prompt and being able to navigate through the directory hierarchy of either Windows NT or UNIX operating systems. Use of text editor, such as pico, vi joe or emacs is also required.

Lab 2 is an exercise in interprocess communication using Message Queues mechanism found in almost all of UNIX systems such as Sun Solaris. The assignment should be written in C or C++ and compiled using either C or C++ compiler found on our UNIX systems in the laboratories. Additionally, knowledge of curses (or GNU ncurses) and/or X windows/Motif programming may be required for user interface development.

Lab 3 is an extension of Lab 2. It introduces sockets to facilitate TCP/IP connection and consequently communication between applications developed in Lab 2.

For all the Unix labs, there are reference books listed as well as a web site that is essentially a list of other websites with useful tutorials. Extensive handouts will be provided and available on the CpE408 course website. Furthermore, using Internet, especially USENET newsgroups and other available on-line and off-line (UB and other libraries) resources is strongly encouraged in order to become more familiar with the above mentioned topics before the actual labs are assigned, if necessary.

Policies and Grading:

Grade Calculation:

·  Quizzes and Exams: 30%

·  Homeworks, O.S. implementation programming assignments and NT / Unix Laboratory Projects: 70 %

Policies:

·  Late homeworks and programs will not be accepted.

·  Three or more unexcused absences will result in automatic failure.

·  Make-up quizzes will not be allowed (except for prior instructor approval for a documented emergency).

·  Homeworks and programs are due within a week from the assignment date, unless the instructor notes otherwise.

·  All homeworks are to be typed.

·  Structured and modular code is required for the machine assignments.

·  All programs are to include sufficient comments and documentation with a clear program statement.

·  Programs are to demonstrated and submitted with all I/O files and source code hardcopies and floppies.

·  Extra credit quizzes, assignments, and programs (if any) will be announced by the instructor.

·  The instructor will discard the worst (lowest score) one or two quizzes for each student at the end of the class (they will not be counted towards calculation of the final grade).

Engineering Credit Allocation:

Engineering Science: 1.5 credits or 50%

Engineering Design: 1.5 credits or 50%