VirtualBox

source: vbox/trunk/doc/manual/en_US/dita/topics/technical-components.dita@ 107390

Last change on this file since 107390 was 107390, checked in by vboxsync, 5 months ago

Docs: bugref:10705. bugref: 10829. The docs build has been modified to split generated refentry dita files and the user manual files and the following commits from doc's team git repo has been applied:

0946136c74dda0483704db891345cb39548b4e28 Started consolidating known issues and troubleshooting information
845b847e6a8e778b38a57867e25ee5e086a73800 Added individual topics for list of known issues, integrated into Troubleshooting section.
bb574836aac775889bd61e4a72f489617fcb7d18 Removed EFI firmware from experimental features for 7.2
6d2e68b244869991e713d170ecd239739d99ba56 Moved known issues into Known Issues section
e2630c896561587718b5c3197c384a38d07014d5 Merge branch 'VBP-1461_experimental-features' into 'main'
0512e2cce51f49ccdc56f3381a2a0c924f2bd278 Feedback on known issues
a77d6c980f6ff5cad9d32b2fb9290990093a03fa Restructured host and guest OS topics
988af5cc9628f5de0806531bc98686f691a911fd Updates with feedbback from Jacob
982a61c9f25b22b745ec483e763e3d88efe59c40 Included feedback from Jacob
93181c8c6cc2d9a26bcccb1145cb0423c0d9f4c9 Updated known issues with feedback from Klaus
8bc369561c383f09b409fe5e44f507440b3735fb Created Legacy Guest OS section
d7932f55accdab7a03666302d58b8c941cd48be2 Moved known issues to more appropriate places for the info
2a4aa094ba8a7ac6894d2a777316eabf41746580 Further moving of known issues
baeabd5308c5519a4dc26b4197be9b00e419a85a Updated links to cli_topics

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 9.4 KB
Line 
1<?xml version='1.0' encoding='UTF-8'?>
2<!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">
3<topic xml:lang="en-us" id="technical-components">
4 <title><ph conkeyref="vbox-conkeyref-phrases/product-name"/> Executables and Components</title>
5 <body>
6 <p>
7 <ph conkeyref="vbox-conkeyref-phrases/product-name"/> was designed to be modular and flexible. When the
8 <ph conkeyref="vbox-conkeyref-phrases/product-name"/> graphical user interface (GUI) is opened and a VM
9 is started, at least the following three processes are running:
10 </p>
11 <ul>
12 <li>
13 <p><userinput>VBoxSVC</userinput>, the <ph conkeyref="vbox-conkeyref-phrases/product-name"/> service process
14 which always runs in the background. This process is started
15 automatically by the first <ph conkeyref="vbox-conkeyref-phrases/product-name"/> client process and
16 exits a short time after the last client exits. The first
17 <ph conkeyref="vbox-conkeyref-phrases/product-name"/> service can be <ph conkeyref="vbox-conkeyref-phrases/vbox-mgr"/>,
18 <userinput>VBoxManage</userinput>,
19 <userinput>VBoxHeadless</userinput>, the web service amongst
20 others. The service is responsible for bookkeeping,
21 maintaining the state of all VMs, and for providing
22 communication between <ph conkeyref="vbox-conkeyref-phrases/product-name"/> components. This
23 communication is implemented using COM/XPCOM.
24 </p>
25 <note>
26 <p>
27 When we refer to <i>clients</i> here, we mean
28 the local clients of a particular <userinput>VBoxSVC</userinput>
29 server process, not clients in a network. <ph conkeyref="vbox-conkeyref-phrases/product-name"/>
30 employs its own client/server design to allow its processes
31 to cooperate, but all these processes run under the same
32 user account on the host operating system, and this is
33 totally transparent to the user.
34 </p>
35 </note>
36 </li>
37 <li>
38 <p>
39 The GUI process, <userinput>VirtualBoxVM</userinput>, a client
40 application based on the cross-platform Qt library. When
41 started without the <codeph>--startvm</codeph> option, this
42 application acts as <ph conkeyref="vbox-conkeyref-phrases/vbox-mgr"/>, displaying the VMs and their
43 settings. It then communicates settings and state changes to
44 <userinput>VBoxSVC</userinput> and also reflects changes effected
45 through other means, such as the <userinput>VBoxManage</userinput>
46 command.
47 </p>
48 </li>
49 <li>
50 <p>
51 If the <userinput>VirtualBoxVM</userinput> client application is
52 started with the <codeph>--startvm</codeph> argument, it loads
53 the VMM library which includes the actual hypervisor and then
54 runs a virtual machine and provides the input and output for
55 the guest.
56 </p>
57 </li>
58 </ul>
59 <p> Any <ph conkeyref="vbox-conkeyref-phrases/product-name"/> front end, or client, will
60 communicate with the service process and can both control and reflect the current state. For
61 example, either the VM selector or the VM window or VBoxManage can be used to pause the
62 running VM, and other components will always reflect the changed state. </p>
63 <p>
64 The <ph conkeyref="vbox-conkeyref-phrases/product-name"/> GUI application, called <ph conkeyref="vbox-conkeyref-phrases/vbox-mgr"/>, is only one
65 of several available front ends, or clients. The complete list
66 shipped with <ph conkeyref="vbox-conkeyref-phrases/product-name"/> is as follows:
67 </p>
68 <ul>
69 <li>
70 <p><userinput>VirtualBoxVM</userinput>: The Qt front end implementing
71 <ph conkeyref="vbox-conkeyref-phrases/vbox-mgr"/> and running VMs.
72 </p>
73 </li>
74 <li>
75 <p><userinput>VBoxManage</userinput>: A less user-friendly but more
76 powerful alternative. See <xref href="vboxmanage.dita">VBoxManage</xref>.
77 </p>
78 </li>
79 <li>
80 <p><userinput>VBoxHeadless</userinput>: A VM front end which does not
81 directly provide any video output and keyboard or mouse input,
82 but enables redirection through the VirtualBox Remote Desktop
83 Extension. See <xref href="headless-mode.dita"/>.
84 </p>
85 </li>
86 <li>
87 <p><userinput>vboxwebsrv</userinput>: The <ph conkeyref="vbox-conkeyref-phrases/product-name"/> web service
88 process which enables control of an <ph conkeyref="vbox-conkeyref-phrases/product-name"/> host
89 remotely. This is described in detail in the <ph conkeyref="vbox-conkeyref-phrases/product-name"/>
90 Software Development Kit (SDK) reference. See
91 <xref href="VirtualBoxAPI.dita"/>.
92 </p>
93 </li>
94 <li>
95 <p>
96 The <ph conkeyref="vbox-conkeyref-phrases/product-name"/> Python shell: A Python alternative to
97 <userinput>VBoxManage</userinput>. This is also described in the
98 SDK reference.
99 </p>
100 </li>
101 </ul>
102 <p>
103 Internally, <ph conkeyref="vbox-conkeyref-phrases/product-name"/> consists of many more or less separate
104 components. You may encounter these when analyzing <ph conkeyref="vbox-conkeyref-phrases/product-name"/>
105 internal error messages or log files. These include the following:
106 </p>
107 <ul>
108 <li>
109 <p>
110 IPRT: A portable runtime library which abstracts file access,
111 threading, and string manipulation. Whenever <ph conkeyref="vbox-conkeyref-phrases/product-name"/>
112 accesses host operating features, it does so through this
113 library for cross-platform portability.
114 </p>
115 </li>
116 <li>
117 <p>
118 VMM (Virtual Machine Monitor): The heart of the hypervisor.
119 </p>
120 </li>
121 <li>
122 <p>
123 EM (Execution Manager): Controls execution of guest code.
124 </p>
125 </li>
126 <li>
127 <p>
128 TRPM (Trap Manager): Intercepts and processes guest traps and
129 exceptions.
130 </p>
131 </li>
132 <li>
133 <p>
134 HM (Hardware Acceleration Manager): Provides support for VT-x
135 and AMD-V.
136 </p>
137 </li>
138 <li>
139 <p>
140 GIM (Guest Interface Manager): Provides support for various
141 paravirtualization interfaces to the guest.
142 </p>
143 </li>
144 <li>
145 <p>
146 PDM (Pluggable Device Manager): An abstract interface between
147 the VMM and emulated devices which separates device
148 implementations from VMM internals and makes it easy to add
149 new emulated devices. Through PDM, third-party developers can
150 add new virtual devices to <ph conkeyref="vbox-conkeyref-phrases/product-name"/> without having to
151 change <ph conkeyref="vbox-conkeyref-phrases/product-name"/> itself.
152 </p>
153 </li>
154 <li>
155 <p>
156 PGM (Page Manager): A component that controls guest paging.
157 </p>
158 </li>
159 <li>
160 <p>
161 TM (Time Manager): Handles timers and all aspects of time
162 inside guests.
163 </p>
164 </li>
165 <li>
166 <p>
167 CFGM (Configuration Manager): Provides a tree structure which
168 holds configuration settings for the VM and all emulated
169 devices.
170 </p>
171 </li>
172 <li>
173 <p>
174 SSM (Saved State Manager): Saves and loads VM state.
175 </p>
176 </li>
177 <li>
178 <p>
179 VUSB (Virtual USB): A USB layer which separates emulated USB
180 controllers from the controllers on the host and from USB
181 devices. This component also enables remote USB.
182 </p>
183 </li>
184 <li>
185 <p>
186 DBGF (Debug Facility): A built-in VM debugger.
187 </p>
188 </li>
189 <li>
190 <p>
191 <ph conkeyref="vbox-conkeyref-phrases/product-name"/> emulates a number of devices to provide the
192 hardware environment that various guests need. Most of these
193 are standard devices found in many PC compatible machines and
194 widely supported by guest operating systems. For network and
195 storage devices in particular, there are several options for
196 the emulated devices to access the underlying hardware. These
197 devices are managed by PDM.
198 </p>
199 </li>
200 <li>
201 <p>
202 Guest Additions for various guest operating systems. This is
203 code that is installed from within a virtual machine. See
204 <xref href="guestadditions.dita">Guest Additions</xref>.
205 </p>
206 </li>
207 <li>
208 <p>
209 The "Main" component is special. It ties all the above bits
210 together and is the only public API that <ph conkeyref="vbox-conkeyref-phrases/product-name"/>
211 provides. All the client processes listed above use only this
212 API and never access the hypervisor components directly. As a
213 result, third-party applications that use the <ph conkeyref="vbox-conkeyref-phrases/product-name"/>
214 Main API can rely on the fact that it is always well-tested
215 and that all capabilities of <ph conkeyref="vbox-conkeyref-phrases/product-name"/> are fully exposed.
216 It is this API that is described in the <ph conkeyref="vbox-conkeyref-phrases/product-name"/> SDK.
217 See <xref href="VirtualBoxAPI.dita#VirtualBoxAPI"/>.
218 </p>
219 </li>
220 </ul>
221 </body>
222
223</topic>
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette