(Latest Revision: 11/29/2001)
(11/29/2001: added material for chapters 11-22)
(11/15/2001: copied to here the questions for chapters 6-10)
(10/09/2001: removed a question that seemed redundant)

CS 3750 Study Guide for Exams
COMPUTER SCIENCE 3750 -- Operating Systems I

Make notes on what you read. To prepare for tests, study your notes and the homework questions. That should be enough. There are additional questions below that can help you to focus on many of the issues I find important. Keep in mind that this list does not cover everything I consider important.

Chapter 01 -- Introduction
  1. What services does an operating system provide?

  2. What forces have driven the development of operating systems?

  3. List several major milestones in the development of operating systems.

  4. Discuss the operation of an old-fashioned batch system.

  5. Explain control cards.

  6. Define "multi-processing" and "multi-programming", being careful to explain the difference between them.

  7. Explain multiprocessor systems.

  8. Explain distributed systems.

Chapter 02 -- Computer System Structures
  1. Discuss the basic architectural components of a modern computing system, such as cache, registers, ALU, CPU, system bus, primary memory, device controllers, and hard disks. How are these elements typically structured and organized? How do they interoperate?

  2. Explain interrupts and how the functioning of a modern computing system depends on interrupts.

  3. Explain DMA.

  4. Explain privileged mode and privileged instructions.

  5. Discuss the way that the existence of two operating modes facilitates the maintenance of correct operation in a multiprogramming operating system. Be sure to include a specific example to illustrate each important point you make.

  6. Discuss some important operating systems capabilities and the hardware support required to implement them.

  7. Explain how system calls are implemented.

Chapter 03 -- Operating System Structures
  1. An operating system can be thought of as a supplier of many services to user processes, and a manager of many resources that are available to user processes. Name some of these services and resources. (Variety in your answer will count more than quantity.)

  2. What is a system call? Who (what type of process) would make a system call? Who (what process) would be the callee?

  3. Explain what a process is.

  4. What are the services that an operating system provides in relation to:
  5. Discuss several approaches to designing an operating system.

Chapter 04 -- Processes
  1. Define "program" and "process", being careful to explain the difference between them.

  2. What is the context of a process? List as many components of process context as you can think of.

  3. Explain process control blocks.

  4. Explain ready queue and I/O queue.

  5. Explain the roles of short-term and long-term schedulers.

  6. Explain swapping and context switching.

  7. Discuss the fork and exec Unix system calls.

  8. Explain the producer-consumer problem.

  9. Discuss several styles of interprocess communication.

Chapter 05 -- Threads
  1. Compare/contrast processes and threads.

  2. Explain user-level versus kernel-level threads.

  3. Discuss potential benefits of programming with threads.

  4. Discuss thread support models -- i.e. many-to-one model, one-to-one model, and many-to-many model.
  5. Discuss the system call implementation issues that come up as a result of the introduction of multithreading.

  6. Discuss the signal handling issues that come up as a result of the introduction of multithreading.

Chapter 06 -- CPU Scheduling
  1. Explain preemptive and non-preemptive scheduling.

  2. Explain shortest-job-first (SJF) scheduling. What does it achieve? When is it easy to implement, and when is it hard to implement?

  3. Explain "aging." Also, what is the need for aging?

  4. Explain round robin.

  5. Explain symmetric multiprocessing.

  6. Explain throughput, turnaround time, waiting time and response time.

