Computer Operating Systems
Catalog Description: Overview of operating systems principles, concurrency, scheduling and dispatch, memory management, introduction to net-centric computing, communication and networking, OS security.
Type: Required for all Computer Science majors
Total Credits: 3
Contact Hours: 3 lecture hours per week
Course Coordinator: Axel Krings
Prereq: CS 121 and 150
Coreq: CS 270
Textbook: Silberschatz, et. Al., Operating Systems Concepts, 6th Ed, John Wiley, 2003 or equivalent text.
Prerequisites by Topic:
- Fundamentals of computer science (CS 120) comprised of:
- programming skills in C/C++
- knowledge of data structures
- a basic command-level knowledge of an operating system such as Unix / Linux
- an understanding of the basic run-time representation of programming languages
- Computer organization and architecture (CS 150) including notions of:
- binary arithmetic
- basic hardware organization including memory and CPU register sets
- notions of interrupts
- concepts of computer networking and data communications
- linking and loading
- basic assembler programming
Major Topics Covered
- Review of software and hardware architectures: functional hardware organization; memory hierarchy.
- Overview of operating systems, O/S evolution: assemblers, linking and loading; shells; kernels/micro kernels.
- Processes: process management, scheduling, real-time scheduling.
- Concurrency: threads, multiprocessors, exclusion and synchronization.
- Memory management: virtual memory, swapping, overlays.
- I/O systems, devices, device handlers
- File systems, directories
- Software measurements: static and dynamic performance measures
- 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)
- Identify and describe the common approaches to and algorithms for process management. (a)
- Identify and describe the common approaches to and algorithms for memory management. (a)
- Identify and describe the common approaches to and algorithms for resource scheduling. (j)
- Identify and describe how device I/O is handled. (a)
- Identify and describe the OS facilities and support for network communication. (a)
- Identify and describe how file systems are organized and managed, and how file system security can be achieved. (a)
- Effectively implement programming constructs to achieve process synchronization, communication, and deadlock prevention. (c)
- Conduct experiments on software systems. (b)
- Analyze and interpret experimental data. (b)
- Recognize the need for lifelong learning. (h)
- Acquire broad knowledge in a discipline such as operating systems. (h)
- Use various Unix system commands and utilities including: ps, top, exec,and objdump. (i)