Typically offered during both the fall and spring semesters.
Catalog description:
Introduction to operating systems concepts. The operating system as a resource manager. The principles for the design and implementation of operating systems. User interface programming in current operating systems. Command languages and user interface. Process scheduling and deadlock prevention. Memory management, virtual memory, paging, and segmentation. Interrupt processing. Device management, I/O systems and I/O processing. Security and protection. Examples of operating systems including distributed and open systems.
Prerequisites: CSA274 and either CSA278 or ECE 387
Course Objectives:
- Describe hardware and operating system evolution.
- Describe the interaction between the operating system and the computer hardware. Examples here include the role of interrupts and the functions carried out by hardware or software.
- Describe the interaction between application software and the operating system.
- Describe the major functions of an operating system and alternatives for their design and implementation. Included here are process and task management, scheduling alternatives, memory management, device management, file systems, and security and protection.
- Compare and contrast alternative approaches to operating system structuring and implementation.
- Identify operating system features necessary to address application problems.
- Identify and describe issues in security and protection.
- Develop software that utilizes some services of the operating system, such as process management, file systems, or the command language.
- Describe and use some current commercially available operating systems.
Learning Outcomes: |
CSA381.1: To provide students with an overview of operating system functions. CSA 381.1.1. Explain the objectives and functions of modern operating systems. CSA 381.1.2. Describe how operating systems have evolved over time from primitive batch systems to sophisticated multiuser systems CSA 381.1.3. Analyze the tradeoffs inherent in operating system design. CSA 381.1.4. Describe the functions of a contemporary operating system with respect to convenience, efficiency, and the ability to evolve. CSA 381.1.5. Discuss networked, client-server, distributed operating systems and how they differ from single user operating systems. CSA 381.1.6. Identify potential threats to operating systems and the security features design to guard against them. CSA 381.1.7. Describe how users such as open source software and the increased use of the Internet are influencing operating system design. CSA 381.1.8. Contrast user interfaces including command line, graphical, and scripting/shell programs. CSA 381.1.9. Implement a system program to simulate a user interface.* |
CSA381.2: To introduce fundamental operating system design principles. CSA 381.2.1. Explain the concept of a logical layer SA 381.2.2. Explain the benefits of building abstract layers in hierarchical fashion. CSA 381.2.3. Defend the need for APIs and middleware. CSA 381.2.4. Describe how computing resources are used by application software and managed by system software. CSA 381.2.5. Contrast kernel and user mode in an operating system. CSA 381.2.6. Discuss the advantages and disadvantages of using interrupt processing. CSA 381.2.7. Compare and contrast the various ways of structuring an operating system such as object-oriented, modular, micro-kernel, and layered. CSA 381.2.8. Explain the use of a device list and driver I/O queue. |
CSA 381.3: To provide students with an understanding of fundamental issues in concurrency. CSA 381.3.1. Describe the need for concurrency within the framework of an operating system CSA 381.3.2. Demonstrate the potential run-time problems arising from the concurrent operation of many separate tasks. CSA 381.3.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. CSA 381.3.4. Explain the different states that a taxk may pass through and the data structures needed to support the management of many tasks. CSA 381.3.5. Summarize the various approaches to solving the problem of mutual exclusion in an operating system. CSA 381.3.6. Create state and transition diagrams for simple problem domains. CSA 381.3.7. Discuss the utility of data structures, such as stacks and queues, in managing concurrency. CSA 381.3.8. Explain conditions that lead to deadlock. CSA 381.3.9. Implement a system program to illustrate concurrency control.* |
CSA381.4: Scheduling and dispatch CSA 381.4.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. CSA 381.4.2. Describe relationships between scheduling algorithms and application domains. CSA 381.4.3. Discuss the types of processor scheduling such as short-term, medium-term, long-term, and I/O. CSA 381.4.4. Describe the difference between processes and threads. CSA 381.4.5. Compare and contrast static and dynamic approaches to real-time scheduling. CSA 381.4.6. Discuss the need for preemption and deadline scheduling. CSA 381.4.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. CSA 381.4.8. Implement a system program to illustrate process and/or thread management.* |
CSA381.5: Memory management CSA 381.5.1. Explain memory hierarchy and cost-performance tradeoffs. CSA 381.5.2. Explain the concept of virtual memory as applied to caching, paging, and segmentation. CSA 381.5.3. Evaluate the tradeoffs in terms of memory size (main memory, cache memory, auxiliary memory) and processor speed. CSA 381.5.4. Defend the different ways of allocating memory to tasks, citing the relative merits of each. CSA 381.5.5. Describe the reason for and use of cache memory. CSA 381.5.6. Compare and contrast paging and segmentation techniques. CSA 381.5.7. Discuss the concept of thrashing, both in terms of reasons it occurs and the techniques used to recognize and manage the problem. CSA 381.5.8. Analyze the various memory partitioning techniques including overlays, swapping, and placement and replacement policies. CSA 381.5.9. Implement a system program to illustrate memory management.* |
CSA381.6: Security and protection CSA 381.6.1. Defend the need for protection and security. CSA 381.6.2. Summarize the features and limitations of an operating system used to provide protection and security. |
CSA381.7: File systems CSA 381.7.1. Compare and contrast different approaches to file organization, recognizing the strengths and weaknesses of each. |
CSA381.8: Scripting CSA 381.8.1. Summarize a typical set of system commands provided by an operating system. CSA 381.8.2. Demonstrate the typical functionality of a scripting language.
* Choose one or more system programs to implement. |
Required topics (approximate weeks allocated):
- Overview of operating systems (1)
- operating systems as a user interface and resource manager
- historical perspective
- operating system organization (layers, micro kernel)
- CPU scheduling and concurrent process coordination (2.5)
- interrupts, clock interrupts, interrupt vector, interrupt service routines
- context switching and other scheduling concepts
- scheduling algorithms (FCFS, SJF, Priority, RR, etc.) and their evaluation
- rate conditions and critical section problem and its solutions
- semaphores, wait and signal operations
- classical problems of inter process communication and their solutions
- Memory management (3)
- memory management in historical perspective (fixed and variable partitions, swapping, etc.)
- virtual memory
- page replacement algorithms
- design issues for paging systems (working set model, page size, etc.)
- degmentation, segmentation with paging and system examples
- File systems and secondary storage management (2)
- files: naming, attributes, and directories
- implementation issues
- file security and protection
- I/O time and disk head scheduling algorithms
- Deadlocks (1.5)
- detection and recovery
- avoidance
- prevention
- Distributed operating systems (1.5)
- goals, advantages, and disadvantages
- hardware and software concepts for implementation
- design issues (transparency, flexibility, reliability, and similar topics)
- client/server approach
- Case studies (2.5)
- current operating system examples
- user interface programming in current operating systems (e.g., UNIX shell, CMS REXX, etc.)
- design and implementation considerations
- operating system applications program interface (e.g., UNIX system calls, Windows API)
- Exams/Review (1)