Chapter 07 -- Process Synchronization
  1. Define "critical section" and "critical section problem". Be sure to adequately describe the context in which these concepts are important.

  2. Explain the meaning of each of the following three requirements for a solution to a critical section problem:
  3. What is a "software solution" to a critical section problem? When we studied software solutions, what underlying assumptions did we rely upon concerning the instruction set of the machine on which our programs would execute?

  4. Complete the following working definition of an atomic operation: If two processes attempt to execute an ATOMIC OPERATION concurrently, the result will be ... "

  5. Explain how the "hardware" of a computer can be used to insure the atomicity of an operation such as the "wait" of a semaphore, or a "test-and-set".

  6. Give a complete description of one of the following "classic problems" in process coordination: (Note: I'm asking that you state one of these problems, not give a solution.)

  7. Define busy waiting. How can busy waiting be avoided in the synchronization protocols of a uni-processor computer?

  8. Describe the data structure "counting semaphore" (also called a "queueing semaphore"). Be sure to describe

Chapter 08 -- Deadlocks
  1. What are the four necessary conditions for deadlock? Discuss some of the (operating system) techniques that prevent deadlock by making sure that one or more of the conditions never holds. What are some of the details and requirements of the implementation of these techniques?

  2. Discuss deadlock avoidance. What is involved in the Banker's algorithm? How does an operating system use the Banker's algorithm to avoid deadlock? What is a safe sequence? If a system is not in deadlock, is it always in a safe state?

  3. Describe a method by which an operating system can detect deadlock. How should this be done in a system in which there is just one instance of each resource type? What about a system in which there are multiple instances of some resource types?

Chapter 09 -- Memory Management
  1. Discuss various approaches to the management of main memory. Include fixed partitions, variable partitions, segments, and paging.

  2. What are external and internal fragmentation?

Chapter 10 -- Virtual Memory
  1. Discuss virtual memory, and various approaches to the implementation of virtual memory.

  2. Discuss implementations of page replacement.

  3. Discuss the issues involved in per-process frame allocation.

  4. Discuss ways of detecting and dealing with thrashing processes.

  5. Discuss the issues involved in choosing a page size.

Chapter 11 -- File-System Interface
  1. Describe several approaches to organizing a file system. Explain advantages and disadvantages of the various methods.

  2. Discuss some of the problems inherent in maintaining a directory structure in which arbitrary multiple links to files are allowed to exist.

Chapter 12 -- File-System Implementation
  1. Discuss the design goals important in the choice of a data structure for representing the free space list for a magnetic disk.

  2. Define contiguous, linked, and indexed file allocation methods. What kinds of file accesses are supported efficiently by each? What are some advantages and disadvantages of each? Which method suffers from the effects of external fragmentation?

  3. In order to support create, open, read, write, reset (seek), and delete operations on files, what information about each file must be stored by the operating system?

Chapter 13 -- I/O Systems
  1. Discuss the ways that typical device controllers interact with the CPU and other components of a modern computing system.

  2. Discuss polling, interrupt driven I/O, and DMA.

  3. Discuss interrupt levels.

  4. Discuss block-oriented and character-oriented I/O.

Chapter 14 -- Mass Storage Structure
  1. Explain various disk scheduling policies.

  2. What is involved in disk formatting?

  3. Discuss swap space implementations.

  4. Discuss disk striping and RAID's.

Chapter 15 -- Distributed System Structures
  1. Discuss computation and process migration.

  2. Discuss fault-tolerance.

  3. Discuss scalability.

  4. Discuss various approaches to managing and coordinating multiprocessor systems. Be sure to include loosely coupled vs. tightly coupled, and master/slave organization.

  5. Describe various network topologies.

  6. Define the term: Distributed System.

  7. What are the advantages of a distributed system?

  8. Describe several popular connection topologies of distributed systems.

  9. Discuss the following routing strategies: fixed routing, virtual circuits, and dynamic routing.

  10. Discuss the following connection strategies: circuit switching, message switching, and packet switching.

  11. Discuss CSMA/CD, token passing, and message slots as they relate to resolving contention.

  12. Discuss the ISO layers.

Chapter 16 -- Distributed-File Systems
  1. Discuss location transparency and location independence -- be able to define the two and explain the difference.

  2. Discuss some naming schemes for a distributed file system. Discuss their relation to location transparency, location independence, and administrative complexity.

  3. Discuss the benefits and disadvantages of server-side and client-side file caching. Address the relation to minimizing disk access delay and network transmission delay. Address the relation to potential loss of data and/or loss of cache consistency.

  4. Discuss the cache-consistency problem and approaches to a solution -- in particular client and server inititated approaches.

  5. Discuss disk caching versus RAM caching on the client side -- definitions & pro's and con's

  6. Discuss cache-update policies -- define write-through, delayed-write, write-on-close. Discuss pro's and con's.

  7. Discuss stateful versus stateless file service -- definitions & pro's and con's.

  8. Discuss some schemes for replicating files in a distributed filesystem

  9. Discuss the design and implementation of AFS

  10. Discuss the relative merits of NFS and AFS.

Chapter 17 -- Distributed Coordination
  1. Why do we require a process to advance its logical clock when it receives a message whose time-stamp is greater than the current value of its logical clock?

  2. Discuss ways that distribute processes can achieve mutual exclusion.

  3. Discuss ways that distributed processes can achieve atomic distributed transactions.

  4. Discuss ways that distributed processes can prevent deadlock.

  5. Discuss distributed deadlock detection.

  6. Discuss election algorithms.

Chapter 18 -- Protection
  1. Discuss domains, capabilities, access lists, and access matrices.

Chapter 19 -- Security
  1. Discuss authentication procedures.

  2. Discuss threats such as trojan horse, trap door, worm, virus.

  3. Discuss threat monitoring.

Chapter 20 -- The Linux System
  1. No questions yet.

Chapter 21 -- Windows 2000
  1. No questions yet.

Chapter 22 -- Historical Perspective
  1. Describe automatic job sequencing. What important advantage(s) did it bring to computing systems design?

  2. Describe off-line processing. What important advantage(s) did it bring to computing systems design?

  3. Describe spooling. How does it differ from off-line processing?

  4. For each of the following operating systems, name one important innovation it contributed: Atlas, XDS-940, THE, RC 4000, CTSS, MULTICS, OS 360, and Mach.