Course Number
    380
Course Name
    Operating Systems
Credits
    4
Prerequisite
    CSCI 270 and CSCI 362
Course Description
    This course provides an introduction to the design and implementation of operating systems. Topics covered include: types of operating systems, file systems, resource management, concurrent processes, deadlocks, memory management techniques, processor scheduling, disk scheduling, operating system security, and system administration. The student will be exposed to different operating systems on various computer platforms, and will be expected to develop significant operating system programming projects in this area. This course includes a laboratory component.
Course Objectives
    On completion of this course, the student should be:

    A. familiar with the basic components of an operating
          system.

    B. familiar with some of the classical operating systems
         issues.

    C. able to study and modify an operating system.

    D. familiar with the structures of operating systems on
         various computer platforms.

    E. familiar with classical problems of concurrency and be
         able to develop programs using concurrency primitives.

    F. familiar with tasks of a systems administrator on various
         computer platforms.
Course Outline
    A. Introduction
      1. Early Operating Systems
      3. Multiprogramming
      4. Time Sharing
      5. Real-Time Systems
      6. Multi-Processor Systems

    B. Operating System Services
      1. Types of services
      2. The user view
      3. The operating system view

    C. Concurrency
      1. The Critical Section Problem
      2. Semaphores
      3. Classical Process Coordination Problems
      4. Interprocess Communications
      5. Modularization
      6. Synchronization
      7. Concurrent Languages

    D. Deadlocks.
      1. The problem.
      2. Characterization
      3. Prevention
      4. Avoidance
      5. Detection
      6. Recovery

    E. Memory Management
      1. Resident Monitors
      2. Swapping
      3. Paging
      4. Segmentation
      5. fragmentation
      6. garbage collection
      7. placement strategies

    F. Virtual Memory
      1. Overlays
      2. Demand Paging
      3. Virtual Memory concepts
      4. Page Replacement Strategies
      5. Thrashing
      6. Locality and the Working Set

    G. File Systems
      1. Access Methods
      2. Allocation Methods
      3. Directory Structures
      4. Protection

    H. CPU Scheduling
      1. Multiprogramming Concepts
      2. Scheduling Strategies
      3. Performance Trade-offs

    I. Disk Scheduling
      1. Physical Characteristics
      2. First-Come-First-Serve Scheduling
      3. Shortest-Seek-Time-First
      4. Scan
      5. Sector Queuing

    J. Operating System Security.
      1. Issues in OS security, prevention, detection,
           monitoring.
      2. Viruses, worms, Trojan horses.
      3. Software packages for secure systems.

    K. System Administration.
      1. Issues in system administration.
      2. Adding users, peripherals, networks, email, Internet.
      3. Startup and shutdown procedures.
      4. Backup and restore facilities.
      5. System Accounting.
      6. Automating routine tasks using shell scripts.

    L. Other Topics.
      1. Example operating systems:
      2. Performance Issues.
      3. System Tuning.
Suggested Texts
    Operating System Concepts, 4th edition, J. Peterson , A. Silberschatz and P. Galvin, Addison-Wesley, 1993.

    Operating Systems, 2nd edition, Harvey Deitel, Addison-Wesley, 1990.
Related Readings
    Unix for Super-Users, E. Foley, Addison-Wesley, 1985.

    The Design of the Unix Operating System, Maurice J. Bach, Prentice Hall, 1987.

    Advanced Unix Programming, M. Rochkind, Prentice-Hall, 1985.

    The Design and Implementation of the BSD 4.3 Unix Operating System, Samuel Leffler, Marshall McKusick, and John Quarterman, Addison-Wesley, 1989.

    Operating System Principles, Brinch Hansen, Prentice-Hall, 1973.

    The Architecture of Concurrent Programs, Brinch Hansen, Prentice-Hall, 1977.

    Principles of Concurrent Programs, M. Ben-Ari, Prentice-Hall, 1982.

    The Design of Operating Systems for Small Computer Systems, Stephen Kaisler, John Wiley & Sons Press, 1983.

    Unix, MS-DOS, other technical manuals.

    Writing a Unix Device Driver, J. Egan, T. Teixeira, John Wiley & Sons Press, 1988.

    MS-DOS Developer's Guide, J. Angermeyer and K. Jaeger, Howard W Sams & Co., 1986.

    Partial list of selected reprints of journals and publications.

    ACM SIG Transactions on Operating Systems, IEEE Transactions on Systems, Man, and Cybernetics, Technical reports form MIT, U. of Maryland, U. of Pennsylvania, Carnegie Mellon University, Temple University, etc.