COSC 360: Operating Systems

Study Guide 1

Process Virtualization

Chapters Covered:

  • Chapter 4 (Processes)
  • Chapter 5 (Process API)
  • Chapter 6 (Direct Execution)
  • Chapter 7 (CPU Scheduling)
  • Chapter 8 (Multi-Level Feedback)
  • Linux Pocket Guide (Linux: A First View, The Filesystem, Shell Features)

Recommendations:

Read over each chapter. Focus on major sections, terms in bold, algorithms/policies, system calls, and figures. It is also recommended to revisit the Python simulations and know how to run them. For the Linux book, focus on major ideas and commands (I would not expect you to remember little details like the various flags for a command).

Topics Covered:

Chapter 4 (Processes)

  • Process
  • Time sharing
  • Context switch
  • Program counter (PC)
  • Stack pointer
  • Policies
  • Address space
  • Process API (create, destroy, wait, miscellaneous control, status)
  • Heap
  • Stack
  • Process states (running, ready, blocked)
    • Scheduler
  • Process list
  • Process Control Block (PCB)
  • process-run.py

Chapter 5 (Process API)

  • fork(), exec(), wait(), waitpid()
  • Code examples
  • Process ID (PID)
  • Parent / child processes
  • Deterministic execution vs. Nondeterministic execution
  • kill()
  • Manual (man) pages
  • The top command
  • Superuser vs. user
  • fork.py

Chapter 6 (Direct Execution)

  • Limited direct execution
  • User mode vs. kernel mode
    • System call
  • trap
  • Privileged operation
  • Cooperative approach
  • Interrupts
  • Context switches

Chapter 7 (CPU Scheduling)

  • Scheduling policies
  • FIFO / FCFS
    • SJF
  • STCF / PSJF
    • Round robin
  • Workload
  • Scheduling metric (turnaround time vs. response time)
  • Preemptive vs. non-preemptive
  • Time slice (scheduling quantum)
  • Fair policy
  • Blocked
  • scheduler.py

Chapter 8 (Multi-Level Feedback)

  • Multi-level Feedback Queue (MLFQ)
    • Priority level
  • Starvation
  • Priority boosting
  • Gaming tolerance

Linux Pocket Guide

  • Four major parts of Linux
  • Relative vs. absolute paths
  • Directories
  • File protections
  • Wildcards
  • Dot files
  • Shell variables
  • Search path
  • Aliases
  • Input/output redirection
  • Pipes
  • Combining commands
  • Commands (ls, cd, echo, pwd, who, type, export, printenv, exit, sleep, cat, kill, jobs)