Thursday, February 17, 2011

Operating Systems

Operating Systems (OS) (12%) For Computer Science Students


   OS1. Overview of operating systems [core]
   OS2. Operating system principles [core]
   OS3. Concurrency [core]
   OS4. Scheduling and dispatch [core]
   OS5. Memory management [core]
   OS6. Device management [elective]
   OS7. Security and protection [elective]
   OS8. File systems [elective]
   OS9. Fault tolerance [elective]
   

Recommended Books:
1.    Operating Systems Internals & Design Principles by WilliamStallings
2.    Operating Systems Design and Implementation by Andrew S. Tanenbaum

An operating system defines an abstraction of hardware behavior with which programmers can control the hardware. It also manages resource sharing among the computer's users. The topics in this area explain the issues that influence the design of contemporary operating systems. Courses that cover this area will typically include a laboratory component to enable students to experiment with operating systems.
Over the years, operating systems and their abstractions have become complex relative to typical application software. It is necessary to ensure that the student understands the extent of the use of an operating system prior to a detailed study of internal implementation algorithms and data structures. Therefore these topics address both the use of operating systems (externals) and their design and implementation (internals). Many of the ideas involved in operating system use have wider applicability across the field of computer science, such as concurrent programming. Studying internal design has relevance in such diverse areas as dependable programming, algorithm design and implementation, modern device development, building virtual environments, caching material across the web, building secure and safe systems, network management, and many others.

OS1. Overview of operating systems [1%] [core]
Minimum core coverage time: 2 hours
Topics:
  • Role and purpose of the operating system
  • History of operating system development
  • Functionality of a typical operating system
  • Mechanisms to support client-server models, hand-held devices
  • Design issues (efficiency, robustness, flexibility, portability, security, compatibility)
  • Influences of security, networking, multimedia, windows
Learning objectives:
  1. Explain the objectives and functions of modern operating systems.
  2. Describe how operating systems have evolved over time from primitive batch systems to sophisticated multiuser systems.
  3. Analyze the tradeoffs inherent in operating system design.
  4. Describe the functions of a contemporary operating system with respect to convenience, efficiency, and the ability to evolve.
  5. Discuss networked, client-server, distributed operating systems and how they differ from single user operating systems.
  6. Identify potential threats to operating systems and the security features design to guard against them.
  7. Describe how issues such as open source software and the increased use of the Internet are influencing operating system design.
Minimum core coverage time: 2 hours
Topics:
  • Structuring methods (monolithic, layered, modular, micro-kernel models)
  • Abstractions, processes, and resources
  • Concepts of application program interfaces (APIs)
  • Application needs and the evolution of hardware/software techniques
  • Device organization
  • Interrupts: methods and implementations
  • Concept of user/system state and protection, transition to kernel mode
Learning objectives:
  1. Explain the concept of a logical layer.
  2. Explain the benefits of building abstract layers in hierarchical fashion.
  3. Defend the need for APIs and middleware.
  4. Describe how computing resources are used by application software and managed by system software.
  5. Contrast kernel and user mode in an operating system.
  6. Discuss the advantages and disadvantages of using interrupt processing.
  7. Compare and contrast the various ways of structuring an operating system such as object-oriented, modular, micro-kernel, and layered.
  8. Explain the use of a device list and driver I/O queue.
OS3. Concurrency [2%] [core]
Minimum core coverage time: 6 hours
Topics:
  • States and state diagrams
  • Structures (ready list, process control blocks, and so forth)
  • Dispatching and context switching
  • The role of interrupts
  • Concurrent execution: advantages and disadvantages
  • The "mutual exclusion" problem and some solutions
  • Deadlock: causes, conditions, prevention
  • Models and mechanisms (semaphores, monitors, condition variables, rendezvous)
  • Producer-consumer problems and synchronization
  • Multiprocessor issues (spin-locks, reentrancy)
Learning objectives:
  1. Describe the need for concurrency within the framework of an operating system.
  2. Demonstrate the potential run-time problems arising from the concurrent operation of many separate tasks.
  3. Summarize the range of mechanisms that can be employed at the operating system level to realize concurrent systems and describe the benefits of each.
  4. Explain the different states that a task may pass through and the data structures needed to support the management of many tasks.
  5. Summarize the various approaches to solving the problem of mutual exclusion in an operating system.
  6. Describe reasons for using interrupts, dispatching, and context switching to support concurrency in an operating system.
  7. Create state and transition diagrams for simple problem domains.
  8. Discuss the utility of data structures, such as stacks and queues, in managing concurrency.
  9. Explain conditions that lead to deadlock.
