21.12.2012 Views

Resource Management - Operating Systems Group

Resource Management - Operating Systems Group

Resource Management - Operating Systems Group

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Faculty of Computer Science Institute of <strong>Systems</strong> Architecture, <strong>Operating</strong> <strong>Systems</strong> <strong>Group</strong><br />

RESOURCE<br />

MANAGEMENT<br />

MICHAEL ROITZSCH


■ done: time, drivers<br />

■ today: misc. resources<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

AGENDA<br />

■ architectures for resource management<br />

■ solutions for specific resources<br />

■ capabilities to manage resource access<br />

■ upcoming: applications, legacy support<br />

■ next week: exercise first in INF E069<br />

2


KERNEL<br />

RESOURCES<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

3


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

PROBLEM<br />

■ kernel needs memory for its abstractions<br />

■ tasks: page tables<br />

■ threads: kernel-TCB<br />

■ capability tables<br />

■ IPC wait queues<br />

■ mapping database<br />

■ kernel memory is limited<br />

■ opens the possibility of DoS attacks<br />

4


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

IDEA<br />

■ memory management policy should not<br />

be in the kernel<br />

■ account all memory to the application it is<br />

needed for (directly or indirectly)<br />

■ kernel provides memory control<br />

mechanism<br />

■ exception for bootstrapping:<br />

initial kernel memory is managed by<br />

kernel<br />

5


■ untyped memory in seL4<br />

■ all physical memory unused after<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

SOLUTION<br />

bootstrap is represented by untyped<br />

memory capabilities<br />

■ can be granted, split or retyped<br />

■ restricted to powers of 2 (see flexpages)<br />

■ initial resource manager gets all (see σ0)<br />

■ user code decides how to use them<br />

6


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

SOLUTION<br />

■ application retype UM to kernel objects<br />

■ TCB, endpoint, CNode, VNode, frame, interrupt<br />

■ all kernel bookkeeping for the object uses<br />

the underlying physical memory<br />

■ no implicit memory allocation by the kernel<br />

■ retyping and splitting is remembered in<br />

capability derivation tree<br />

■ revoking recursively destroys all derived<br />

capabilities and kernel objects<br />

7


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

PRINCIPLE<br />

separate enforcement and<br />

management<br />

8


ARCHITECTURES<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

9


low-level resource abstractions<br />

explicit management<br />

exokernel<br />

multiserver<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

SPECTRUM<br />

high-level resource abstractions<br />

implicit management<br />

resource<br />

containers<br />

monolith<br />

10


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

MONOLITHS<br />

■ enforcement and management implicitly<br />

tied to process abstraction<br />

isolation accounting<br />

process<br />

protection domain resource container<br />

■ resource containers were proposed to<br />

make resource management explicit<br />

■ bags of resources assigned to subsystems<br />

11


<strong>Management</strong><br />

Enforcement<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

EXOKERNEL<br />

Application<br />

Library OS<br />

Exokernel<br />

12


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

DESIGN<br />

■ provide primitives at the lowest possible<br />

level necessary for protection<br />

■ use physical names wherever possible<br />

■ resource management primitives:<br />

■ explicit allocation<br />

■ exposed revocation<br />

■ protected sharing<br />

■ ownership tracking<br />

13


CONSEQUENCES<br />

■ each application can use its own library OS<br />

■ library OS’es cannot trust each other<br />

■ no central management for global resources<br />

■ think of a file system<br />

■ kernel manages disk ownership with block<br />

granularity<br />

■ each library OS comes with its own<br />

filesystem implementation<br />

■ one partition per application?<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

14


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

SHARING<br />

■ invariants in shared resources must be<br />

maintained<br />

■ four mechanisms provided by the exokernel<br />

■ software regions for sub-page memory<br />

protection, allows to share state<br />

■ capabilities for access control<br />

■ critical sections<br />

■ wakeup predicates: code downloaded into<br />

the kernel for arbitrary checks<br />

15


Low-Level<br />

<strong>Resource</strong><br />

Manager<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

MULTISERVER<br />

Higher-Level<br />

<strong>Resource</strong><br />

Manager<br />

L4 Microkernel<br />

works on monolithic kernels too<br />

Application<br />

Client-Libs<br />

16


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

LEVELS<br />

■ different abstraction levels for resources<br />

basic resources<br />

hardware<br />

compound<br />

resources<br />

memory, CPU,<br />

IO-ports, interrupts<br />

block device, framebuffer,<br />

network card<br />

file, GUI window,<br />

TCP session<br />

17


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

HIERARCHIES<br />

■ applications can access resource on the<br />

abstraction level they need<br />

■ servers implementing a resource can use<br />

other, lower-level resources<br />

■ isolation allows managers to provide real-<br />

time guarantees for their specific resource<br />

■ DROPS:<br />

Dresden Real-time OPerating System<br />

18


EXAMPLES<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

19


wget<br />

lwip<br />

Ankh<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

ANKH<br />

■ driver for physical<br />

network card<br />

■ built with DDE using<br />

Linux 2.6 drivers<br />

■ provides multiple<br />

virtual network cards<br />

■ implements a simple<br />

virtual bridge<br />

20


wget<br />

lwip<br />

Ankh<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

LWIP<br />

■ light-weight IP Stack<br />

■ TCP/IP, UDP, ICMP<br />

21


wget<br />

lwip<br />

Ankh<br />

■ clients can use<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

WGET<br />

standard BSD socket<br />

interface<br />

22


L4Re VFS<br />

Filesystem<br />

Windhoek<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

WINDHOEK<br />

■ IDE driver to access<br />

hard disks<br />

■ includes disk request<br />

scheduling<br />

■ based on DDE<br />

