CSCI 380

Operating Systems

Coordinator: Blaise Liffick

Credits: 4.0

Description

Design and implementation of operating systems including types of operating systems, file systems, resource management, concurrent processes, deadlocks, memory management techniques, processor scheduling, disk scheduling, operating system security and system administration. Students expected to develop significant operating systems programming projects.

Prerequisites

C- or higher in CSCI 362 and CSCI 370

Sample Textbooks

Course Outcomes

  1. familiar with the basic components of an operating system.
  2. familiar with some of the classical operating systems issues
  3. able to study and modify an operating system.
  4. familiar with the structures of operating systems on various computer platforms.
  5. familiar with classical problems of concurrency and be able to develop programs using concurrency primitives.
  6. familiar with tasks of a system administrator on various platforms.
  7. familiar with security issues related to system protection.

Major Topics Covered

  1. Introduction
    1. Early Operating Systems
    2. Multiprogramming
    3. Time Sharing
    4. Real-Time Systems
    5. Multi-Processor Systems
  2. Operating System Services
    1. Types of services
    2. The user view
    3. The operating system view
  3. Concurrency
    1. The Critical Section Problem
    2. Semaphores
    3. Classical Process Coordination Problems
    4. Interprocess Communications
    5. Modularization
    6. Synchronization
    7. Concurrent Languages
  4. Deadlocks.
    1. The problem.
    2. Characterization
    3. Prevention
    4. Avoidance
    5. Detection
    6. Recovery
  5. Memory Management
    1. Resident Monitors
    2. Swapping
    3. Paging
    4. Segmentation
    5. Fragmentation
    6. Garbage collection
    7. Placement strategies
  6. Virtual Memory
    1. Overlays
    2. Demand Paging
    3. Virtual Memory concepts
    4. Page Replacement Strategies
    5. Thrashing
    6. Locality and the Working Set
  7. File Systems
    1. Access Methods
    2. Allocation Methods
    3. Directory Structures
    4. Protection
  8. CPU Scheduling
    1. Multiprogramming Concepts
    2. Scheduling Strategies
    3. Performance Trade-offs
  9. Disk Scheduling
    1. Physical Characteristics
    2. First-Come-First-Serve Scheduling
    3. Shortest-Seek-Time-First
    4. Scan
    5. Sector Queuing
  10. Operating System Security.
    1. Issues in OS security, prevention, detection, monitoring.
    2. Viruses, worms, Trojan horses.
    3. Software packages for secure systems.
  11. 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.
  12. Other Topics.
    1. Example operating systems:
    2. Performance Issues.
    3. System Tuning.

Sample Laboratory Projects

  1. (2 weeks) Operating Systems Security Laboratory. The objective of this program is to gain experience in the following areas: (1) Using the Linux Workstations, (2) Writing in C and using Unix Operating System Calls, (3) Checking System security. Write a 'C' program that finds out if any users on the network in the lab have no passwords, find all users that use the same password as their user names (Joe accounts), and find out the Super User password.
  2. (3 weeks) Concurrent Processing Laboratory. The objective of this program is to gain experience in the following areas: (1) Concurrent Tasks/Processes, (2) Creation and Manipulation of Processes in the Unix Operating System, (3) Mutual Exclusion problems in the Kernel of an Operating System. Write the concurrent program in the lab handout to spawn three processes, one parent and two children. The two children are to write different messages to the pipe IPC facility. The parent is to continuously loop reading and printing the contents of the pipe. Experiment with various loads on the operating system and report your findings.
  3. (4 weeks) Memory Management Laboratory. The objective of this laboratory is to gain experience in the following areas: (1) Concurrent Tasks/Processes, (2) Memory Management in an Operating System, (3) Page Replacement Strategies in Memory Management. Write a concurrent program that simulates the various memory management page replacement techniques in Operating Systems. You will need to spawn five processes which are to request memory references from the kernel. The kernel will be the parent process. This kernel process will receive page references and manage the memory of the machine (simulate this with a data structure). Keep track of: Number of pages swapped out to disc, number of page faults, number of page reference no-faults, number of pages swapped IN that we just swapped OUT, and show the pages in memory. Memory will have 4 fixed pages. Each process has its own set of page references, Pl-A, P1-B, P1-C, etc. Process two will have P2-A, P2-B, P2-C, etc. Use three page replacement strategies: FIFO, LRU, LFU. Extra credit for using additional page replacement strategies. Experiment with varying data sets and report your findings.
  4. (2 weeks) Linux Operating System Administration/Management Laboratory. The objective of this program is to gain experience in the following areas: (1) Performing System Manager Tasks.(2) Using the Linux Workstations. (3) Operating System and Network Management. Completely load the Linux operating system from its original CDROM to the hard drive on one of computers. Set up all tables, configuration files, network automountings, exports, disc partitions, swap space, set up the superuser password, and all initialization parameters that a system manager would have to do when loading an operating system from scratch. You must load from the CDROM various developer's modules in addition to the "end user" distribution. Do not do a Quick install; instead, do a Custom install where you put all the drives/File systems in one partition.
  5. (4 weeks) Concurrent Processing Laboratorv. The objective of this program is to gain experience in the following areas: (1) Concurrent Tasks/Processes.(2) Creation and Manipulation of Processes in the Unix Operating System, (3) Mutual Exclusion problems in the Kernel of an Operating System. Write a concurrent program to solve the Readers/Writers Mutual Exclusion Problem in Operating Systems. You will need to spawn five processes, (see lab handout materials).