CS 240

From CS Wiki
Jump to: navigation, search

CS 240: 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

URL: http://www2.cs.uidaho.edu/~krings/CS240/index.html

Prereq: CS 121 and 150

Coreq: CS 270

Textbook:Textbook: William Stallings, Operating System: Internals and Design Principles, Pearson/Prentice Hall, 2015, or equivalent text.

Textbook URL:http://www.pearsonhighered.com/product?ISBN=0133805913

Prerequisites by Topic:

  • Fundamentals of computer science (CS 120) 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
  4. an understanding of the basic run-time representation of programming languages
  • Computer organization and architecture (CS 150) 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
  6. basic assembler programming

Major Topics Covered

  1. Review of software and hardware architectures: functional hardware organization; memory hierarchy.
  2. Overview of operating systems, O/S evolution: assemblers, linking and loading; shells; kernels/micro kernels.
  3. Processes: process management, scheduling, real-time scheduling.
  4. Concurrency: threads, multiprocessors, exclusion and synchronization.
  5. Memory management: virtual memory, swapping, overlays.
  6. I/O systems, devices, device handlers
  7. File systems, directories
  8. Networking
  9. Software measurements: static and dynamic performance measures

Course Outcomes

Note: the primary Student Outcome addressed is (b), which is reinforced.

  1. 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)
  2. Identify and describe the common approaches to and algorithms for process management. (a)
  3. Identify and describe the common approaches to and algorithms for memory management. (a)
  4. Identify and describe the common approaches to and algorithms for resource scheduling. (j)
  5. Identify and describe how device I/O is handled. (a)
  6. Identify and describe the OS facilities and support for network communication. (a)
  7. Identify and describe how file systems are organized and managed, and how file system security can be achieved. (a)
  8. Effectively implement programming constructs to achieve process synchronization, communication, and deadlock prevention. (c)
  9. Conduct experiments on software systems. (b)
  10. Analyze and interpret experimental data. (b)
  11. Recognize the need for lifelong learning. (h)
  12. Acquire broad knowledge in a discipline such as operating systems. (h)
  13. Use various Unix system commands and utilities including: ps, top, exec,and objdump. (i)