Introduction
Do we need an OS?
- not if you're a microwave oven, but...
- convenience: ease the use of machine by handling low-level tasks
- efficiency: maximize throughput by efficient usage of machine resources
- evolvability: allow dev of new features while maintaining compatibility
- use OS techniques even if you're building controller for microwave oven
Why should we learn OS?
- amount IBM has spent on dev of MVS vs. budget of Apollo space program: 1.7
- (MVS contains > 1.5 million lines of code)
- % of computer-related jobs requiring significant OS experience 38.9%
of which UNIX experience constitutes ~65%
- average salaries with 3 yrs experience:
- system management > $60K US
- system design > $70K US
- snr consultant > $75K US
- Microsoft budget to promote W95 > op costs of Xerox PARC since inception
Evolution of Computing from the OS perspective:
- early computers -- ENIAC to mid 50's:
- program by switches - no system software
- devices were very simple - didn't need resource abstraction
- no concurrency (simultaneous multiple processes)
- application program responsible for all I/O
- simple batch systems -- mid 50's - 60's:
- human OS
- key-punched card stacks put into "job queue"
- step forward: allowed multiple users to share machine
- step back: no more real-time interaction/interactive debugging
- multiprogrammed batch systems -- 60's:
- took advantage of different time scales at which CPU and peripherals
work to improve CPU usage
- introduced multiprogramming: time-MUX processor, space-MUX memory
- objective: maximize job throughput
- short-term scheduling or "swapping" of jobs
- timesharing systems -- mid 60's - 70's:
- users work on central machine at interactive consoles
- computer provides virtual machine (VM) to each user
- timesharing allows users excl. control of (comparitively slower) VM
- objective: provide equitable amounts of processor/memory to each VM
- minicomputers, microcomputers (early PCs) -- late 70's - early 80's:
- out of the special-purpose room into the office
- bare bones system software in ROM for device interface
- one user, one program -- huge step back
- but changed the way we view computers
(from corporate resource to personal tool)
- mature PC's and workstations -- mid 80's - 90's:
- evolution to multi-user, multi-process, networked environment
What does an OS do?
- manages hardware resources of computer
- time multiplexes the processor (process management)
- space multiplexes memory (memory management)
- [time multiplexes memory (virtual memory systems)]
- implements file system (file management)
- I/O system (device management)
- process management
- create, destroy, block, run a process
- allocate/deallocate resources to processes as needed
- allows multiple users (processes) to share machine
- memory management
- finite amount of memory must be shared between different programs
executing concurrently
- must protect each running program from having its memory
area corrupted by others
- programs often need more memory than is available -- how to provide?
- use virtual memory by integrating secondary storage devices
- file management
- abstracts operations on low-level storage devices (disks, tapes, etc.)
- need to do so was instrumental in development of OSs
- defines organization of file system hierarchy
- device management
- allocate, isolate/share devices (disks, modems, printers, etc.)
- hides low-level details of control
- provides generic interface through device drivers
Where the OS sits:
end user
applications > application programmer/designer
system utilities > >
OS > system programmer or designer works here
hardware
Important OSs:
- UNIX
- Mach
- DOS
- MacOS