Minimum core coverage time: 3 hours
Topics:
  • Preemptive and nonpreemptive scheduling
  • Schedulers and policies
  • Processes and threads
  • Deadlines and real-time issues
 Learning objectives:
  1. 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.
  2. Describe relationships between scheduling algorithms and application domains.
  3. Discuss the types of processor scheduling such as short-term, medium-term, long-term, and I/O.
  4. Describe the difference between processes and threads.
  5. Compare and contrast static and dynamic approaches to real-time scheduling.
  6. Discuss the need for preemption and deadline scheduling.
  7. Identify ways that the logic embodied in scheduling algorithms are applicable to other domains, such as disk I/O, network scheduling, project scheduling, and other problems unrelated to computing.
OS5. Memory management [2%] [core]
Minimum core coverage time: 5 hours
Topics:
  • Review of physical memory and memory management hardware
  • Overlays, swapping, and partitions
  • Paging and segmentation
  • Placement and replacement policies
  • Working sets and thrashing
  • Caching
Learning objectives:
  1. Explain memory hierarchy and cost-performance tradeoffs.
  2. Explain the concept of virtual memory and how it is realized in hardware and software.
  3. Summarize the principles of virtual memory as applied to caching, paging, and segmentation.
  4. Evaluate the tradeoffs in terms of memory size (main memory, cache memory, auxiliary memory) and processor speed.
  5. Defend the different ways of allocating memory to tasks, citing the relative merits of each.
  6. Describe the reason for and use of cache memory.
  7. Compare and contrast paging and segmentation techniques.
  8. Discuss the concept of thrashing, both in terms of the reasons it occurs and the techniques used to recognize and manage the problem.
  9. Analyze the various memory portioning techniques including overlays, swapping, and placement and replacement policies.
OS6. Device management [1%] [elective]
Topics:
  • Characteristics of serial and parallel devices
  • Abstracting device differences
  • Buffering strategies
  • Direct memory access
  • Recovery from failures
Learning objectives:
  1. Explain the key difference between serial and parallel devices and identify the conditions in which each is appropriate.
  2. Identify the relationship between the physical hardware and the virtual devices maintained by the operating system.
  3. Explain buffering and describe strategies for implementing it.
  4. Differentiate the mechanisms used in interfacing a range of devices (including hand-held devices, networks, multimedia) to a computer and explain the implications of these for the design of an operating system.
  5. Describe the advantages and disadvantages of direct memory access and discuss the circumstances in which its use is warranted.
  6. Identify the requirements for failure recovery.
  7. Implement a simple device driver for a range of possible devices.
Topics:
  • Overview of system security
  • Policy/mechanism separation
  • Security methods and devices
  • Protection, access, and authentication
  • Models of protection
  • Memory protection
  • Encryption
  • Recovery management
Learning objectives:
  1. Defend the need for protection and security, and the role of ethical considerations in computer use.
  2. Summarize the features and limitations of an operating system used to provide protection and security.
  3. Compare and contrast current methods for implementing security.
  4. Compare and contrast the strengths and weaknesses of two or more currently popular operating systems with respect to security.
  5. Compare and contrast the security strengths and weaknesses of two or more currently popular operating systems with respect to recovery management.
OS8. File systems [2%] [elective]
Topics:
  • Files: data, metadata, operations, organization, buffering, sequential, nonsequential
  • Directories: contents and structure
  • File systems: partitioning, mount/unmount, virtual file systems
  • Standard implementation techniques
  • Memory-mapped files
  • Special-purpose file systems
  • Naming, searching, access, backups
 Learning objectives:
  1. Summarize the full range of considerations that support file systems.
  2. Compare and contrast different approaches to file organization, recognizing the strengths and weaknesses of each.
  3. Summarize how hardware developments have lead to changes in our priorities for the design and the management of file systems.
OS9. Fault tolerance [1%][elective]
Topics:
  • Fundamental concepts: reliable and available systems
  • Spatial and temporal redundancy
  • Methods used to implement fault tolerance
  • Examples of reliable systems
Learning objectives:
  1. Explain the relevance of the terms fault tolerance, reliability, and availability.
  2. Outline the range of methods for implementing fault tolerance in an operating system.
  3. Explain how an operating system can continue functioning after a fault occurs. 

No comments:

Post a Comment