■ provides block device<br />

■ ongoing work on USB<br />

block devices<br />

23


L4Re VFS<br />

Filesystem<br />

Windhoek<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

FILESYSTEM<br />

■ no real one<br />

implemented yet<br />

■ we have a tmpfs<br />

using RAM as backing<br />

store<br />

■ VPFS: securely reuse<br />

a Linux filesystem<br />

24


L4Re VFS<br />

Filesystem<br />

Windhoek<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

L4RE VFS<br />

■ hierarchical name<br />

space<br />

■ connects subtrees to<br />

different backend<br />

servers<br />

■ aka mounting<br />

25


Terminal<br />

DOpE<br />

mag<br />

■ multiplexes the<br />

frame buffer<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

MAG<br />

■ no virtual desktops,<br />

but window merging<br />

■ details in the legacy /<br />

security lectures<br />

26


Terminal<br />

DOpE<br />

mag<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

DOPE<br />

■ widget drawing server<br />

■ handles mouse and<br />

keyboard input<br />

■ can also operate on<br />

raw framebuffer<br />

■ real-time capable<br />

27


Terminal<br />

DOpE<br />

mag<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

TERMINAL<br />

■ DOpE client providing<br />

a terminal window<br />

■ VT100 emulation<br />

■ can support readline<br />

applications<br />

■ shell<br />

■ python<br />

28


RESOURCE ACCESS<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

29


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

EXAMPLE<br />

Worker A Worker B<br />

Manager<br />

Service<br />

30


GOOGLE CHROME<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

■ separate processes<br />

■ chrome parent<br />

■ sandboxes for tabs<br />

■ implementation on<br />

Linux: glorious mix<br />

of chroot(), clone()<br />

and setuid()<br />

■ there must be a<br />

better way…<br />

31


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

TWO WORLDS<br />

POSIX POLA<br />

operations allowed<br />

by default<br />

some limited<br />

restrictions apply<br />

nothing allowed by<br />

default<br />

every right must<br />

be granted<br />

ambient authority explicit authority<br />

32


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

L4RE<br />

L4Re — the L4 Runtime Environment<br />

set of libraries and system services on<br />

top of the Fiasco.OC microkernel<br />

33


■ Fiasco.OC and L4Re form an<br />

object-capability system<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

CAPABILITIES<br />

■ actors in the system are objects<br />

■ objects have local state and behavior<br />

■ capabilities are references to objects<br />

■ any object interaction requires a capability<br />

■ unseparable and unforgeable combination<br />

of reference and access right<br />

34


Task A<br />

Capability Table<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

CAPABILITIES<br />

A B C D E<br />

Fiasco.OC<br />

Task B<br />

1<br />

1<br />

2<br />

2 Table<br />

3<br />

3<br />

4<br />

4<br />

5 5<br />

Capability<br />

35


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

HOW TO USE?<br />

■ invocation of any object requires a<br />

capability to that object<br />

■ no global names<br />

■ no sophisticated rights representation<br />

beyond capability ownership<br />

■ just four rights bits on objects<br />

■ C++ language integration<br />

■ capabilities passed as message payload<br />

36


CAP TRANSFER<br />

Task A Task B<br />

X<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

37


CAP TRANSFER<br />

Task A Task B<br />

X<br />

1 2 3 4 5 1 2 3 4 5<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

37


CAP TRANSFER<br />

Task A Task B<br />

X<br />

1 2 3 4 5 1 2 3 4 5<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

37


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

EXAMPLE<br />

Worker A Worker B<br />

Manager<br />

Service<br />

38


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

EXAMPLE<br />

Worker A Worker B<br />

Manager<br />

Service<br />

38


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

EXAMPLE<br />

Worker A Worker B<br />

Manager<br />

Service<br />

38


Manager<br />

Service mag<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

EXAMPLE<br />

Worker A Worker B<br />

39


Manager<br />

Factory S S<br />

mag<br />

■ factory for new<br />

framebuffer sessions<br />

■ session object<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

MAG<br />

■ backing store memory<br />

■ view: visible rectangle on<br />

the backing store<br />

■ metadata, refresh method<br />

■ How does it appear on<br />

the screen?<br />

40


Factory S S<br />

mag<br />

fb-drv<br />

moe<br />

Memory<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

MAG<br />

■ hardware framebuffer is<br />

memory with side effect<br />

■ all memory is initially<br />

mapped to the root task<br />

■ framebuffer driver<br />

■ find framebuffer memory<br />

■ wrap in FB-interface<br />

■ same interface as mag’s<br />

41


■ virtualizable interfaces<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

INTERFACES<br />

■ L4Re uses one interface per resource<br />

■ independent of the implementation<br />

■ servers can (re-)implement any interface<br />

■ the kernel is a special server: provides<br />

low-level objects that need CPU privileges<br />

■ minimal policy<br />

■ userland servers can augment<br />

42


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

EXAMPLES<br />

Graphics Thread scheduling<br />

pong<br />

mag<br />

fb-drv<br />

multithreaded<br />

application<br />

balancer<br />

kernel<br />

43


TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

CONCLUSION<br />

■ all services provided as objects<br />

■ uniform access control with capabilities<br />

■ invocation is the only system call<br />

■ virtualizable: all interfaces can be<br />

interposed<br />

■ resource refinement and multiplexing<br />

transparent to clients<br />

44


■ kernel resource management<br />

TU Dresden MOS: <strong>Resource</strong> <strong>Management</strong><br />

SUMMARY<br />

■ basic resource management concepts<br />

■ resource containers<br />

■ exokernel<br />

■ multiserver<br />

■ management details for specific resources<br />

■ object capabilities and<br />

virtualizable interfaces<br />

45

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!