Skip to content
Berkus Decker edited this page Mar 20, 2017 · 2 revisions

Address space

  • Kernel does not allocate any memory itself.
  • Processes exist in a single address space.
  • Kernel provides address space protection between domains.

Memory

L4

sigma0 allocator, L4 style + userspace suballocators and pagers on top, Fluke style.

Second-level cache and TLB hit rates can be improved by using a special pager that allocates memory beneficially for cache hit rates. Not in the kernel. (See how linux does this instead). In practice first-level TLB handlers are usually in hardware or inside m-kernel.

(to self) read about TLB operation in cpu books. Also see L4's funky TLB-flush-cost-small-spaces address-space switcher. [Liedtke 1995]

process (task) - called "space" in L4

On microkernel construction - Appendix A: An Abstract Model of Address Spaces

Mach

Процесс в Mach - это, в первую очередь, адресное пространство и набор нитей, которые выполняются в этом адресном пространстве. Таким образом, выполнение связано с нитями, а процессы являются пассивными объектами и служат для сбора всех ресурсов, использующихся группой взаимосвязанных нитей, в удобные контейнеры.

Protection domain

A passive address space is a memory protection entity in which arbitrary threads may execute - a Protection Domain (PD). Minimal address space API is supported by the nucleus.

  • map, grant, demap The actual memory address allocation is delegated to userspace memory manager.

Mungi

http://www.cse.unsw.edu.au/~disy/Mungi.html

SASOS - all memory addresses are "physical" (i.e. addresses 1000 and 1000 in two different tasks point to the same physical memory address).

The basic abstractions provided by Mungi are:

  • capability,
  • object,
  • task,
  • thread,
  • and protection domain.

Objects are the basic storage abstraction. They consist of a contiguous range of pages, with no further structure imposed by the system. Objects are protected by capabilities which are described below.

Threads are the basic execution abstraction. A task is a set of threads which share a protection domain. A protection domain consists of a set of capabilities. Capabilities are presented implicitly by storing them in a special data-structure known to the system. This reduces the need for most applications to deal with capabilities and thus makes protection transparent.

Grasshopper

Grasshopper [RDH+96] is a system specifically designed to support persistence. Its basic storage abstraction is called a container, which essentially constitutes an address space. Containers, or parts thereof, can be mapped into other containers. Grasshopper presents a generalized model of address spaces, which can emulate a traditional model, such as UNIX, as well as the SASOS model [LRD95].

Unsorted

guarded page table (GPT) [Lie93,Lie96b].

Clone this wiki locally