CS 240 Computer Operating Systems
Total Credits: 3 cr
Course Coordinator: John Munson
URL:
http://www2.cs.uidaho.edu/~krings/CS240/index.html
Current Catalog Description: Overview of operating systems principles,
concurrency, scheduling and dispatch, memory management, introduction to net-centric
computing, communication and networking, OS security. Prereq: CS 121 and 150.
Coreq: CS 270.
Textbook: Silberschatz, et. Al., Operating Systems Concepts, 6th Ed,
John Wiley, 2003 or equivalent text.
References: Various Linux supporting materials on class website and
on the web.
Course Goals: Teach the major operational characteristics of a modern
operating system. A single operating system, typically a Unix derivative, will
be used to illustrate the various features of a typical modern operating system.
Students should be able to evaluate various operating systems with regard to
their file systems, scheduling algorithms, network capabilities, and their user
interfaces. Students will use various utilities to implement O/S design features
such as inter-process communication, scheduling, multi-threaded processes, and
networking.
Prerequisites by Topic:
- Fundamentals of computer science comprised of: (1) programming skills
in C/C++, (2) knowledge of data structures, (3) a basic command-level knowledge
of an operating system such as Unix / Linux, and (4) an understanding of
the basic run-time representation of programming languages. (CS 121)
- Computer organization and architecture including notions of: (1) binary
arithmetic, (2) basic hardware organization including memory and CPU register
sets, (3) notions of interrupts, (4) concepts of computer networking and
data communications, (5) linking and loading, and (6) basic assembler programming.
(CS 150)
Major Topics Covered in the Course: (duration) (CC 2001 BOK reference)
- Software/Hardware Architecture
- Review of architecture (1 hour) (AR6)
- Review of numbers (1 hour) (AR2)
- Assemblers, Linking and Loading (1 hour) (AR3)
- O/S evolution
- Operating system overview (1 hour) (OS1)
- Functional hardware organization (1 hour) (AR4, AR5, AR6, AR7)
- O/S architecture
- Kernels / Micro kernels (1 hour)
- Shells (1 hour) (HC1)
- Process Management (OS2)
- Process description (2 hours) (OS2)
- Threads (3 hours) (OS2)
- Concurrency; hours exclusion and Synchronization (2 hours) (OS3)
- Deadlock (2 hours) (OS3)
- Memory management
- Swapping-Overlays (2 hours) (OS5)
- Paging (1 hour) (OS5)
- Virtual memory (2 hours) (OS5)
- Scheduling
- Uniprocessor scheduling (1 hour) (OS4)
- Mulitprocessor and Real-time scheduling (1 hour) (OS4)
- I/O Systems
- Devices (2 hours) (OS2)
- Device Controllers/Handlers (1 hours) (OS6)
- File Management
- File concepts (1 hour) (OS8)
- File Directories (2 hours) (OS8)
- File systems (5 hours) (OS8)
- Networking
- Distributed processing (3 hours) (NC2)
- Security (2 hours) (NC3)
- Software Measurements
- Static measurements (2 hours) (OS11)
- Dynamic measures (2 hours) (OS11)
- Performance measures (1 hours) (OS11)
Laboratory projects (specify number of weeks on each):
- Use objdump to analyze the contents of a relocatable program module
(1 week)
- Compare and contrast a relocatable versus an absolute program module
in ELF (1week)
- Use ?ps? and ?top? to interrogate process and compare CPU utilization
(1 week)
- Run compute bound versus I/O process and compare CPU utilization (1
week)
- The system command line interface with arguments (1week)
- The use of exec commands (1week)
- Write a simple shell program (2 weeks)
- Write a program using multiple thread applications (1week)
- Write a consumer-producer thread application (1week)
- Write a program to interrogate the contents of a Unix directory item
(1week)
- Write a program to emulate the Unix 1s -alR command (1week)
- Term project (8 weeks)
Estimated Curriculum Category Content:
| Area |
Core |
Advanced |
Area |
Core |
Advanced |
| Algorithms |
0.5 cr |
|
Data Structures |
|
|
| Software Design |
0.5 cr |
|
Prog. Languages |
|
|
| Computer Arch |
0.5 cr |
|
Other |
1.5 cr |
|
Oral and Written Communications: Every student is required to submit
at least one written report (not including exams, tests, quizzes, or commented
programs) of typically 20 pages and to make one oral presentation of typically
15 minutes in duration.
Social and Ethical Issues: None.
Theoretical Content: Problems in CPU and resource scheduling, concurrency
including mutual exclusion and deadlock, memory management, the Input/Output
environment including programmed I/O, I/O with interrupts, I/O with DMAs and
channel I/O, files and directories, fundamentals of OS computer security, networking,
and distributed operating systems.
Problem Analysis: Compare and contrast various operating systems.
Solution Design: None.
Course Outcomes: The following list documents the course outcomes
and crossreferences them to the BSCS program
outcomes. The letter at the beginning of each reference identifies the program
outcome supported. The numbers sequentially identify the course outcome for
this course. After completing CS 240 a student should be able to:
- Identify and describe the major components of a modern operating system
and how they work together to provide services for system and application
programs. (a-1)
- Identify and describe the common approaches to and algorithms for process
management. (a-2)
- Identify and describe the common approaches to and algorithms for memory
management. (a-3)
- Identify and describe the common approaches to and algorithms for resource
scheduling. (a-4)
- Identify and describe how device I/O is handled. (a-5)
- Identify and describe the OS facilities and support for network communication.
(a-6)
- Identify and describe how file systems are organized and managed, and
how file system security can be achieved. (a-7)
- Effectively implement programming constructs to achieve process synchronization,
communication, and deadlock prevention. (a-8)
- Conduct experiments on software systems. (c-1)
- Analyze and interpret experimental data. (c-2)
- Communicate effectively in written form. (f-1)
- Communicate effectively in oral form. (f-2)
- Recognize the need for lifelong learning. (h-1)
- Acquire broad knowledge in a discipline such as operating systems. (h-2)
- Use various Unix system commands and utilities including: ps, top, exec,and
objdump. (i-1)