memory - os.inf.tu-dresden.de · tu dresden mos: memory region manager 33 • intermediate pager...
TRANSCRIPT
![Page 1: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/1.jpg)
MICHAEL ROITZSCH
Faculty of Computer Science Institute of Systems Architecture, Operating Systems Group
MEMORY
![Page 2: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/2.jpg)
TU Dresden MOS: Memory
AGENDA
�2
• IntroductionMonolithic vs. microkernels L4 concepts: Threads and IPC Fiasco.OC/TUDOS introduction
●
●
●
• Today: Memory Management – Task creation – Page-fault handling – Flexpages – Hierarchical pagers – Region manager – Dataspaces
![Page 3: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/3.jpg)
TU Dresden MOS: Memory
TASK CREATION
�3
![Page 4: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/4.jpg)
TU Dresden MOS: Memory
ADDRESS SPACE
�4
4GB Thread needs to access code/data/stack/… to execute3GB
ESP
EIP
0
Fiasco.OC Microkernel
Sigma0 Root Pager
Moe Root Task
Kernel Area
Stack
Code
Data
![Page 5: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/5.jpg)
TU Dresden MOS: Memory
CREATION
�5
/* Create a new task. */ l4_msgtag_t L4::Factory::create_task (Cap< Task > const &
l4_fpage_t const & l4_utcb_t
task_cap, utcb_area, *utcb = l4_utcb()
)
/* Create a new thread. */ l4_msgtag_t L4::Factory::create_thread (Cap< Thread
l4_utcb_t> const & target_cap,
*utcb = l4_utcb()
)
![Page 6: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/6.jpg)
TU Dresden MOS: Memory
CREATION
�6
/* Commit the given thread-attributes object. l4_msgtag_t L4::Thread::control (Attr const & attr)
*/
/* Exchange basic thread registers. l4_msgtag_t
*/
L4::Thread::ex_regs (l4_addr_t l4_addr_t
ip, sp,
/* /*
instruction pointer */stack pointer */
l4_umword_t flags,l4_utcb_t *utcb = l4_utcb()
)
![Page 7: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/7.jpg)
TU Dresden MOS: Memory
EX_REGS
�7
4GB
3GB
ESP
EIP
0:ex_regs
Fiasco.OC Microkernel
Sigma0 Root Pager
L4::Thread:
Moe Root Task
Kernel Area
![Page 8: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/8.jpg)
TU Dresden MOS: Memory
EX_REGS
�8
4GBCPU tries to fetch instruction
Page fault exception at EIP3GB ➔
ESP
EIP
0
Fiasco.OC Microkernel
Sigma0 Root Pager
Moe Root Task
Kernel Area
![Page 9: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/9.jpg)
TU Dresden MOS: Memory
PAGE FAULT HANDLING
�9
![Page 10: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/10.jpg)
TU Dresden MOS: Memory
PAGE FAULT
�10
• Page fault exception is caught by kernel page- fault handler No management of user memory in kernel Invoke user-level
•
•EIP memory management →
Pager
Fiasco.OC Page Fault
Microkernel Handler
Application’s address space
![Page 11: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/11.jpg)
TU Dresden MOS: Memory
PAGER
�11
•
•
Thread which is invoked on page fault
Fiasco.OC: each thread has a (potentially different)pager assigned
Fiasco.OC Page Fault
Microkernel Handler
Pager’s address space
Pager Memory
Pager Code
Application’s address space
![Page 12: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/12.jpg)
TU Dresden MOS: Memory
PAGER INVOCATION
�12
•
•
•
Communication with pager thread using IPC
Kernel page fault handler sets up IPC to pager
Pager sees faulting thread as sender of IPC
call(fault address, fault eip)
Fiasco.OC Page Fault
Microkernel Handler
Pager’s address space
Pager Memory
Pager Code
Application’s address space
![Page 13: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/13.jpg)
TU Dresden MOS: Memory
PAGE-FAULT IPC
�13
UTCB[0]
UTCB[1]
w = 0 w = 1 p = 0 p = 1
read page fault write page fault no page present page present
faulting EIP (32)
fault address / 4 (30) w p
![Page 14: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/14.jpg)
TU Dresden MOS: Memory
PAGER REPLY
�14
• Pager maps pages of it's own address space to the application's address space
• Flexpage IPC enables these mappings
Fiasco.OC Microkernel
Page Fault Handler
Pager’s address space
Pager Memory
Pager Code
Application’s address space
![Page 15: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/15.jpg)
TU Dresden MOS: Memory
PAGE MAPPING
�15
• map() creates an entry in the receiver's address space pointing to the same page frame – In hardware: page table entry
• Only valid pager address space entries can be mapped
map
Virtual memoryVirtual memory
Physical memory
Fiasco.OC Microkernel
Pager’s address spaceApplication’s address space
![Page 16: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/16.jpg)
TU Dresden MOS: Memory
PAGE GRANTING
�16
• ➔
Special case: grant pages (flag: L4_FPAGE_GRANT)
Removes mapping from sender's address space
grant
Virtual memoryVirtual memory
Physical memory
Fiasco.OC Microkernel
Pager’s address spaceApplication’s address space
![Page 17: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/17.jpg)
TU Dresden MOS: Memory
PAGE GRANTING
�17
• ➔
Special case: grant pages (flag: L4_FPAGE_GRANT)
Removes mapping from sender's address spaceATTENTION: aliases remain➔
grant
Virtual memoryVirtual memory
Physical memory
Fiasco.OC Microkernel
Pager’s address spaceApplication’s address space
![Page 18: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/18.jpg)
TU Dresden MOS: Memory
PAGE UN-MAPPING
�18
• Removes entries to a page frame (fpage is specified in invoker's address space)
• Dedicated system call: do not need partner's consent
a database unmap
Kernel tracks mappings in➔
Virtual memoryVirtual memory
Physical memory
Mapping databaseMicrokernel
Fiasco.OC
Pager’s address spaceApplication’s address space
![Page 19: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/19.jpg)
TU Dresden MOS: Memory
FLEXPAGES
�19
![Page 20: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/20.jpg)
TU Dresden MOS: Memory
FLEXPAGE TYPES
�20
• Flexpages represent resources attached to an address space
• Flexpages in Fiasco.OC are used to describe:Memory pages I/O ports Capabilities
●
●
●
• Today: only flexpages for memory
![Page 21: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/21.jpg)
TU Dresden MOS: Memory
FLEXPAGE IPC
�21
• Size-aligned • Sizes are powers of two → 2size, smallest is hardware page• Source and target area of a map IPC are described by
flexpages
l4_ipc_receive(…)
Address Space
l4_ipc_send(…)
send base(32)
page address(20) size(6)~(2) rights(4)
page address(20) size(6)~(2) rights(4)
Receiver’s
Receive Window
Sender’s Address Space
![Page 22: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/22.jpg)
TU Dresden MOS: Memory
FLEXPAGE OFFSET
�22
• Send flexpage is smaller than the receive windowTarget position is derived from send flexpage●
alignment and send base
l4_ipc_send(…) l4_ipc_receive(…)
(20) (2)(6)page address size ~ rights(4)
send base(32)
page address(20) size(6)~(2) rights(4)
![Page 23: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/23.jpg)
TU Dresden MOS: Memory
FLEXPAGE OFFSET
�23
• Send flexpage is larger than receive windowTarget position is derived from receive flexpage alignment and send base
●
Send base depends on information about the receiver➔
l4_ipc_send(…) l4_ipc_receive(…)
(20) (2)(6)page address size ~ rights(4)
send base(32)
page address(20) size(6)~(2) rights(4)
![Page 24: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/24.jpg)
TU Dresden MOS: Memory
PAGE FAULT
�24
• Kernel page fault handler sets receive window to whole address spacePager can map more than just one page, where the➔
page fault happened to the client
Address SpacePager’sApplication's
Address Spacesend base → pf address
page address(20) size(6) ~(2) rights(4)
whole space
Page Fault Receive Window
Fiasco.OC Microkernel
Page Fault Handler
![Page 25: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/25.jpg)
TU Dresden MOS: Memory
ROOT TASK
�25
• ➔
Pages are mapped as they are neededdemand paging
esp
eip
Fiasco.OC Microkernel
Root Task’s address space
Memory
App Code Section
App Data Section
Roottask
Application’s address space
Stack
Code
Data
![Page 26: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/26.jpg)
TU Dresden MOS: Memory
MANAGEMENT
�26
• Initial pager can only implement basic memory management No knowledge about application requirements•
Different requirements at the same time●
• Missing services for advanced memory management
e.g. no disk driver for swapping pagers on top
●
• Build more advanced initial one
Pager hierarchy
of the
➔
![Page 27: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/27.jpg)
TU Dresden MOS: Memory
HIERARCHICAL PAGERS
�27
![Page 28: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/28.jpg)
TU Dresden MOS: Memory
PAGER HIERARCHY
�28
Fiasco.OC Microkernel
Phys. Memory
1-to-1 mapped Root Task
Pager 2Pager 1
Disk DriverPager 3
Application Application
![Page 29: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/29.jpg)
TU Dresden MOS: Memory
EXAMPLE
�29
L Linux Applications
• L4Linux implements Linux paging policy
• RT pager implements real-time paging policy(e.g. no swapping)
L4Linux Applications
Fiasco.OC Microkernel
Phys. Memory 1-to-1 mapped Initial Address Space
RT Pager
Linux Swap Linux Paging
L4Linux Kernel Server
Real-Time Applications
![Page 30: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/30.jpg)
TU Dresden MOS: Memory
REGION MANAGER
�30
![Page 31: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/31.jpg)
TU Dresden MOS: Memory
VIRTUAL MEMORY
�31
• •
Pager has to specify send base Pager needs to know client's address space layout
pager (e.g. L4Linux)No problems with only one●
• Possible address
conflicts space:
if more than one pager manages an
Phys. Memory
Virtual memory pagers
must be managed independent of➔
Fiasco.OC Microkernel
1-to-1 mapped Initial Address Space
Pager 2Pager 1
Disk DriverPager 3
ApplicationApplication
![Page 32: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/32.jpg)
TU Dresden MOS: Memory
REGION MAP
�32
VM Region Pager
• Per the
address address
space space
map that keeps track which pager
part ofis managed by which
Region Map
<start, end> <start, end>
<start, end>
Pager 1 Pager 2
Pager 2
Address space
Pager 1
Pager 2
Pager 2
![Page 33: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/33.jpg)
TU Dresden MOS: Memory
REGION MANAGER
�33
• Intermediate pager that identifies which pager should handle a page fault Resides in the application's address space•
➔ Region manager is the pager of all threads of a task
call( region mgr, pf addr, pf eip, …)
Fiasco.OC Page-Fault
Microkernel Handler
Pager 1
Pager Memory
Pager Code
VM Region Pager
<start, end> <start, end> <start, end>
Pager 1 Pager 2 Pager 2
Application
Region Mgr
Pager 1
Pager 2
Pager 2
![Page 34: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/34.jpg)
TU Dresden MOS: Memory
REGION MANAGER
�34
• •
Region manager calls the pager that is responsible Receive window gets restricted to the area managed by that pagerNo interference between different pagers➔
Call(pager1, pf addr, pf eip, receive window,...)
Fiasco.OC Page-Fault
Microkernel Handler
Pager 1
Pager Memory
Pager Code
VM Region Pager
<start, end> <start, end> <start, end>
Pager 1 Pager 2 Pager 2
Application
Region Mgr
Pager 1
Pager 2
Pager 2
![Page 35: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/35.jpg)
TU Dresden MOS: Memory
ABSTRACTION
�35
• •
Memory management in terms of pages Application’s view to memory:
so far
code / data sections memory mapped files anonymous memory (heaps, network / file system buffers …
●
●
stacks, …)●
●
●
Abstraction to map this view to low-level memory management
➔
![Page 36: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/36.jpg)
TU Dresden MOS: Memory
DATASPACES
�36
![Page 37: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/37.jpg)
TU Dresden MOS: Memory
DATASPACES
�37
• •
Dataspace: unstructured data container Abstraction for anything that contains data:
Files Anonymous memory I/O adapter memory …
●
●
●
●
• Dataspaces are Managers Dataspaces can address space
implemented by Dataspace
• be attached to regions of an
![Page 38: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/38.jpg)
TU Dresden MOS: Memory
DS MANAGER
�38
• • ➔
DS Manager determines the semantic of a dataspace Each DSM is the pager for its dataspacesImplements the paging policy (page replacement etc.)
Dataspaces
ds1
ds2
Dataspace Manager’s Address Space
Dataspace Manager’s Memory
![Page 39: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/39.jpg)
TU Dresden MOS: Memory
DS & REGIONS
�39
• Region map keeps track which dataspaces are attached to which virtual memory regions
• Region offsets
manager translates page faults to dataspace
Dataspaces
ds1
ds2
Region MapVM Region Dataspace
<start, end> <start, end> <start, end>
Dataspace Manager 1, 1 Dataspace Manager 2, 1
Dataspace Manager 2, 2
Dataspace Manager’s Address Space
Dataspace Manager’s
Memory
Application’s Address Space
Dataspace Manager 1 Dataspace 1
Dataspace Manager 2
Dataspace 1
Dataspace Manager 2 Dataspace 2
![Page 40: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/40.jpg)
TU Dresden MOS: Memory
DS & REGIONS
�40
• Region manager propagates fault to dataspacemanager's Dataspace
fault fault
handler (ds_manager_id, ds_id, offset)➔
Dataspaces
ds1
ds2
Region MapVM Region Dataspace
<start, end> <start, end> <start, end>
Dataspace Manager 1, 1 Dataspace Manager 2, 1
Dataspace Manager 2, 2
Dataspace Manager’s Address Space
Dataspace Manager’s
Memory
Application’s Address Space
Dataspace Manager 1 Dataspace 1
Dataspace Manager 2
Dataspace 1
Dataspace Manager 2 Dataspace 2
![Page 41: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/41.jpg)
TU Dresden MOS: Memory
APPLICATION VIEW
�41
• allocate / free dataspacescreate / destroy dataspace semantic depends on dataspace type:
●
●
anonymous memory: open (size) file: open (filename, mode, …) ...
●
●
●
• attach / detach dataspacecreate / remove entry in region map Makes dataspace contents accessible
●
to application➔
• propagate capabilitygrant access rights to other applications very easy shared memory implementation
●
➔
![Page 42: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/42.jpg)
TU Dresden MOS: Memory
ADDRESS SPACE
�42
• Application address spaces are constructed fromseveral dataspaces:
Memory Manager
Memory
File System
Files-System Buffers
Application’s Address Space
Mmap’ed File
Code
RO Data
Data
BSS
Stack
![Page 43: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/43.jpg)
TU Dresden MOS: Memory
FURTHER ISSUES
�43
• Page Allocation AlgorithmsList-based algorithms, bitmaps, trees, …●
• Page Replacement AlgorithmsLeast-Recently-Used (LRU) Working Sets Clock …
●
●
●
●
Page allocation and replacement are➔
implemented by dataspace managers Can have different strategies for the dataspaces of an application
➔
![Page 44: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/44.jpg)
TU Dresden MOS: Memory
MEMORY SHARING
�44
• Memory sharing important forShared libraries Data transfer between system components …
●
●
●
• Different types of sharingFull sharing: all clients see modifications easy to implement, pager / dataspace manager
●
➔
grants access rights to pages Lazy copying of dataspaces copy-on-write
/ dataspaces●
➔
![Page 45: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/45.jpg)
TU Dresden MOS: Memory
SUMMARY
�45
• Closer look on tasks/threads:Creation Page-fault handling
●
●
• FlexpagesMemory pages, I/O Structure Offset computation
ports, Capabilities●
●
●
• Pager hierarchy
• Region manager & dataspaces
![Page 46: Memory - os.inf.tu-dresden.de · TU Dresden MOS: Memory REGION MANAGER 33 • Intermediate pager that identifies which pager should handle a page fault • Resides in the application's](https://reader036.vdocuments.site/reader036/viewer/2022062505/5e1e441b0f7be455880bf5a4/html5/thumbnails/46.jpg)
TU Dresden MOS: Memory
MORE INFO
�46
• Flexpages H.Härtig, J.Wolter, J.Liedtke: “Flexible sized page objects” , http://os.inf.tu-dresden.de/papers_ps/flexpages.pdf
• Dataspaces Mohit Aron, Yoonho Park, Trent Jaeger, Jochen Liedtke, Kevin Elphinstone, Luke Deller: “The SawMill Framework for VM Diversity”, ftp://ftp.cse.unsw.edu.au/pub/users/disy/ papers/Aron_PJLED_01.ps.gz