aboutsummaryrefslogtreecommitdiffstats
path: root/docs/src/interface/architecture.tex
diff options
context:
space:
mode:
Diffstat (limited to 'docs/src/interface/architecture.tex')
-rw-r--r--docs/src/interface/architecture.tex140
1 files changed, 0 insertions, 140 deletions
diff --git a/docs/src/interface/architecture.tex b/docs/src/interface/architecture.tex
deleted file mode 100644
index 19064b7fc5..0000000000
--- a/docs/src/interface/architecture.tex
+++ /dev/null
@@ -1,140 +0,0 @@
-\chapter{Virtual Architecture}
-
-On a Xen-based system, the hypervisor itself runs in {\it ring 0}. It
-has full access to the physical memory available in the system and is
-responsible for allocating portions of it to the domains. Guest
-operating systems run in and use {\it rings 1}, {\it 2} and {\it 3} as
-they see fit. Segmentation is used to prevent the guest OS from
-accessing the portion of the address space that is reserved for Xen.
-We expect most guest operating systems will use ring 1 for their own
-operation and place applications in ring 3.
-
-In this chapter we consider the basic virtual architecture provided by
-Xen: the basic CPU state, exception and interrupt handling, and time.
-Other aspects such as memory and device access are discussed in later
-chapters.
-
-
-\section{CPU state}
-
-All privileged state must be handled by Xen. The guest OS has no
-direct access to CR3 and is not permitted to update privileged bits in
-EFLAGS. Guest OSes use \emph{hypercalls} to invoke operations in Xen;
-these are analogous to system calls but occur from ring 1 to ring 0.
-
-A list of all hypercalls is given in Appendix~\ref{a:hypercalls}.
-
-
-\section{Exceptions}
-
-A virtual IDT is provided --- a domain can submit a table of trap
-handlers to Xen via the {\tt set\_trap\_table()} hypercall. Most trap
-handlers are identical to native x86 handlers, although the page-fault
-handler is somewhat different.
-
-
-\section{Interrupts and events}
-
-Interrupts are virtualized by mapping them to \emph{events}, which are
-delivered asynchronously to the target domain using a callback
-supplied via the {\tt set\_callbacks()} hypercall. A guest OS can map
-these events onto its standard interrupt dispatch mechanisms. Xen is
-responsible for determining the target domain that will handle each
-physical interrupt source. For more details on the binding of event
-sources to events, see Chapter~\ref{c:devices}.
-
-
-\section{Time}
-
-Guest operating systems need to be aware of the passage of both real
-(or wallclock) time and their own `virtual time' (the time for which
-they have been executing). Furthermore, Xen has a notion of time which
-is used for scheduling. The following notions of time are provided:
-
-\begin{description}
-\item[Cycle counter time.]
-
- This provides a fine-grained time reference. The cycle counter time
- is used to accurately extrapolate the other time references. On SMP
- machines it is currently assumed that the cycle counter time is
- synchronized between CPUs. The current x86-based implementation
- achieves this within inter-CPU communication latencies.
-
-\item[System time.]
-
- This is a 64-bit counter which holds the number of nanoseconds that
- have elapsed since system boot.
-
-\item[Wall clock time.]
-
- This is the time of day in a Unix-style {\tt struct timeval}
- (seconds and microseconds since 1 January 1970, adjusted by leap
- seconds). An NTP client hosted by {\it domain 0} can keep this
- value accurate.
-
-\item[Domain virtual time.]
-
- This progresses at the same pace as system time, but only while a
- domain is executing --- it stops while a domain is de-scheduled.
- Therefore the share of the CPU that a domain receives is indicated
- by the rate at which its virtual time increases.
-
-\end{description}
-
-
-Xen exports timestamps for system time and wall-clock time to guest
-operating systems through a shared page of memory. Xen also provides
-the cycle counter time at the instant the timestamps were calculated,
-and the CPU frequency in Hertz. This allows the guest to extrapolate
-system and wall-clock times accurately based on the current cycle
-counter time.
-
-Since all time stamps need to be updated and read \emph{atomically}
-two version numbers are also stored in the shared info page. The first
-is incremented prior to an update, while the second is only
-incremented afterwards. Thus a guest can be sure that it read a
-consistent state by checking the two version numbers are equal.
-
-Xen includes a periodic ticker which sends a timer event to the
-currently executing domain every 10ms. The Xen scheduler also sends a
-timer event whenever a domain is scheduled; this allows the guest OS
-to adjust for the time that has passed while it has been inactive. In
-addition, Xen allows each domain to request that they receive a timer
-event sent at a specified system time by using the {\tt
- set\_timer\_op()} hypercall. Guest OSes may use this timer to
-implement timeout values when they block.
-
-
-
-%% % akw: demoting this to a section -- not sure if there is any point
-%% % though, maybe just remove it.
-
-\section{Xen CPU Scheduling}
-
-Xen offers a uniform API for CPU schedulers. It is possible to choose
-from a number of schedulers at boot and it should be easy to add more.
-The BVT, Atropos and Round Robin schedulers are part of the normal Xen
-distribution. BVT provides proportional fair shares of the CPU to the
-running domains. Atropos can be used to reserve absolute shares of
-the CPU for each domain. Round-robin is provided as an example of
-Xen's internal scheduler API.
-
-\paragraph*{Note: SMP host support}
-Xen has always supported SMP host systems. Domains are statically
-assigned to CPUs, either at creation time or when manually pinning to
-a particular CPU. The current schedulers then run locally on each CPU
-to decide which of the assigned domains should be run there. The
-user-level control software can be used to perform coarse-grain
-load-balancing between CPUs.
-
-
-%% More information on the characteristics and use of these schedulers
-%% is available in {\tt Sched-HOWTO.txt}.
-
-
-\section{Privileged operations}
-
-Xen exports an extended interface to privileged domains (viz.\ {\it
- Domain 0}). This allows such domains to build and boot other domains
-on the server, and provides control interfaces for managing
-scheduling, memory, networking, and block devices.