Information Technology Reference
In-Depth Information
switches are reduced, and applications experience
faster execution speeds.
A second benefit of downloading code into
the kernel is that “the execution of downloaded
code can be readily bounded” (Engler, Kaashoek,
& O'Toole, 1995). They mean downloaded code
can be executed at times when there are just a few
microseconds of processing time available. This
processing time-slice is too small to allow for a
full context switch, so a traditional approach that
requires a context switch would normally not be
able to take advantage of such a small process-
ing time-slice. Engler has stated that being able
to process code during these small time-slices
makes the Exokernel more powerful (Engler,
1998). The Exokernel is more powerful because
it can optimize its processing of code by taking
advantage of these small time-slices and increase
the throughput of the applications. The freedom
to optimize, as we stated previously, is a key part
of being able to increase the processing speeds of
operating systems.
ceiving application. Both of these processes are
explained next.
The Exokernel sends a packet on a network
through a system call referenced by “send_packet”.
When this function gets called, the packet gets
added to a first-in-first-out queue and the ker-
nel's involvement in the transmission ends at this
point. The rest of the transmission gets handled
by a network interface card or a device driver.
The Exokernel gets involved minimally, but
only to the extent that is needed to provide for a
secure networking environment. The networking
transmission management details are provided
by the device driver code, which is located in
user-space.
Packet receiving by the Exokernel is handled a
little differently, but without much more involve-
ment by the Exokernel. According to Ganger and
others, the Exokernel receives packets by using
two major processes; packet demultiplexing and
packet buffering . Packet demultiplexing involves
deciding which application a particular packet
should be associated with. The information that
the Exokernel uses to accomplish this is actually
found within each packet which is located at a
particular memory offset value. The process of
actually delivering a packet to a particular ap-
plication is called packet buffering by Ganger
and others. Similar to the pre-arranged “save-
area” mentioned in section 3.9 (Exceptions and
Interrupts), the Exokernel copies the packet to a
pre-registered memory area. Once the packet is
successfully copied to the appropriate memory
area, the Exokernel's involvement is complete.
From this point, any further management or
handling of the packet is accomplished by user-
level code.
packet Sending and receiving
Networking with an Exokernel is accomplished by
what Ganger and others have called “application-
level” networking (Ganger, Engler, Kaashoek,
Briceño, Hunt, & Pinckney, 2002). The Exok-
ernel's application-level networking allows an
application to interact almost directly with the
networking interface. Because the Exokernel
provides much less of an abstraction for the ap-
plication, the application-level code can provide
more of its own management. This means the
Exokernel is in a much better position to optimize
its own operations, which can lead to an over-all
higher performance level for the entire computer.
The research documents are a little vague about
the details of how networking is actually achieved,
but it is clear that a first-in-first-out (FIFO) send
queue is used. The documentation is also clear
that the Exokernel also has a way of receiving
packets and delivering them to the proper re-
naming and routing of packets
When a packet's high-level identifier gets trans-
lated into a low-level identifier, this is called
“naming”. Before a packet can be properly routed
through a network, it must first be identified by a
Search WWH ::




Custom Search