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? |