Statement of Course Outcomes


Course Number: CS 520


Course Name: Operating Systems


Course Coordinator: Wendy Hui Wang


Graduate or Undergraduate Equivalent: CS 492

 

Catalog Description: Overview of operating systems. CPU scheduling, process concept, suspend and resume, interrupt processing, and multiprogramming. Concurrent processes, the critical section problem, mutual exclusion, semaphores, process coordination, and communication and synchronization. CPU scheduling algorithms. Deadlocks, conditions for deadlock, deadlock detection, and avoidance. Memory management, memory management schemes-single contiguous, static and dynamic partitions, relocatable partitions, paging, demand paging, and page replacement strategies. Secondary storage management, disk scheduling concepts, and algorithms. Students will be given programming assignments on a regular basis. This course is not centered on any particular operating system or hardware; instead, it covers fundamental concepts that are applicable to a variety of systems. Prerequisites: CS 590 and CS 550 or their equivalents.


Course Outcomes: The graduate of CS 520 will be prepared to


Each course outcome is followed in parentheses by the Program Outcome to which it relates.


  1. Explain why it is useful to isolate running programs from each other in separate processes. (core:runtime)

  2. Explain under what circumstances it is preferable to implement separate control paths with threads rather than processes. (core:runtime)

  3. Explain the correct circumstances of use and operation of memory that is shared among two or more processes. (core:runtime)

  4. Explain the purpose and operation of multitasking and context switching. (core:runtime)

  5. Explain how the data structures of the UNIX file system serve to map file names to blocks of a storage device. (sys:hardware-interface)

  6. Explain the value and dangers of in-memory caching of file system disk blocks. (core:runtime)

  7. Use given facts about (a) the operation of a rotating hard disk device and (b) file systems data structures to determine the maximum and likely performance of basic file system operations. (core:requirements)

  8. Explain the value of virtual memory. (core:runtime)

  9. Explain in detail how a virtual address is translated into a physical address on at least one common hardware architecture. (sys:hardware-interface)

  10. Explain the value and drawbacks of “non-traditional” hardware architectures for supporting virtual memory; e.g., inverted page table and TLB-only. (sys:hardware-interface)

  11. Explain why interrupts occur and how an operating system, in concert with hardware support, services an interrupt. (sys:hardware-interface)

  12. Explain in detail how a system call is made and returns. (sys:hardware-interface)

  13. Explain the difference between UNIX block and character devices. (core:runtime)

  14. Implement a C program that uses UNIX’s file system interface to operate on devices. (core:requirements)

  15. Read, understand, and use UNIX man page descriptions of system calls and library functions. (core:environments)

  16. Understand the detail of the proof of the Peterson's and Bakery algorithms for concurrency control and be able to analyze and devise similar protocols with some conditions changed. (core:problem-solving core:math-stat], core:concurrency)

  17. Understand the semaphore-based solutions to the producer/consumer-, dining philosophers-, and apply semaphores to solving a wide range of multi-processing synchronization problems (including the proof of equivalence of the semaphores and message passing). (core:problem-solving, core:concurrency).

  18. Explain the necessary and sufficient conditions for deadlocks in presence of multy-type resource reservations. Be able to a) apply the deadlock detection algorithm to a given state of a system of processes and resources and b) determine whether a given state of a system is safe. (core:problem-solving, core:concurrency).

  19. Understand the event-driven programming paradigm, and be able to develop discrete-event-based simulation programs using the pseudo-random number generators and apply these programs to simulating process scheduling in operating systems. (core:requirements, core:problem-solving, core:languages, core:math-stat], core:environments).

  20. Analyze the results of a simulation and produce a technical report with the observations and resulting recommendations on the choice of the scheduling disciplines, queue buffer sizes, and other system parameters. (core:requirements, [core:communication])

  21. Understand the principles of the OS security and basic types of attacks. Explain the domain-based granting of privileges. Explain the difference between the worms and viruses and the issues in detecting them. Explain the buffer-overflow family of attacks. (core:problem-solving, core:runtime).

  22. Understand the basics of cryptography and its applications to creation and maintenance of the user passwords. Explain the technique of salted passwords and its applications. (core:requirements, core:math-stat]).