Fix XIO URLs
[ikiwiki.git] / docs / user / GlossaryOfTerms.mdwn
1 Glossary of Terms
2
3 From DFWiki
4
5
6
7 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. 
8
9
10
11 Terms that are specific to DragonFly are indicated by an asterisk (*). Table of contents 
12
13
14
15 [[!toc levels=3 ]]�
16
17
18
19
20
21 # ACPI 
22
23
24
25 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. 
26
27
28
29 # BGL 
30
31
32
33 Big Giant Lock. A mutual exclusion mechanism which encompasses the entire running system. 
34
35
36
37 # CAPS* 
38
39
40
41 Unknown acronym first introduced by Matt Dillon. A message-based IPC mechanism for applications; basically, LWKT message-port services exposed to userland. 
42
43
44
45 CAPS facilities are implemented in [lwkt_caps.c](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_caps.c) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_caps.c). 
46
47 # IPI 
48
49
50
51 Inter-Processor Interrupt. 
52
53 # KPI 
54
55
56
57 Kernel Programming Interface. Same meaning as API (Application Programming Interface), but specifically refering to APIs in the kernel. 
58
59
60
61 # KVA 
62
63
64
65 Kernel Virtual Address space. Virtual memory used (exclusively) by the kernel. (Note: how does this differ from KVM?) 
66
67
68
69 # KVM 
70
71
72
73 Kernel Virtual Memory. Virtual memory used (exclusively) by the kernel. (Note: how does this differ from KVA?) 
74
75
76
77 # LKM 
78
79
80
81 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. 
82
83
84
85 # LWKT* 
86
87
88
89 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. 
90
91
92
93 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. 
94
95
96
97 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) (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) (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) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/lwkt_token.c). 
98
99
100
101 # MSFBUF* 
102
103
104
105 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. 
106
107
108
109 MSFBUF facilities are implemented in [kern_msfbuf.c](http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/kern_msfbuf.c) (http://www.dragonflybsd.org/cgi-bin/cvsweb.cgi/~checkout~/src/sys/kern/kern_msfbuf.c). 
110
111
112
113 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&commandsendfile) (http://leaf.dragonflybsd.org/cgi/web-man?section=2&command=sendfile) system call for minimising redundant data copies. 
114
115
116
117 # RTC 
118
119
120
121 Real Time Clock 
122
123
124
125 # SMP 
126
127
128
129 Symmetric Multi-Processor. 
130
131
132
133 # SSI 
134
135
136
137 Single System Image. A networked cluster of machines which appear as a single machine. 
138
139
140
141 # TLB 
142
143
144
145 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.) 
146
147
148
149 # TLS 
150
151
152
153
154
155 Thread Local Storage. Memory storage local to a thread. 
156
157
158
159 # UIO 
160
161
162
163
164
165 Userspace(<->kernelspace)(?) Input/Output. The traditional BSD mechanism for passing data between the userland and the kernel, for example during a system call. 
166
167
168
169 # Variant Symbolic Links (varsym)* 
170
171
172
173
174
175 Variant symbolic link. A symbolic link which can point to different places depending on settings in the user's environment. 
176
177
178
179 # VFS 
180
181
182
183
184
185 Virtual File System Layer. A layer in UNIX-like kernels which translates abstract requests for files into lower-level operations. 
186
187
188
189 # XIO* 
190
191
192
193
194
195 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. 
196
197
198
199 The XIO facilities are implemented in [kern_xio.c](http://gitweb.dragonflybsd.org/dragonfly.git/history/HEAD:/sys/kern/kern_xio.c). For example use of the XIO API, look in [lwkt_caps.c](http://gitweb.dragonflybsd.org/dragonfly.git/history/HEAD:/sys/kern/lwkt_caps.c), and the VFS journalling code which resides in [vfs_journal.c](http://gitweb.dragonflybsd.org/dragonfly.git/history/HEAD:/sys/kern/vfs_journal.c). 
200
201
202
203 XIO was first described in [this post to the kernel mailing list](http://leaf.dragonflybsd.org/mailarchive/kernel/2004-03/msg00469.html) (http://leaf.dragonflybsd.org/mailarchive/kernel/2004-03/msg00469.html).
204