Controls and coordinates use of hardware among various applications and users
Application programs
Define the ways in which the system resources are used to solve the computing problems of the users (word processors, compilers, web browsers, database systems, video games)
Users
People, machines, other computers
Operating system
A program that acts as an intermediary between a user of a computer and the computer hardware
Operating system goals
Execute user programs and make solving user problems easier
Make the computer system convenient to use
Use the computer hardware in an efficient manner
Operating system
A resourceallocator that manages all resources and decides between conflicting requests for efficient and fair resource use
Operating system
A control program that controls execution of programs to prevent errors and improper use of the computer
There is no universally accepted definition of an operating system
"Everything a vendor ships when you order an operating system" is a good approximation of an operating system definition
"The one program running at all times on the computer" is the kernel
Design issues for operating systems
Efficiency
Robustness
Flexibility
Portability
Security
Compatibility
Efficiency
The amount of useful work accomplished by the system compared to the time and resources used
Robustness
The ability to perform well not only under ordinary conditions but also under unusual conditions that stress its designers' assumptions
Unix-like operating systems are known for their robustness, as they can operate for prolonged periods without crashing or requiring rebooting
Flexibility
The ability to be tailored or changed, either statically or dynamically, to the requirements of specific applications or application domains
Portability
The ability of an application to run properly in a different platform to the one it was designed for, with little or no modification
Categories of dangers to operating system security
Security violations
Program threats
System threats
Network threats
Compatibility
The capacity for two systems to work together without having to be altered to do so
Main memory
The only large storage media that the CPU can access directly, typically volatile
Secondary storage
Extension of main memory that provides large nonvolatile storage capacity
Hard disks
Rigid metal or glass platters covered with magnetic recording material
Solid-state disks
Faster than hard disks, nonvolatile
Storage systems are organized in a hierarchy based on speed, cost, and volatility
Caching
Copying information into faster storage system; main memory can be viewed as a cache for secondary storage
Device driver
Provides uniform interface between controller and kernel to manage I/O
Direct Memory Access (DMA)
Allows I/O devices to access main memory directly, without going through the CPU
Uniprocessor system
Has one main CPU capable of executing a general-purpose instruction set
Multiprocessor system
Has two or more processors in close communication, sharing the computer bus and sometimes the clock, memory, and peripheral devices
Benefits of multiprocessor systems
Increased throughput
Economy of scale
Increased reliability
Fault tolerant systems
Can continue providing service proportional to the level of surviving hardware after a failure of any single component