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

Page fault

External pagers

results matching ""

    No results matching ""