David D. Redell, et ell @ Xerox Business Systems
CACM 1980
|
How to design an OS for a personal computer? |
|
Emphasis not on sharing (= fair allocation of resources) or security, but on serving the PC user
|
| Personal computer operating system | |||||||
| Single user system, and support a single language: Mesa | |||||||
Close
coupling to the Mesa programming language
|
|||||||
Mesa
|
|||||||
| Resource management: focus not on fairness but on effectiveness | |||||||
Defensive
protection, not absolute
|
|
Two types of interfaces: public (for client) & private (for internal use) |
|||||||||
|
Representative public interfaces: file, virtual memory, streams, network communication, etc. |
|||||||||
|
Each interface has named items
|
|
File
|
|||||||||||||||||||||||||||||||||
|
Volume
|
|
Underlying Virtual Memory System
|
|||||||||||||||
|
Pilot's Spaces on top of underlying VM
|
|||||||||||||||
|
Allocation of spaces: by Space.Create
|
|||||||||||||||
|
Mapping to file pages: by Space.Map -- remember that only mmap in Pilot
|
|||||||||||||||
|
Swapping in and out: hinted by Space.Activate, Space.Deactivate, and Space.Kill
|
|||||||||||||||
|
Tight coupling between files and spaces
|
|
Three ways to access I/O devices: implicit, direct, indirect |
|||||||||||
|
Direct
|
|||||||||||
|
Implicit
|
|||||||||||
|
Indirect: Stream
|
|
Distinction between "tightly-coupled" processes and "loosely-coupled" processes |
|||||||||||||||||||||
|
Tight - should use shared-memory to communicate (e.g., single-machine parallel program)
|
|||||||||||||||||||||
|
Loose - should use Pilot communication interfaces (e.g., print server) |
|||||||||||||||||||||
|
All machines in "Pilot internet" are Pilot machines, even routers |
|||||||||||||||||||||
|
Protocol stacks are pretty much like TCP/IP stack
|
|||||||||||||||||||||
|
Interfaces
|
|
Mesa language features: recursion, coroutine, concurrent processes, signal, etc. |
|||||||||||||||||
|
Procedure call: Pilot only handles traps which occur when space for activation records are exhausted |
|||||||||||||||||
|
Coroutine: Pilot gets involved during initialization |
|||||||||||||||||
|
Concurrent processes: Pilot creates processes and handles the termination |
|||||||||||||||||
|
World-swap - actually two different machine exist at the same time in Pilot: one for normal execution and one for debugging
|
|
Pilot is composed of components, which in turn are composed of Mesa modules |
|
|
Hierarchical structure - they called "manager/kernel" structure with high-level manager being on top of kernel |
|
Storage system is comprised of file-system and VM |
|||||||||||
|
Both systems maintains DBs which are too big to fit in memory. So file-system needs VM, and VM needs file-system and VM again. What a knot!
|
|||||||||||
|
Kernel: swapper & filer
|
|||||||||||
|
Manager: file manager & VM manager
|
|||||||||||
|
Interaction between kernel & manager
|
|
Hierarchy
|
|||||||||||
|
Swap unit cache
|
|||||||||||
|
Projection
|
|
Implementation splits roughly equal among Mesa, underlying machine, and Pilot |
|
|
Basic monitors and condition variables are implemented by Mesa and machine |
|
|
Pilot's concurrency support is implemented using those monitors and condition variables |
|
Each file page has a label--separate record that gives info about the page
|
|||||||||||
|
Scavenger periodically scans entire volumes and construct map |
|||||||||||
|
Map is just redundant fast-lookup database for volumes |
|||||||||||
|
Robustness
|
|||||||||||
|
High-level robustness
|
|||||||||||
|
Volumes of old Pilot can be easily migrated to newer Pilot
|
|
Routers - software switches |
|
Small group (6-8 people), 18 months |
|
|
24,000 lines of Mesa |
| Understand the difference between time-sharing system and PC | |
| Debugger is neat - any error pops you into it auto-magically | |
| Powerful VM | |
| Can give advice to OS | |
| Security - connected to network, but claim is that security is not a big deal. True? | |
| Mesa everywhere, Pilot everywhere | |
| Design is quite different for PC versus minicomputer - what does this say about Linux? |