Mach
Main idea
- virtual memory management
- maintain all VM state in a Machine-independent module
Treat hardware pages tables /TLBs as caches of machine independent info
Difference?
- Can allocate any region in VAS(large , sparce)
- Children can inferit regions for sharing (copy-on-write)
- Memory mapped files
- User-level pagers and backing store
data strc
- Resident page table
- Keep track of every physical page
- Linked by
- Memory object using the page
- Address maps
- Memory object
- pmap
resident page table
Memory obj. List
The memory obj
Represents A contiguous block of virtual memory ( a file) Tasks access by mapping obj into their address space Contains any resident pages and port for backing store. Physical….
The address map
|First | Current | Last| I \ | \ v v Could map code segment could map stack segment (inheritance = share) (inheritance = copy)
Each process has this address map
Inheritance
Code segment is shared between parent and child Child inherits a copy of data segment of
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
shadow objects
Page replacement
- Similar to that of VAX VMS
- Global FIFO pool replacing resident sets of all programs
- Much easier to tune
- Does not support real-time processes
- Can use external pages