Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and...
-
Upload
bahman-homayun -
Category
Documents
-
view
215 -
download
0
Transcript of Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and...
-
8/10/2019 Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and Implementation of the Solelc Distributed Operating System
1/10
Design and Implementation of the Solelc Distributed
Operating System
Masahito Shiba1and Eiji Okubo
2
1Graduate School of Science and Engineering, Ritsumeikan University, Kusatsu, 525-8577 Japan
2Department of Computer Science, Faculty of Science and Engineering, Ritsumeikan University, Kusatsu, 525-8577 Japan
SUMMARY
In order to efficiently use multiple computers on a
network, resource management that takes all those comput-
ers into account is desirable. However, the resources that
each conventional operating system manages are limited to
those of the computer on which it works. By making the
operating system itself work in a location-transparent fash-
ion, it becomes possible to manage all resources on multiple
computers with a single operating system. In this paper, we
propose an abstraction method for location-transparent
management of computer resources such as memory,
CPUs, interrupts, and peripheral devices. The structure and
performance evaluations of the Solelc distributed operating
system, which is based on this method, are described.
2002 Wiley Periodicals, Inc. Syst Comp Jpn, 33(10):
5463, 2002; Published online in Wiley InterScience
(www.interscience.wiley.com). DOI 10.1002/scj.10011
Key words: operating system; distributed system;
resource management; memory management.
1. Introduction
With the spread of low-cost computers and high-
speed networks, it is increasingly common to use distrib-
uted systems which have many computers connected by
networks. However, in conventional distributed systems,
each operating system manages only the resources of the
computer on which it works. Therefore, even when a system
includes more than one computer, the resource manage-
ment of the system is performed on each computer, and it
is difficult to realize resource management that takes ac-
count of the whole system.
In order to solve this problem, based on our knowl-
edge of operating system development [1], we have been
investigating an abstraction method for managing resources
with location transparency. When location transparency ofresource management has been realized, a single kernel can
manage resources on more than one computer. As a result,
resource management that takes the whole system into
account is achieved. In this paper, we propose a new method
of construction of a distributed operating system that man-
ages multiple computers in this manner. The structure of the
Solelc distributed operating system [2, 3], which is based
on the proposed method, is also described. Furthermore,
performance evaluation of Solelc confirms that efficient
and location-transparent resource management is achieved
by the proposed method.
In Solelc, since the kernel itself works location-trans-parently, the single kernel can manage all computers col-
lectively and thus the kernel takes account of and manages
the whole system. Furthermore, this method unifies the
control data for resource management and simplifies the
structure and behavior of the kernel. In other words, the
kernel can manage resources on more than one computer
by a method similar to that used in conventional kernels that
2002 Wiley Periodicals, Inc.
Systems and Computers in Japan, Vol. 33, No. 10, 2002Translated from Denshi Joho Tsushin Gakkai Ronbunshi, Vol. J84-D-I, No. 6, June 2001, pp. 617626
54
-
8/10/2019 Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and Implementation of the Solelc Distributed Operating System
2/10
manage a single computer. This method has the following
advantages:
The kernel is enabled to manage peripheral de-
vices with location transparency.
The same environment for process execution is
created on all computers.
Dynamic addition (deletion) of computers to
(from) the system is realized.
Since device locations do not restrict the behavior of
the kernel, it is, for example, easy to build a file system on
two or more disks of different computers. When a new
computer is added to the system, the kernel and processes
can use the resources of this computer as well as the
resources of other computers, because it is possible for the
kernel and processes to use the resources of any computers
with location transparency. Therefore, the computing per-
formance of the system would be improved easily by add-
ing computers to the system.
This paper describes the structure of Solelc in Section
2, memory management in Section 3, process and threadmanagement in Section 4, event management in Section 5,
and device management in Section 6. The effectiveness of
the proposed method is described with performance evalu-
ation in Section 7 and related research is discussed in
Section 8.
2. Structure of Solelc
Figure 1 shows the overall structure of Solelc. In
Solelc, the operating system consists of abstraction layers
and a kernel. The abstraction layers work on each computer,and the abstraction layers provide the environment on
which the kernel works. The kernel uses functions provided
by the abstraction layers and manages the resources of all
computers. Furthermore, the kernel builds the execution
environment for processes and allocates the resources of the
system to processes appropriately. In the rest of this section,
these components of Solelc are described.
2.1. Abstraction layer
The abstraction layers abstract memory, CPUs, inter-
rupts, and peripheral devices. The abstraction layers have
the following functions.
Memory management
Construct an address space shared with all comput-
ers.
CPU management
Abstract CPUs as threads. The threads execute codes
of the kernel or processes.
Interrupt management
An interrupt is abstracted as events, which the kernel
can detect on any computer.
Device management
Manipulate peripheral devices with device drivers
and allow the kernel to use the functions of all device driversfrom any computers.
Communication facility
Abstraction layers have facilities for communication
with each other.
Device drivers
Each device driver controls peripheral devices.
Table 1 shows the number of source code lines of
these functions. The size of the abstraction layer is 44K
bytes.
Furthermore, by the following functions, the abstrac-
tion layers build an environment in which the kernel canmanage resources location-transparently.
The abstraction layers assign identifiers to com-
puters and available resources. An identifier is a
unique nonnegative integer value.
When an abstraction layer gets a resource manipu-
lation request from the kernel, the abstraction
Fig. 1. Overall structure of Solelc.
Table 1. Number of source code lines
55
-
8/10/2019 Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and Implementation of the Solelc Distributed Operating System
3/10
layer forwards this request to the abstraction layer
that has the target resource.
When resource management is performed on each
computer, complicated name management, such as using a
name server, is needed. In Solelc, it is possible to identify
each resource solely by a nonnegative integer value, since
a single kernel manages all resources. The abstraction lay-
ers use a dedicated network protocol for communication
with each other, which realizes efficient cooperative work.
On the other hand, the kernel uses network protocols such
as IP for communication with systems other than Solelc.
The kernel manages resources by using interfaces
(see Table 2) which the abstraction layers provide. The
method of resource management in Solelc is described in
detail in Section 3.
2.2. The kernel
In Solelc, the kernel plays the same role as the kernels
of conventional systems. However, it is different from con-
ventional systems in that the kernel in Solelc operates in an
environment provided by the abstraction layers and man-
ages multiple computers simultaneously.
The code of the kernel is executed by one or more
kernel threads. Since a kernel thread works with the func-
tions of abstraction layers, the behavior of the kernel thread
does not depend on its own location or the resource loca-
tions, and the kernel thread can always work in the same
manner. Since kernel threads work in location-transparent
fashion, it is possible to have each thread work on a different
computer and to dynamically change the computer on
which a thread runs.
In Solelc, the single kernel manages more than one
computer. In conventional systems, a kernel runs on each
computer and the resource management and services are
provided by the cooperative work of those kernels; thus,
cooperative work among computers cannot be avoided.
Cooperative work of kernels gives rise to the problem that
kernel behavior becomes complicated. However, in Solelc,
the behavior of the kernel is simple since the single kernel
manages all computers.
2.3. Processes
Processes run in an environment built by the kernel
and use the facilities of the kernel. More than one process
can run simultaneously, and all processes are protected
from each other. That is, the processes of Solelc are the same
as those of conventional systems.
In Solelc, a process has one or more user threads, and
these threads execute the code of the process. Each user
thread is able to access code and data of the process to which
it belongs on any computer, and runs location-transparently.
Therefore, it is possible to change the computer on which
a thread runs without affecting the action of the thread. It is
easy to implement a mechanism for load balancing by
utilizing this feature [4].
3. Memory Management
3.1. Address space
Figure 2 shows the virtual address space of Solelc.
The virtual address space consists of two regions: a non-
shared region and a shared region. Each nonshared region
has an abstraction layer, and each computer has different
memory contents in this region. On the other hand, the
shared region has the kernel and processes, and all comput-
ers have the same memory contents in this region.
The code of an abstraction layer, which is placed in
the nonshared region, includes interrupt handlers and facili-ties for communication with other computers. Furthermore,
the data of an abstraction layer include data for managing
the address space and threads. This code and data must
Table 2. Interface of abstraction layer
Fig. 2. Structure of address space.
56
-
8/10/2019 Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and Implementation of the Solelc Distributed Operating System
4/10
always be accessible and thus the regions that contain this
code or data are always allocated physical memory pages.
On the other hand, the shared region is shared by all
computers, and virtual memory pages in this region are
mapped into physical memory pages of the computers that
actually use these pages. The abstraction layers maintain
consistency of memory contents in pages that two or more
computers access simultaneously. That is, the abstraction
layers detect page faults of the kernel and processes, and
perform consistency control of the shared region. The con-
sistency that abstraction layers provide as the memory
consistency model is sequential consistency [5]. Therefore,
the kernel and processes can access memory without being
concerned with consistency control.
3.2. Segment
The shared region consists of a kernel region and a
user region. The kernel region contains code and data of the
kernel, and the user region contains processes. Manage-
ment of these regions is performed by the kernel. That is,
the kernel divides the user region into multiple segments
and assigns each segment to a process. A segment is a
sequential memory area that has the same protection attrib-
ute, and segments are created by setting the MMU (Memory
Management Unit) appropriately. By assigning each seg-
ment to a process, other processes and the operating system
are protected from illegal operations by the process. In
Solelc, all computers share not only the contents of memory
but also the protection attributes of memory.
All segments are registered into a segment table and
maintained by this table. The abstraction layers provide the
kernel with the following functions to manipulate the seg-
ment table.
segment_set(index, base, size)
Register a segment whose base address is baseand
whose size is sizebytes into the indexthentry of the segment
table.
The following is the processing flow when the kernel
sets up a segment with segment_set(see Fig. 3).
(1) The kernel requires an abstraction layer to set up
a segment with segment_set.
(2) The abstraction layer that has received the request
reports index, base, and size to all abstraction layers on
other computers.
(3) Each abstraction layer sets up the segment of the
computer on which it runs.
(4) It is reported to the kernel that the setting up of
the segment has completed.
The abstraction layer that has received a request from
the kernel reports it to all other computers, and all abstrac-
tion layers set up the segment. As a result, the protection
attributes of memory are kept the same on all computers.
4. Process and Thread Management
4.1. The process
Solelc executes user programs with the process
thread model. A process, which consists of code and data,is the execution environment of threads. The substance of
a process is data in memory. All processes should be avail-
able on all computers, since processes are in the shared
region. Therefore, by placing the data and code of a pro-
gram on only one computer, the kernel is able to create a
process which is available on all computers. Thus, it is
possible for the kernel to manage processes in a location-
transparent manner.
4.2. Threads
Threads are used for executing code in the shared
region, and are classified into two types: user threads and
kernel threads. User threads execute the code of processes
and kernel threads execute the code of the kernel. Kernel
threads can access all memory in the shared region. On the
other hand, a user thread can access only the memory of the
process to which it belongs. A process can have one or more
threads, and threads that belong to the same process can run
on different computers.
Threads are an abstraction of CPUs. Abstraction lay-
ers manage threads with thread control data possessed by
the abstraction layers. The thread control data are shown in
Table 3. idis a nonnegative integer value, assigned by the
abstraction layers. ids are used for uniquely identifyingeach thread. hostis the identifier of the computer to which
the thread is assigned, and the thread runs by using the CPU
of the assigned computer. The running state, ready state,
and waiting state are the states of threads, as in conventional
operating systems. A state transition of a thread is per-
formed by the abstraction layer that manages the computer
on which the thread runs. For example, an abstraction layer
Fig. 3. Setting up a segment.
57
-
8/10/2019 Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and Implementation of the Solelc Distributed Operating System
5/10
chooses a thread with the highest priority among the ready-
state threads, changes the state of this thread to running
state, and executes this thread. Thus, each abstraction layer
functions as a dispatcher in the thread management.
On the other hand, the kernel works as a scheduler,
which determines the priorities of the threads and the com-
puters to which the threads are assigned. It is possible to use
the resources of the system efficiently by assigning a newly
created thread to a computer that has an idle CPU or by
assigning a thread that frequently accesses a device to a
computer that has this device. Furthermore, the kernel has
data for managing parent-child relationships of threads and
relationships among processes and threads. It is possible for
the kernel to manage these data in unified fashion, since
only one kernel manages the whole system.
Although abstraction layers store and manipulate
thread control data, the kernel can manipulate thread con-
trol data by using the following functions, which abstrac-
tion layers provide.
thread_create(thread)
Create a new thread and get thread control data of this
thread into thread.
thread_set(thread)Set threadto the thread control data.
thread_get(id, thread)
Load the thread control data whose identifier is idinto
thread.
thread_create creates a new thread and gives it an
identifier that is unique in the whole system. The kernel sets
up register, state, priority, and hostof the thread control
data of the new thread created by thread_create, and the
kernel sets these data into the abstraction layer by using
thread_set. If the state of this thread is the ready state, the
abstraction layer inserts it into the ready queue and it willbe executed. Furthermore, the kernel can change the thread
control data of any thread by using thread_get and
thread_set. In these operations, the kernel specifies only the
thread identifier. Thus, the kernel manipulates threads re-
gardless of the locations where the threads are actually
running. This is because an abstraction layer that receives
thread_setor thread_getchecks hostin the thread control
data and forwards the thread control data to the abstraction
layer that manages the thread. In this way, the kernel is also
location-transparent in thread management.
4.3. Creation of process and thread
In Fig. 4, Process-A creates Process-B. The process-
ing flow of creating a process and a thread is as follows.
(1) The kernel receives aforksystem call from Proc-
ess-A.
(2) The kernel prepares a memory region for Process-
B and copies the memory contents of Process-A to this
region.
(3) The kernel requires an abstraction layer to create
a new thread by thread_create.
(4) The abstraction layers create a new thread and
give the thread control data of this thread to the kernel.
(5) The kernel sets the parameters of the thread con-
trol data and requires the abstraction layers to set this thread
control data by thread_set.
(6) The abstraction layer that has received the requestsends the thread control data to the computer that is to
manage this thread.
(7) The abstraction layer that has received the thread
control data executes the new thread.
In (5), the kernel determines the computer on which
the new thread will run, and sets hostof the thread control
data as the identifier of this computer. The abstraction layer
that has received the thread control data determines the
computer on which the thread is to run from host, and
forwards the thread control data to this computer. Although
the memory copy operation to create Process-B is per-formed on the computer that processes theforksystem call,
the memory contents are available on other computers since
processes are placed in the shared region, which all com-
puters share. Therefore, the thread can run Process-B on the
forwarded computer by forwarding only the thread control
data.
In this way, since abstraction layers forward kernel
requests to the appropriate computers, the kernel always
Table 3. Thread control data
Fig. 4. Creation of a process and a thread.
58
-
8/10/2019 Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and Implementation of the Solelc Distributed Operating System
6/10
manipulates threads in the same manner, which does not
depend on the locations of the threads. The same is true of
thread migrations between computers for load balancing.
The kernel causes threads to migrate by changing hostin
the thread control data. At this time, the kernel specifies
only the identifier of the computer to which the thread
migrates, and this processing is independent of the physical
locations of the computers.
5. Event Management
5.1. Events
In Solelc, the abstraction layers abstract asynchro-
nously arising phenomena as events and notify the kernel.
Examples of events are internal interrupts or the addition of
a new computer to the system. The kernel receives events,
handles them, and then manages the whole system. This is
similar to the procedure in conventional systems by which
a kernel detects interrupts and manages the system.
Each event has an event number, which is a nonnega-tive integer value and is unique to one kind of event. The
kernel can receive events having the specified event number
by using the following two functions, which the abstraction
layers provide.
event_set_receiver(event, id)
event_set_receiver sets the identifier of a receiver
thread to id. This thread is then enabled to receive events
that have eventas event number.
event_receive(event, thread)
event_receive receives an event and sets the event
number in eventand the thread control data of the thread
which caused the event in thread.
The kernel performs advance registration of threads
that are to receive events into abstraction layers by
event_set_receiver. The abstraction layer that has been
requested to perform event_set_receiverreports this request
to all abstraction layers. After registration of the receiver
thread, the abstraction layers forward the event when it
occurs on any computer to the computer on which the
thread for acquiring it is running. Therefore, it is possible
for the kernel to acquire all events which occur on any
computer. The receiver threads receive events with
event_receive. A receiver thread that has requested
event_receiveenters the waiting state, and when the eventoccurs, the receiver thread resumes and acquires the event.
Figure 5 shows that events occur on each computer
and that the abstraction layers forward these to the kernel.
The abstraction layers manage events by placing them on
event queues, which exist for every event number. The
abstraction layer that has been requested to perform
event_receive by a receiver thread takes an event off the
event queue and passes this event to this receiver thread. At
this time, the thread control data of the thread that has
caused the event are also passed to the receiver thread. In
Solelc, events may occur during event handling because
two or more computers are running simultaneously. How-
ever, when an event occurs, the event does not immediately
interrupt the action of the kernel, but is placed in the event
queue by the abstraction layers. Therefore, it is possible forthe kernel to handle events successively.
5.2. System calls
By acquiring events, the kernel detects internal inter-
rupts caused by threads in the course of their operation.
Thus, the kernel can acquire errors such as zero division or
protection violations caused by threads, and handle these.
The kernel also provides the system call mechanism as
follows.
(1) The kernel registers the threads that receive sys-
tem call events into the abstraction layers by event_set_re-
ceiver.
(2) The receiver thread requests receipt of an event
by event_receive.
(3) A user thread sets the system call number and
arguments in the CPU registers and causes the internal
interrupt.
(4) An abstraction layer that has received the interrupt
changes the state of the user thread to the waiting state.
Furthermore, the abstraction layer sends the event number
and the thread control data to the computer on which the
receiver thread is running.
(5) The event is passed to the receiver thread, and the
kernel handles the system call.
The thread that has requested receipt of an event
enters the waiting state at (2), and resumes at (5). The
receiver thread gets the system call number and arguments
from registerin the thread control data that it receives. In
this way, both user threads that request system calls and
kernel threads that receive and handle these calls work
Fig. 5. Event management.
59
-
8/10/2019 Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and Implementation of the Solelc Distributed Operating System
7/10
without depending on each others location, since the ab-
straction layers abstract internal interrupts as events.
6. Device Management
6.1. Peripheral devices
In Solelc, peripheral devices such as disks or key-
boards are abstracted by device drivers in the abstractionlayers. The device drivers have facilities which directly
control devices and manipulate the devices according to the
interrupts received. The abstraction layers manage the de-
vice drivers and provide the kernel with functions to use
them. The kernel uses the device drivers with the device
management interfaces shown in Table 2.
Abstraction layers create device lists. Each abstrac-
tion layer has a device list, which contains information on
all available devices on any computers. A device list con-
sists of records holding the identifier of the device, type of
the device, and the identifier of the computer which has the
device. The kernel can get the device list from the abstrac-tion layers and determine the identifier and type of each
device from the device list. When the kernel uses a device,
the kernel requests from an abstraction layer the operation
of the device with the given device identifier. The abstrac-
tion layer that has received the request from the kernel
forwards this request to the computer that has the specified
device. In addition, the device driver result is returned to
the abstraction layer and is passed to the kernel. Therefore,
the kernel specifies only device identifiers, which are loca-
tion-independent. In other words, the kernel manages de-
vices with location transparency and the kernel can manage
all devices on arbitrary computers.
6.2. File system
A file system is one of the services that the kernel
provides by using devices. Figure 6 shows a user thread that
requests a file read, a kernel thread that provides the file
service, and a device driver that manipulates the disk, which
operate without depending on each others locations. The
flow of reading a file from a disk is as follows.
(1) The user thread requests a file read by a system
call.
(2) The kernel thread requests the reading of block
data from the disk.(3) The abstraction layer forwards the request from
the kernel to the computer that has the target disk.
(4) The abstraction layer that has received the for-
warded request calls the device driver and reads block data
from the disk.
(5) The block data are returned to the abstraction
layer and passed to the kernel.
(6) The kernel thread puts the file data into the buffer
that the user thread specifies.
Abstraction layers manage device locations, and for-
ward both requests from the kernel and results from device
drivers to appropriate computers. Therefore, the kernel can
read block data from the disk by specifying only the iden-
tifier of the device. Furthermore, since abstraction layersprovide memory consistency among computers, the kernel
thread writes file data to a buffer on a computer and the user
thread can read these file data on another computer.
In Solelc, since the kernel manages devices inde-
pendently of their locations, the kernel can easily provide
services that are difficult to realize in conventional systems.
For example, it is easy to build one file system on two or
more disks, not only on one computer, but also on different
computers. In addition, it is possible to build one terminal
with a keyboard and a display that are on different comput-
ers, as well as on the same computer. Furthermore, it is
possible to build one terminal with multiple keyboards and
multiple displays.
7. Evaluation
It is required in Solelc only that the kernel have the
same facilities as conventional systems that manage a single
computer. The kernel in Solelc has facilities and interfaces
like those that UNIX kernels provide. In this section, the
performance evaluations of the system call facility and file
read operations with the getpidand readsystem calls are
described.
The computers used in the experiments had the same
architecture. Concretely, PC/AT-compatible computers
with a Pentium 200MHz CPU, connected via a 100Mbps
Ethernet, were used. The processes used for the evaluations
were linked with glibc-2.1.3 [6] complied for Linux.
Fig. 6. Reading a file from a disk.
60
-
8/10/2019 Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and Implementation of the Solelc Distributed Operating System
8/10
7.1. System call
Table 4 shows the execution times when a user thread
requests the getpidsystem call and a kernel thread performs
processing for this. The following two cases were evalu-
ated.
(1) The user thread and the kernel thread run on the
same computer.
(2) The user thread and the kernel thread run on
different computers.
Although the user thread and the kernel thread per-
form the same processing in both cases, communications
between abstraction layers occur in (2) and thus the execu-
tion time of (2) is longer than that of (1). The following
communications occurred in (2): forwarding of events, and
forwarding of thread control data when the state of the user
thread is changed to the ready state after completion of the
system call processing. For execution of the kernel thread,
(2) needs 93.3 s, which is longer than the 11.3 s needed
in (1). This is because (2) consumes 66.8 s in waiting for
a response after sending the thread control data. It can be
said that this time depends more on the performance of
network applications than on the structure of the operating
system. Furthermore, since other ready threads can run
while the kernel thread is waiting, the execution time that
the kernel thread actually needs is 93.3 66.8 = 26.5 s.
Therefore, it is concluded that the difference between this
time and the kernel execution time in (1), 26.5 11.3 = 15.2
s, is the overhead time when the kernel thread handles a
system call from a user thread running on another computer.
There are two kinds of processing in a system call.
One is the performance of the requested system call and
changing the state of the user thread to the ready state. The
other is preparation for receiving the next system callrequest. In case (1), the user thread cannot run until the
kernel thread completes these two kinds of processing,
since the priority of the user thread is lower than that of the
kernel threads. In case (2), the user thread can run immedi-
ately after completion of processing of the system call,
since the user thread runs on a computer that is different
from that on which the kernel thread runs.
7.2. Reading a file
Figure 7 shows the execution times when a user
thread reads the contents of a file to a buffer with the read
system call. The format of the file system is Ext2fs [7]. In
reading a file, the following three components run concur-
rently: a user thread which requests the system call, a kernel
thread which provides file service, and a device driverwhich manipulates a disk. The following four cases were
evaluated in order to examine the changes of execution
times as a function of the locations of these three compo-
nents.
(1) The user thread, the kernel thread, and the device
driver run on the same computer.
(2) The user thread and the kernel thread run on the
same computer, and the device driver runs on another
computer.
(3) The kernel thread and the device driver run on the
same computer, and the user thread runs on another com-
puter.
(4) The user thread, the kernel thread, and the device
driver all run on different computers.
Since the user thread, the kernel thread, and device
driver run in a location-transparent manner, these three
components run in the same way in the above four cases.
However, communications occur among abstraction layers
except in (1).
In (1), the execution time becomes longer whenever
the read size increases by 1024 bytes. This is because the
kernel thread reads 1024 bytes at a time via the device
driver. Therefore, whenever the read size increases by 1024bytes, the number of calls to the device driver increases, and
the execution time becomes longer. In (2), communications
between abstraction layers occur, since the kernel thread
and the device driver called by the kernel thread are running
on different computers. Therefore, the increase in execution
time caused by an increase in the number of calls to the
device driver is longer than in (1).
Fig. 7. Execution time of read.
Table 4. Execution time of getpid
61
-
8/10/2019 Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and Implementation of the Solelc Distributed Operating System
9/10
In (3), since the user thread and the kernel thread run
on different computers, communications occur for memory
consistency control, and for forwarding the event and the
thread control data. The communications for memory con-
sistency control at this time consist of sending and receiving
memory pages of the read buffer prepared by the user thread
when the kernel thread writes contents of the file into the
buffer. The execution times are 2.02 ms in (1) and 2.64 ms
in (3) for a read size of 4096 bytes. The difference of these,2.64 2.02 = 0.62 ms, is regarded as the time required for
memory consistency control. When the read size is 8129
bytes, the difference of execution times between (1) and (3)
is 1.04 ms. This time is longer than when the read size is
4096 bytes. This is because consistency control is per-
formed per memory page, whose size is 4096 bytes. There-
fore, the execution time increases greatly whenever the read
size increases by 4096 bytes.
In both (2) and (3), the user thread reads from a disk
on a different computer. Although the abstraction layers
transfer memory pages for memory consistency control in
(3) and do not perform this action in (2), the execution timesin (3) are close to those in (2) on the whole. This is because
unnecessary transfer of memory pages is not performed.
The user thread accesses the read buffer after completion of
the readsystem call. That is, the kernel thread and the user
thread access the buffer, which is shared by the kernel
thread and the user thread in that order. The kernel thread
and the user thread do not access the buffer simultaneously.
Therefore, overhead is not a serious problem even if con-
sistency control for sequential consistency is performed.
In (4), the communications in both (2) and (3) occur.
The execution time increases greatly whenever the read size
increases by both 1024 and 4096 bytes. When the system
consists of multiple computers, because disks are the dis-
tributed on multiple computers, it is not rare that a user
thread reads from a disk on a different computer, as in (4).
In such case, it is possible that a kernel may handle read
requests in the form of (2) or (3) if it can operate in
location-transparent fashion like Solelc. In other words, it
can be said that a kernel that operates in location-transpar-
ent fashion achieves efficient resource management. Fur-
thermore, consistency control of the file management
information which each computer maintains is needed if
requests for file operations are handled on each computer.
In Solelc, it is possible that all requests of file operations
from multiple computers are handled on a single computer,
since the kernel works in a location-transparent fashion.
Therefore, communications for maintaining the consis-
tency of file management information do not occur, and it
is possible to handle requests efficiently even if multiple
requests occur simultaneously.
8. Related Research
There are various ways to provide processes with a
location-transparent environment. For example, Java Re-
mote Method Invocation and CORBA [8] provide proc-
esses with facilities to use remote objects. Many such
systems realize location transparency on the user level. On
the other hand, there are sockets in UNIX and ports in Mach
[9], which realize location transparency on the kernel level.
By using these facilities, processes can always exchange
messages with each other in the same manner without
depending on their locations. Furthermore, in distributed
operating systems such as Amoeba [10] and Chorus [11],
processes can use not only message communication but
also many facilities for providing processes with location
transparency. For example, each CPU is not bound to a
specific user, and it is possible to use an arbitrary CPU for
execution of a process. Furthermore, processes can make
location-transparent use of services provided by servers
such as file servers. In Solelc, as in these systems, processescan use system facilities in a location-transparent manner.
Furthermore, the kernel itself, which manages resources,
functions in a location-transparent manner in Solelc. There-
fore, it is possible for a single kernel to manage the re-
sources of all computers regardless of their locations. That
is, it can be said that conventional systems that manage one
computer are enabled to operate in a distributed environ-
ment by abstraction of resources.
In Solelc, the operating system is layered for loca-
tion-transparent resource management. Many operating
systems are also layered. For example, Windows NT [12]
has a Hardware Abstraction Layer, which abstracts thehardware. By layering an operating system, it is possible to
separate hardware-dependent components and to encapsu-
late hardware-specific components. Furthermore, in Solelc,
abstraction layers also encapsulate a network. Therefore,
the upper layers are not bound to the locations of computer
resources.
In Solelc, a single address space is shared by all
computers. Various memory consistency controls have been
proposed for distributed shared memory, which enables two
or more computers to share memory objects. Many of these
memory consistency controls provide weak consistency. In
these systems, processes which know a feature of shared
data are directly concerned with consistency control in
order to enhance performance. On the other hand, in Solelc,
abstraction layers provide sequential consistency and the
kernel and processes do not need to be concerned with
consistency control. In addition, there is the advantage that
not only data but also code can be shared by all computers.
62
-
8/10/2019 Systems and Computers in Japan Volume 33 Issue 10 2002Masahito Shiba; Eiji Okubo -- Design and Implementation of the Solelc Distributed Operating System
10/10
9. Conclusions
This paper has proposed a method for abstraction of
computer resources and management of computers by a
single kernel with location transparency, and has presented
performance evaluations of the Solelc distributed operating
system, which is based on the proposed method. Further-
more, it has been shown that efficient resource management
is realized by the location-transparency provided by ab-
stract layers.
Currently, we are investigating the efficiency,
scalability, and fault tolerance of the system.
REFERENCES
1. Shiba M, Okubo E. An abstraction scheme of com-
puter resources for the location transparent resource
management. Special Interest Group Report 2000-
OS-83. Inf Process Soc Japan 2000, No. 21, p 6772.
2. Shiba M, Okubo E. The structure of Solelc distributed
operating system. Special Interest Group Report2000-OS-84. Inf Process Soc Japan 2000, No. 43, p
237244.
3. Mizuguchi T, Shiba M, Okubo E. The design and
implementation of file system on distributed operat-
ing system Solelc. Inf Process Soc Japan 2000, No.
43, p 245252.
4. Nagamune K, Shiba M, Okubo E. The load sharing
mechanism in Solelc distributed operating system.
Inf Process Soc Japan 2000, No. 75, p 3946.
5. Lamport L. How to make a multiprocessor computer
that correctly executes multiprocess programs. IEEE
Trans Comput 1979;C-28:690691.
6. gl ibc source, f tp: / /sourceware.cygnus.com/
pub/glibc/releases/glibc-2.1.3.tar.bz2.
7. Ext2fs Home Page. http://web.mit.edu/tytso/www/
linux/ext2.html.
8. CORBA Website. http://www.corba.org/.
9. Accetta M, Baron R, Golub D, Rashid R, Tevanian
A, Young M. Mach: A new kernel foundation for
UNIX development. Proc Summer 1986 USENIX, p
93113.
10. Mullender SJ, van Rossum G, Tanenbaum AS, van
Renesse R, van Staveren H. Amoeba: A distributed
operating system for the 1990s. IEEE Comput
1990;23:4453.
11. Rozier M, Abrossimov V, Armand F, Boule I, GienM, Guillemont M, Herrmann F, Kaiser C, Langlois
S, Leonard P, Neuhauser W. CHORUS distributed
operating systems. Comput Syst 1988;1:305370.
12. Custer H. Inside Windows NT. Microsoft Press; 1993.
AUTHORS(from left to right)
Masahito Shibareceived his B.E. degree from the Department of Computer Science of Ritsumeikan University in 1997
and his M.E. degree in 1999. He is presently a D.Eng. candidate there. His research interests include operating system, distributed
system, and real-time system. He is a member of the Information Processing Society of Japan and IEICE.
Eiji Okuboreceived his B.S. degree from the Department of Mathematics of Hokkaido University in 1974 and his M.S.
degree in 1977. He then joined the Software Factory of Hitachi, Ltd., and was mainly engaged in development of FORTRAN
compiler. He moved to Kyoto University in 1979, becoming a lecturer in 1985 and an assistant professor in 1987. He has been
a professor in the Department of Computer Science of Ritsumeikan University since 1991. He has engaged in the study of
operating system, database system, distributed system, and real-time system, among others. He holds a D.Eng. degree. He is
the author ofBasics of Operating System(Saiensu Press) and a coauthor ofBasics of Modern Operating System, Experiment
of Information Engineering, and Introduction to Information Processing(Ohm Press). He is a member of the Information
Processing Society of Japan, the Japan Society for Software Science and Technology, the Institute of System Control and
Information Engineers, ACM, and IEEE-CS.
63