ECE 46900 - Operating Systems Engineering

Lecture Hours: 3 Lab Hours: 3 Credits: 4

Professional Attributes
Advanced CMPE
EE Elective

Normally Offered: Each Spring

Requisites:
ECE 36800

Catalog Description:
Students will learn to design and construct operating systems for both individual computers and distributed (networked) systems. Basic concepts and methods for managing processor, main memory, block-structured storage, and network resources are covered. Detailed examples are taken from a number of operating systems, emphasizing the techniques used in networked versions of UNIX. These techniques are applied to design improvements of portions of a networked UNIX-based operating system. The improvements are implemented and their performance evaluated in laboratory experiments.

Required Text(s):
  1. Class notes.
  2. Operating System Concepts, 8th Edition, Silberschatz, Galvin and Gagne, John Wiley & Sons, 2008, ISBN No. 9780470128725.

Recommended Text(s): None.

Learning Outcomes:

A student who successfully fulfills the course requirements will have demonstrated:
  1. an understanding of basic concepts of processes, process control, synchronization, scheduling. [1]
  2. an understanding of concepts and technologies in memory management, secondary and tertiary storage management, file systems, distributed and networked operating systems. [1,4]
  3. an ability to model and analyze the performance of OS components. [1,6]
  4. an ability to design and modify components of an operating system. [1,2,6]

Lecture Outline:

Weeks Topics
1.0 Introduction; Evolution of modern operating systems, distributed system concepts, operating system services & structure
2.0 Processes; Processes & parallel programs, UNIX process control/communication, races, deadlocks, & starvation
2.0 Process Management; Multiprogramming, processor scheduling, synchronization & communication
2.5 Memory Management; Partitioning and protection, segmentation & paging, virtual memory
3.0 Block-Structured Storage Management; Tapes, disks, and mass storage systems, allocation and access scheduling, file system
2.5 Network (Distributed Systems); Topology, routing, & protocols, distributed file systems, remote procedure calls, load balancing and process migration
1.0 Performance Analysis; Analytic & simulation models, benchmarking
1.0 Exams

Lab Outline:

Laboratory Structure
There will be approximately five laboratory projects. All projects will be implemented the C or C++ language. This laboratory will ensure that students will become familiar with both the external and internal structure of operating systems. Although the topic of each project may be different in each offering, they typically involve the use of standard UNIX facilities for process management and interprocess coordination, and one project will involve the use of multiple UNIX machines as a distributed system or a virtual parallel computer. Other projects will typically focus on processor management, virtual memory handling, file system mechanisms, writing device drivers, or other key topics in operating systems.