CS 450 Learning Objectives
Links:
[Course Home]
[Schedule]
[Learning Objectives]
[Resources]
[Moodle]
Note: this course's goals and objectives are based on the Operating Systems and Systems Fundamentals areas of the Association for Computing Machinery (ACM)'s Computing Curricula 2013.
General OS Principles
- Explain the objectives and functions of modern operating systems.
- Analyze the tradeoffs inherent in operating system design.
- Describe the functions of a contemporary operating system with respect to convenience, efficiency, and the ability to evolve.
- Discuss networked, client-server, and distributed operating systems and how they differ from single-user operating systems.
- Identify potential threats to operating systems and the security features designed to guard against them.
- Explain the concept of a logical layer.
- Explain the benefits of building abstract layers in hierarchical fashion.
- Describe the value of APIs and middleware.
- Describe how computing resources are used by application software and managed by system software.
- Contrast kernel and user mode in an operating system.
Inter-Process Communication
- Describe how computing systems are constructed of layers upon layers, based on separation of concerns, with well-defined interfaces, hiding details of low layers from the higher layers.
- Describe the mechanisms of how errors are detected, signaled back, and handled through the layers.
- Describe the difference between processes and threads.
- Construct a simple program using methods of layering, error detection and recovery, and reflection of error status across layers.
- Find bugs in a layered program by using tools for program tracing, single stepping, and debugging.
Concurrency
- Describe the need for concurrency within the framework of an operating system.
- Demonstrate the potential run-time problems arising from the concurrent operation of many separate tasks.
- Summarize the range of mechanisms that can be employed at the operating level to realize concurrent systems and describe the benefits of each.
- Explain the different states that a task may pass through and the data structures needed to support the management of many tasks.
- Summarize techniques for achieving synchronization in an operating system (e.g. describe how to implement a semaphore using OS primitives).
- Describe reasons for using interrupts, dispatching, and context switching to support concurrency in an operating system.
- Create state and transition diagrams for simple problem domains.
Resource Allocation and Scheduling
- Compare and contrast the common algorithms used for both preemptive and non-preemptive scheduling of tasks in operating systems, such as priority, performance comparison, and fair-share schemes.
- Describe relationships between scheduling algorithms and application domains.
- Discuss the types of processor scheduling such as short-term, medium-term, long-term, and I/O.
- Compare and contrast static and dynamic approaches to real-time scheduling.
- Discuss the need for preemption and deadline scheduling.
- Identify ways that the logic embodied in scheduling algorithms is applicable to other domains, such as disk I/O, network scheduling, project scheduling, and problems beyond computing.
- Define how finite computer resources (e.g., processor share, memory, storage and network bandwidth) are managed by their careful allocation to existing entities.
- Describe the scheduling algorithms by which resources are allocated to competing entities, and the figures of merit by which these algorithms are evaluated, such as fairness.
- Implement simple scheduling algorithms.
- Use figures of merit to compare alternative scheduler implementations.
Virtual Memory and Virtual Machines
- Explain memory hierarchy and cost-performance tradeoffs.
- Summarize the principles of virtual memory as applied to caching and paging.
- Defend the different ways of allocating memory to tasks, citing the relative merits of each.
- Discuss the concept of thrashing, both in terms of the reasons it occurs and the techniques used to recognize and manage the problem.
- Describe how hardware, VM, OS, and applications are additional layers of interpretation/processing.
- Explain why it is important to isolate and protect the execution of individual programs and environments that share common underlying resources.
- Describe how the concept of indirection can create the illusion of a dedicated machine and its resources, even when physically shared among multiple programs and environments.
Device Management and File Systems
- Identify the relationship between the physical hardware and the virtual devices maintained by the operating system.
- Discuss the advantages and disadvantages of using interrupt processing.
- Explain the use of a device list and driver I/O queue.
- Describe the choices to be made in designing file systems.
- Compare and contrast different approaches to file organization, recognizing the strengths and weaknesses of each.
- Summarize how hardware developments have led to changes in the priorities for the design and management of file systems.
- Summarize the use of journaling and how log-structured file systems enhance fault tolerance.