Course Title /
Operating Systems
/ Total Credits / 4BS CS: Required; BS CE: Elective; BA CS: Elective.
This document was prepared by: Prabhaker Mateti / Date: May21, 2009Catalog Data
The management of resources in multi-user computer systems. Emphasis is on problems of file-system design, process scheduling, memory allocation, protection, and tools needed for solutions. Course projects use the C/C++ language and include the design of portions of an operating system. 3 hours lectures, 2 hours lab.Prerequisites: CEG 320, and CS 400.
Text Books and Other Source Materials
- Avi Silberschatz and Peter Galvin, Operating System Concepts, 6th Ed, Addison-Wesley, 2003.
- W. Richard Stevens and Stephen A. Rago, Advanced Programming in the Unix Environment, Addison-Wesley, ISBN: 0-201-56317-7.
Home Page :
Learning Objectives
The student should have learned the following:
- Design issues in developing larger and complex programs
- Internal structure of hierarchical file systems
- Memory Allocation, and Virtual Memory Usage
- Signal and exception handling
- The interactions between applications and the hardware
- Programming with multiple processes
Prerequisites by Topic
- Programming experience in C++.
- Program development tools: editors, compilers, linkers, debuggers.
- Data structures: arrays, stacks, queues, lists, binary trees.
- Familiarity with the Unix environment.
- Computer Architecture: Interrupts, Kernel/User modes, Hardware Protection
Course Content
- Operating Systems, Systems implementation languages; From booting to shut down.
- File system design, i-nodes, volumes, mount; file open, read/write, close and unlink.
- System calls, Library calls, Signal handling. setjmp and longjmp.
- Memory management, Dynamic storage allocation and liberation.
- Virtual memory. Paging and Segmentation; Swapping; Page replacement algorithms.
- Processes, Threads, Scheduling
- Inter Process Communication mechanisms
- IO subsystem: DMA; Interrupt handlers; driver interfaces; overview of drivers.
- Case Studies: Linux and Windows.
Class/Laboratory Schedule
Each week has two lectures of 75-minutes each. There is no scheduled lab. Students are expected to work in open labs for no less than 2 hours a week.
There is project work for the course. This is done in pieces that progressively build on the preceding ones.
The projects are evaluated based on three criteria: (1) approach, clarity, and elegance, (2) correctness, and (3) efficiency. These projects must be work done solely by you, except for the parts provided by the instructor. The implementation must be in C++ demonstrable on our Linux/Unix systems.
Contribution to Professional Component
CEG 433 contributes 4 hours to the Criterion 4(b), and also contains engineering design.
Course Contribution to Program Educational Objectives
CEG 433 contributes to Objectives 1 and 2. Through exposure to the internals of operating systems, it deepens the skills to produce efficient software. The design experience gained through the course project is realistic. The student is also prepared to move on to other operating systems both past and future ones.
Course Contribution to Program Outcomes and Assessment
a / b / c / d / e / f / g / h / i / j / kPXX / PXX / PXX / 0 / PX / 0 / P / PX / PX / PX / PXX
Estimate CSAB Category Content
Core / Advanced / Core / AdvancedData Structures / 0.5 / Concepts of PL / 0.5
Algorithms / 1.0 / Comp Organization + Architecture / 1.0
Software Design / 1.0 / Other
Oral and Written Communications
There are no oral presentations. Students submit source code of their projects along with a "ReadMe", a text file that highlights the design details as well as problems and defects in their program. We do not claim that the ReadMe.txt constitutes written communications in the sense intended by this section.
Social and Ethical Issues
The development of user interfaces, and permissions to various computer resources is presented in the societal context.
Theoretical Content
None.
Problem Analysis
The projects are about a component of Operating Systems reduced in sizeand sophistication to fit a 10-week course. Detailed analyses of the requirements of the project, e.g., File System, are performed by the student before implementing them.
Solution Design
The projects are about a component of Operating Systems reduced in size and sophistication to fit a 10-week course. Skeletal solutions of the project, e.g., File System, are given by the instructor at the conceptual level in the lectures, and also in source code files. The student needs to design further details and implement them.
Learning Outcomes
The student should be able to:
- Develop, test and debug programs in Unix.
- Use system calls and library calls effectively
- Improve performance of programs by tuning virtual memory usage, and file IO.
- Design and build newer file systems for newer storage devices on any OS.
- Design and build multiple process programs.
Outcome Measures and Assessment
Student progress in achieving the desired objectives and outcomes for this course will be monitored and measured through use of student surveys, programming assignments, examinations, and success in the courses that use CEG 433 as a prerequisite.
Course Contribution to Program Outcomes and Assessment
a1 / an ability to apply knowledge of mathematics / Pa2 / an ability to apply knowledge of science / 0
a3 / an ability to apply knowledge of engineering / PXX
b1 / an ability to design and conduct experiments / PXX
b2 / an ability to analyze and interpret data / PXX
c / an ability to design a system, component, or process to meet desired needs / PXX
d / an ability to function on multi-disciplinary teams / 0
e / an ability to identify, formulate, and solve engineering problems / PX
f / an understanding of professional and ethical responsibility / 0
g / an ability to communicate effectively / PX
h / the broad education necessary to understand the impact of engineering solutions in a global and societal context / PX
i / a recognition of the need for, and an ability to engage in life-long learning / PX
j / a knowledge of contemporary issues / PX
k / an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice / PXX
Supporting Statements
A1: The directory structure in file systems is a tree. The addition of soft-links makes them arbitrary directed graphs. Traversals of these structures are assumed.Process synchronization requires careful logic.
A3: The engineering product development life cycle of requirements, specifications, design and construction occurs in the OS projects. Also, trade-offs in simplicity of design versus achieved functionality are considered.
B: The quality of memory management algorithms is evaluated via experiments.
C: This is a project driven course.
E: Because of an understanding of the internals of an OS, better computer solutions can be formulated.
G: There is a short written report describing the design and testing aspects of the project. Communicating with precision, knowing when to use prose and when to use appropriate technical terms, and programming notation is emphasized.
H: The development of user interfaces, and permissions to various computer resources is presented in the societal context.
I: The student realizes that in his/her life-time he will need to work with many OS, that there will not always be courses to take, that he should engage in life-long learning.
J: The student learns about contemporary issues such as the open source movement, and the anti-trust case of Microsoft.
K: Modern program development tools are used in the project, and Internet based discussions help the student receive prompt answers from other students and the instructor.