Computer Science

ECS 150 Operating Systems and System Programming

ECS 150 OPERATING SYSTEMS AND SYSTEM PROGRAMMING (4 units)

Format
Lecture: 3 hours
Discussion: 1 hour

Catalog Description:
Basic concepts of operating systems and system programming. Processes and interprocess communication/synchronization; virtual memory, program loading and linking; file and I/O subsystems; utility programs. Study of a real operating system.

Prerequisites: Course 40; course 50 or Electrical and Computer Engineering 70 or Electrical and Computer Engineering 170

Credit restrictions, cross listings: None

Summary of course contents

  1. Overview
    1. Purposes and Types of Operating Systems
    2. Concepts of Layered OS Design, Process-Oriented Structure and Virtual Machines
    3. Interactions with Computer Architecture
  2. Process Management
    1. Need for Concurrency and Threading
    2. Concept of Virtual Machine
    3. Process Synchronization Mechanisms and Deadlock
    4. Process/Thread Scheduling with the consideration of Multicore architecture
    5. Program Loading, Linking and Memory Management
    6. Introduction to Computer Security
  3. I/O and File Systems
    1. Layered I/O System Software
    2. Terminal I/O
    3. Disk I/O
    4. File Structures
    5. File system reliability and integrity check
  4. Systems Programming
    1. System-Dependent Software Design and Development
    2. Operating System Software, especially for Process Control, Memory Management, Input/Output and File Management
    3. UNIX System Calls

The four laboratory projects involve modification of Unix-like operating systems such as Linux, FreeBSD, or Minix. The students will gain experience in operating system design and implementation through these assignments. Projects involve design and creation of modified schedulers, addition of I/O drivers, memory allocation, and other projects requiring extensive design and modification of operating system source code. Design, testing and performance evaluation of completed projects are important components in grading these projects.

Goals: Students will be introduced to the design and implementation of modern, process oriented operating systems.

Illustrative reading
M. McKusick and G. Nevile-Neil, Design and Implementation of the FreeBSD Operating System, Addison-Wesley, 2004.

Computer Usage:
Students must make changes to the MINIX operating system, which runs standalone on PCs or Sun SPARC stations.

Laboratory Projects:
The four laboratory projects involve modification of the MINIX operating system, which is a smaller and more tractable version of UNIX. The students will gain experience in operating system design and implementation through these assignments. Projects involve design and creation of modified schedulers, addition of I/O drivers, memory allocation, and other projects requiring extensive design and modification of MINIX source code. Design, testing and performance evaluation of completed projects are important components in grading these projects.

Engineering Design Statement:
The laboratory projects are open-ended design problems giving students opportunities to consider important design decisions in a modern operating system. Students are graded on the quality of the design and how it is validated through sample test programs. Examinations also include an important component of design questions.

ABET Category Content:
Engineering Science: 2 units
Engineering Design: 2 units

GE3: Science & Engineering

Overlap: None

Instructors: K. Levitt and F. Wu

History: 2012.10.16 (F. Wu): Updated course contents: (1) Changed “Minix” to “Unix-like” (which includes Linux, FreeBSD, and Minix); (2) added the concept of threads and multicore; (3) added a sub-topic under File system – “File System reliability and Integrity Check”. Reduced prereqs (was 154A or EEC 70; now 50 or EEC 70; was 154B recommended; that now dropped). Original course description from Nov 1996 (K. Levitt and R. Olsson).

Outcomes

1 X an ability to apply knowledge of mathematics, science, computing, and engineering
2 X an ability to design and conduct experiments, as well as to analyze and interpret data
3 X an ability to design, implement, and evaluate a system, process, component, or program to meet desired needs, within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
4 X an ability to function on multi-disciplinary teams
5 X an ability to identify, formulate, and solve computer science and engineering problems  and define the computing requirements appropriate to their solutions
6 an understanding of professional, ethical, legal, security and social issues and responsibilities
7 X an ability to communicate effectively with a range of audiences
8 the broad education necessary to understand the impact of computer science and engineering solutions in a global and societal context
9 X a recognition of the need for, and an ability to engage in life-long learning
10 knowledge of contemporary issues
11 X an ability to use current techniques, skills, and tools necessary for computing and engineering practice
12 X an ability to apply mathematical foundations, algorithmic principles, and computer science and engineering theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
13 X an ability to apply design and development principles in the construction of software systems or computer systems of varying complexity
border