machine-independent virtual memory management for paged ...
Transcript of machine-independent virtual memory management for paged ...
![Page 1: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/1.jpg)
MACHINE-INDEPENDENT VIRTUAL MEMORY MANAGEMENT FOR PAGED UNIPROCESSOR AND MULTIPROCESSOR ARCHITECTURES
R. Rashid, A. Tevanian, M. Young, D. Golub, R. Baron, D. Black, W. Bolosky and J. ChewCarnegie-Mellon UniversityIEEE Trans. on Computers,1988
![Page 2: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/2.jpg)
THE PAPER
• Presents the Mach virtual memory system• Three most important issues:
– Use of external pagers to support mapped files
– Concept of inheritance – Copy on write
• Shortened version of A. Tevanian’s dissertation
![Page 3: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/3.jpg)
GENERAL OBJECTIVES
• To be as portable as the UNIX virtual memory system while supporting more functionality:– Mapped files– Threads through page inheritance
• To support multiprocessing, distributed systems and large address spaces
![Page 4: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/4.jpg)
Virtual Memory and I/O Buffering (I)• Current situation:
Swaparea
Process in main memory
I/O buffer
DiskDrive
System callsVirtualMemory
![Page 5: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/5.jpg)
Virtual Memory and I/O Buffering (II)
• In a VM system, we have– Implicit transfers of data between main
memory and swap area (page faults, etc.)– Implicit transfers of information between the
disk drive and the system I/O buffer– Explicit transfers of information between the
I/O buffer and the process address space
![Page 6: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/6.jpg)
Virtual Memory and I/O Buffering (III)
• I/O buffering greatly reduces number of disk accesses
• Each I/O request must still be serviced by the OS:– Two context switches per I/O request
• A better solution consists of mapping files in the process virtual address space
![Page 7: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/7.jpg)
Mapped files (I)
Swaparea
Process in main memory
“External”Pager
DiskDrive
Usual VMPager
![Page 8: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/8.jpg)
Mapped files (II)
• When a process opens a file, the whole file is mapped into the process virtual address space– No data transfer takes place
• File blocks are brought in memory on demand• File contents are accessed using regular
program instructions (or library functions)• Shared files are in shared memory segments
![Page 9: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/9.jpg)
Mach implementation
Swaparea
Process virtual address space
“External”Pager
FileSystem
Usual VMPager
![Page 10: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/10.jpg)
Comments• Solution requires very large address spaces• Most programs will continue to access files through
calls to read() and write()– Function calls instead of system calls
• Two major problems– Harder to know the exact size of a file– Much harder to emulate the UNIX consistency model
in a distributed file system• How can we have atomic writes?
![Page 11: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/11.jpg)
Threads
• Also known as lightweight processes• Share the address space of their parent• Can be
– Kernel-supported– Implemented at user level
• Kernel-supported threads are essential in multiprocessor architectures
![Page 12: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/12.jpg)
Mach VM user interface
• Consistent on all machines supporting Mach: including the features that cannot be efficiently implemented on a specific hardware
• Full support for multiprocessing: thread support, efficient data sharing mechanisms, etc..
• Modular paging: external pagers are allowed to implement file mapping or recoverable virtual memory (for transaction management).
![Page 13: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/13.jpg)
VM IMPLEMENTATION
• Main implementation problem was hardware incompatibilities
• BSD VM implementation was tailored to VAX hardware (and its lack of a page-referenced bit)
• Mach designers wanted a design that would be architecture neutral– Many competing microprocessor architectures
were then available
![Page 14: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/14.jpg)
Data structures• Resident page table: keeps track of Mach pages
residing in main memory• Memory object: a unit of backing storage such as a
disk file or a swap area• Address map: a doubly linked list of map entries
each of which maps a range of virtual addresses to a region of a memory object
• P-map: the memory-mapping data structure used by the hardware
![Page 15: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/15.jpg)
The address map
First Current LastFirst
OffsetFrom ToVM
ObjectProtection InheritancePrevious Next
could map code segment(inheritance = share)
could map stack segment(inheritance = copy)
OffsetFrom ToVM
ObjectProtection InheritancePrevious Next
![Page 16: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/16.jpg)
Inheritance (I)
• After a regular UNIX fork()– code segment is shared between parent and
child– child inherits a copy of data segment of parent
• Mach inheritance attribute specifies if pages in a given range of addresses are to be shared, copied or ignored
![Page 17: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/17.jpg)
Inheritance (II)
• Pages of a mapped file are always shared between parent and child to preserve file sharing semantics
• Pages in the data segment can either be – copied to maintain UNIX fork() semantics– shared if we want to create a thread instead
of a regular UNIX process
![Page 18: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/18.jpg)
Lazy evaluation
• Mach VM system postpones execution of tasks whenever possible
• Approach is based on the belief that task is likely to become unnecessary– copying whole data segment of parent process in
a fork() that is very likely to be followed by an exec()
– Mach uses copy-on-write
![Page 19: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/19.jpg)
Copy on write (I)
• Already present in Accent• Best solution for efficient implementation of UNIX
fork()• When Mach is told to copy a range of pages, it
lets processes share the same copy of each page but traps write accesses
• Only pages that are modified are copied
![Page 20: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/20.jpg)
Copy on write (II)
Process A and B share a range of pages
Process B tries to modify shared page
COW creates new copy
X
![Page 21: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/21.jpg)
Page replacement policy (I)
Global pool of pagesFIFO
Global QueueDiskDisk
Expelled pagesExpelled pages Reclaimed pagesReclaimed pages
![Page 22: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/22.jpg)
Page replacement policy (II)
• Similar to that of VAX VMS– Requires little hardware support
• Major change is global FIFO pool replacing resident sets of all programs– Much easier to tune– Does not support real-time processes– Can use external pagers
![Page 23: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/23.jpg)
Locks and deadlocks
• Mach VM algorithms rely on locks to achieve exclusive access to kernel data structures– Price to pay for a parallel kernel
• To prevent deadlocks, all algorithms gain locks using the same linear ordering– Well known deadlock prevention technique
![Page 24: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/24.jpg)
Miscellanea• Total size of the machine-dependent part of
Mach VM implementation is about 16 Kbytes.• Copy-on-write is used to implement efficient
message passing :– Messages are shared by sender and receiver
until either of them modifies the data.• Shared libraries are supported through the
mapped file interface
![Page 25: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/25.jpg)
Problem with inverted page table
• IBM RT had a single inverted page table for its whole memory– One page table entry per page frame– A page frame could not belong to two processes
at the same time• Cannot implement shared pages in an efficient
fashion– Mach still offers the feature
![Page 26: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/26.jpg)
FINAL COMMENTS
• Paper is hard to read but covers a lot of ground• You should at least understand
– mapped files– external pagers and memory objects– the concept of inheritance– copy-on-write– the Mach page replacement policy
![Page 27: machine-independent virtual memory management for paged ...](https://reader031.fdocuments.net/reader031/viewer/2022022416/586ccdf61a28ab5f288b8381/html5/thumbnails/27.jpg)
More about Mach
• Mach provides UNIX emulation through either– a UNIX emulator in the kernel– a UNIX emulation server in user space
• Even tried to emulate UNIX through a set of specific servers, all in user space– GNU’s HURD