Operating Systems
Types
- Interactive
- The user controls the operating system
- Real Time
- For when reacting to things need to be instant
- Typically for embedded
- Batch
- System that does a very repetitive task
- Do not care about the user
- Ex: mainframe that just prints bills
Architecture

- Monolithic
- The whole OS is compiled together
- Linux
- Microkernel
- The actual kernel space is as small as possible (just hardware interface) and the rest is implemented in the user space
- Has a lot of delay in message passing
- Educational kernels like Minux (because it makes it easier for students to modify)
- Hybrid
- Combines aspects of both
- Darwin and Windows NT
Purpose
- Resource Manager
- CPU Time (Scheduler)
- Working Memory (Memory Manager)
- Storage (File System)
- I/O Devices (communication via drivers)
- Extended Machine
- Provides users and programs with a better, simpler, cleaner model of the computer
- The OS is NOT
- User Interface (that is just another program)
- System Tools (tools to manage the system)
- Libraries
Trapping to Kernel Space
System Calls
Hardware Interrupts
Unfiled
Generations
- Vacuum tubes, Plugboards, Perforated Cards (1945-55)
- Programmer/user = operator
- Single small & simple application program at a time
- No OS
- Unreliable (rarely commercial, mostly military or research)
- Transistor and Batch Systems (1955-65)
- Batch system — user is not the operator
- Reliable enough to be sold (typically to large companies)
- Uni-programmed: would run multiple jobs in a single queue (not pipelined at all)
- First sense of an operating system
- Later upgraded to multi-programmed (would pipeline large scale resources)
- ICs and Multiprogramming
- Has user interaction
- User is back to being the operator
- Timesharing system
- Each user has a terminal that connects to a mainframe
- Each user is given equal processing time
- Machine is now fast enough that shared machine still feels interactive
- Has user interaction
- Personal Computers (1980-Present)
- Mobile Computers (1990-Present)