Virtual Memory, Processes, and Sharing in MULTICS Robert C. Daley and Jack B. Dennis - 1967 ------------------------------------------------- Summary: This paper describes the motivation behind the design and implementation details of the Multics virtual memory system. Features and motivations of the Multics memory system: F1. Give each user a large machine-independent virtual memory. M1. Relieves the user of having to manage physical storage. Before, the user had to preplan the transfer of information between the various storage levels. F2. Allow procedures to use other procedures knowing only its name without knowledge of its storage requirements. M2. Allows complex procedures to be constructed by building on the work of others. F3. Permit sharing of procedures and data among users. M3. Reduces memory usage and allows close interaction between processes. F4. One-to-one correspondence between processes and virtual memories. M4. F5. Memory is segmented into logically distinct units of information. M5. [Allows sharing to occur naturally. A segment contains a unit of information that is likely to be shared and access control is done per segment.] F6. No concept of a file; primary storage acts as a cache for all of secondary storage (file = segment). M6. Large address space makes this possible. Segmentation: - Two segment types: 1) data and 2) procedure - Large segments are paged in order to allow noncontinguous blocks to be referenced as a logically contiguous set of addresses; this simplifies storage allocation. Intersegment linking and addressing: - Motivation: sharing (F3) and procedure composition (F2) - Requirements: 1. Procedure segments must be nonself-modifying (pure); otherwise, sharing of these segments could not occur. 2. Processes must be able to call a routine by its symbolic name. 3. Segments of procedures must be invariant to the recompilation of other segments. 4. Segment numbers cannot appear in procedure segments because processes sharing the segment may assign different segment numbers for any segment it uses. To solve this problem, a level of indirection is added using the linkage segment. Discussion: - Discuss the pro's and con's of the various design features, especially F3 (sharing), F5 (segmentation), and F6 (single-level store). - How is sharing done today? Compare Multics linking with UNIX and Windows dynamically-linked libraries. - In Multics, switching a process involves little more than swapping processor register status and substituting a new descriptor base? What is required in today's OS's?