Best Effort Systems

The role of operating systems
  • To abstract devices, resources and services into uniform and simple interfaces.
  • To manage shared access to devices, resources and services (all referred to as resources).
  • Principles of best-effort systems
  • Availability
  • Utilization
  • Fairness
  • Graceful degradation
  • Generality/Unspecialized
  • Speed
  • Simplicity
  • Examples
  • Unix
  • Windows
  • MacOS
  • Essentially all desktop systems
  • Resources
  • CPU
  • Memory
  • Files
  • Network
  • The kernel
  • System services
  • Devices Each of these has to be managed according to the best-effort principles. CPU Scheduling
  • FCFS - Simple, fair (in some sense)
  • SJN - Optimal (in some sense)
  • Round Robin - Multi-level feedback queues
  • Priority queues - Preemptive priority-based scheduling
  • Other? Memory
  • Essentially FCFS
  • Can preallocate (done in the kernel)
  • Virtual memory means that there is always enough memory - you effectively never run out.
  • However, the more virtual memory in use, the slower everything runs
  • This is a perfect example of best effort graceful degradation and fault tolerance.
  • Other schemes? Files
  • 2 issues: Allocation of space on disk and scheduling of requests
  • Allocation
  • assumed to be more or less infinite
  • FCFS
  • Scheduling (a system service)
  • FCFS, optimized for efficiency, fairness, availability
  • Synchronous in most systems i.e., applications block while waiting
  • Can be asynchronous (high performance/parallel systems) Network
  • Synchronous
  • FCFS
  • Nondeterministic service times (dependent on other processes/computers) The kernel
  • In monolithic kernels, one application at a time can be in kernel mode (i.e. servicing a system call)
  • All other applications wait
  • Time-sharing context switches do not occur until application has left kernel mode
  • In true microkernels (e.g., Mach) multiple applications can be in "kernel mode" simultaneously. Other system services
  • Accesses to system services (key server, ...) must also be scheduled.
  • Usually FCFS Other Devices
  • Access to other devices is also scheduled.
  • Depends on device type ----- Resources come on two flavors
  • Consumable
  • Serially reusable
  • This affects the options for scheduling Consumable
  • Once it is allocated it cannot be used by any other process
  • If it isn't used at the time at which it is available, it is wasted
  • Examples: CPU cycles, network packets, disk requests (sort of) Serially reusable
  • After it is used by one process, it can be used by another process
  • If it isn't used now, it can be used later
  • Examples: Memory, disk space, ... Granularity of the resource is also an issue
  • CPU cycles - allocated in blocks of thousands
  • Memory - allocated in words (multiple bytes)
  • Disk - allocated in blocks (hundreds of bytes)
  • Network - allocated in packets (tens to thousands of bytes)
  • Other resources - usually 1 request at a time ----- Applications
  • Usually non-critical Examples
  • Word processing
  • Software development
  • Spreadsheets
  • ...