DragonFly BSD

GlossaryOfTerms

Glossary of Terms

From DFWiki

Whether you're a user or a seasoned kernel developer who's simply new to DragonFly, few things are more confusing than trying to figure out what's going on without knowing what the acronyms mean. The purpose of this page is to define (briefly) some of the more obscure technical terminology you might encounter in DragonFly discussions.

Terms that are specific to DragonFly are indicated by an asterisk (*). Table of contents

ACPI

Advanced Configuration & Power Interface. Is a standard that defines power and configuration management interfacing between the OS and the BIOS. It is meant to replace the APM standard (for power management) but also provide a generic interface for recognition and configuration of hardware devices.

BGL

Big Giant Lock. A mutual exclusion mechanism which encompasses the entire running system.

CAPS*

Unknown acronym first introduced by Matt Dillon. A message-based IPC mechanism for applications; basically, LWKT message-port services exposed to userland.

CAPS facilities are implemented in lwkt_caps.c (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_caps.c).

IPI

Inter-Processor Interrupt.

KPI

Kernel Programming Interface. Same meaning as API (Application Programming Interface), but specifically refering to APIs in the kernel.

KVA

Kernel Virtual Address space. Virtual memory used (exclusively) by the kernel. (Note: how does this differ from KVM?)

KVM

Kernel Virtual Memory. Virtual memory used (exclusively) by the kernel. (Note: how does this differ from KVA?)

LKM

Loadable Kernel Module. Allows the possibility to extend the kernel's functionality at runtime without recompiling or even rebooting the system. Usually these modules are devices drivers and os features.

LWKT*

LightWeight Kernel Threading. A new kernel threading and scheduling mechanism implemented in DragonFly BSD. The LWKT scheduler only applies its scheduling decisions to the kernel and is independent from the userland 4.4BSD scheduler.

LWKT has a fully MP clean API and allows turning off the BGL on a thread-by-thread basis; this fits with the goal of threading the subsystems in the kernel and provides a clear and straight-forward path to taking subsystems out from under the BGL.

LWKT facilities are implemented in src/sys/kern/lwkt_*.c; notably, lwkt_thread.c (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_thread.c), lwkt_msgport.c (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_msgport.c), and lwkt_token.c (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_token.c).

MSFBUF*

Multi-page Super Fast BUFfers. An API for managing ephemeral/temporary KVM mappings for lists of pages, UIOs, arbitrary buffers, and other sources of data. Most of the sources of data described formally devolve into associating with the underlying pages. Although if the data is not backed by VM pages (e.g. userland buffers), then the backing is introduced automatically and the mapping is effectively cached.

MSFBUF facilities are implemented in kern_msfbuf.c (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/kern_msfbuf.c).

The original idea of caching ephemeral mappings was introduced by David Greenman of the FreeBSD Project for the sendfile(2) (http://leaf.dragonflybsd.org/cgi/web-man?section=2&command=sendfile) system call for minimising redundant data copies.

RTC

Real Time Clock

SMP

Symmetric Multi-Processor.

SSI

Single System Image. A networked cluster of machines which appear as a single machine.

TLB

Translation Look-aside Buffer. The component of a CPU's VM management hardware which translates between virtual memory addresses (used by userland programs) and physical memory address (used by the kernel.)

TLS

Thread Local Storage. Memory storage local to a thread.

UIO

Userspace(<->kernelspace)(?) Input/Output. The traditional BSD mechanism for passing data between the userland and the kernel, for example during a system call.

Variant Symbolic Links (varsym)*

Variant symbolic link. A symbolic link which can point to different places depending on settings in the user's environment.

VFS

Virtual File System Layer. A layer in UNIX-like kernels which translates abstract requests for files into lower-level operations.

XIO*

X("cross-") Input/Output. A kernel programming interface that is used for managing VM page lists. Although originally intended for fast copying of bulk data (for example, between userspace and kernelspace, as is done by UIO,) this API is used almost anywhere where managing page lists is required. It is complementary to the MSFBUF API which manages the ephemeral mappings for VM page lists.

The XIO facilities are implemented in kern_xio.c. For example use of the XIO API, look in lwkt_caps.c, and the VFS journalling code which resides in vfs_journal.c.

XIO was first described in this post to the kernel mailing list (http://leaf.dragonflybsd.org/mailarchive/kernel/2004-03/msg00469.html).