14,7 → 14,7 |
|
There is simply too much third party software that is somehow related to |
HelenOS to be covered all. This chapter attempts to present our experience |
with the key softare tools, programs and libraries. |
with the key software tools, programs and libraries. |
|
\section{Communication tools} |
Although the developers know each other in person, the development, with the |
117,7 → 117,7 |
|
\section{Third party components of HelenOS} |
HelenOS itself contains third party software. In the first place, amd64 and ia32 architectures |
make use of GNU Grub boot loader. This software replaced the original limited boot loader |
make use of the GNU Grub boot loader. This software replaced the original limited boot loader |
after the Kernel Camp 2005 when {\MD} had made HelenOS Multiboot specification compliant. Because of |
Grub, HelenOS can be booted from several types of devices. More importantly, we use |
Grub to load HelenOS userspace modules as well. |
129,17 → 129,24 |
GNU C library for some time. However, the version we are using is not optimized for SMP and multithreading. |
We plan to eventually replace it with another allocator. |
|
Finally, the {\tt pci} userspace task is using the {\tt libpci} library. The |
Next, the {\tt pci} userspace task is using the {\tt libpci} library. The |
library was simplified and ported to HelenOS. Even though filesystem |
calls were removed from the library, it still heavily depends on {\tt libc}. |
By porting {\tt libpci} to HelenOS, we demonstrated that applications and libraries |
are, given enough effort, portable to HelenOS. |
|
Finally, we demonstrated the idea presented in the previous paragraph by porting |
over 13 years old BSD game of {\tt tetris} to HelenOS. This particular version |
of tetris looks almost the same both on other people's operating systems and on HelenOS. |
Similar to {\tt libpci}, {\tt tetris} had to be modified in order to compile and run. |
The filesystem calls were removed or replaced as well as references to terminal I/O |
calls. |
|
\section{Build tools} |
Assembler, linker and compiler are by all means the very focal point of attention |
of all operating system projects. Quality of these tools influences |
operating system performance and, what is more important, stability. HelenOS has |
been tailored to build with GNU {\tt binutils} (i.e. the assembler and linker) and GNU~{\tt gcc} |
been tailored to build with GNU {\tt binutils}\cite{binutils} (i.e. the assembler and linker) and GNU~{\tt gcc}\cite{gcc} |
(i.e. the compiler). There is only little chance that it could be compiled and |
linked using some other tools unless those tools are compatible with the GNU build tools. |
|
197,7 → 204,7 |
we want to dedicate some more space to what we have found. |
|
\subsection{Bochs} |
Bochs has been used to develop the SPARTAN kernel since its beginning in 2001. |
Bochs\cite{bochs} has been used to develop the SPARTAN kernel since its beginning in 2001. |
It is capable of emulating ia32 machine and for some time also amd64. |
Bochs is an emulator and thus the slowest from virtual environments capable |
of simulating the same cathegory of hardware. On the other hand, it is extremely |
222,7 → 229,7 |
does not understand. |
|
\subsection{GXemul} |
GXemul is an emulator of several processor architectures. Nevertheless, we have |
GXemul\cite{gxemul} is an emulator of several processor architectures. Nevertheless, we have |
used it only for mips32 emulation in both little-endian and big-endian modes. |
It seems to be pretty featurefull and evolving but we don't use all its functionality. |
GXemul is very user friendly and has debugging features. It is more realistic |
232,7 → 239,7 |
provided a quick hack for the old version. |
|
\subsection{msim} |
msim has been our first mips32 simulator. It simulates 32-bit side of R4000 processor. |
msim\cite{msim} has been our first mips32 simulator. It simulates 32-bit side of R4000 processor. |
Its simulated environment is not very realistic, but the processor simulation |
is good enough for operating system development. In this regard, the simulator is |
comparable to HP's ia64 simulator Ski. Another similar aspect of these two is |
245,13 → 252,13 |
eventually fixed. |
|
\subsection{PearPC} |
PearPC is the only emulator on which we have run ppc32 port of HelenOS. It has |
PearPC\cite{pearpc} is the only emulator on which we have run ppc32 port of HelenOS. It has |
no debugging features, but fortunatelly its sources are available under |
an open source license. This enabled {\OP} and {\MD} to alter its sources |
in a way that this modified version allowed some basic debugging. |
|
\subsection{QEMU} |
QEMU emulates several processor architectures. We have used it to emulate |
QEMU\cite{qemu} emulates several processor architectures. We have used it to emulate |
ia32 and amd64. It can simulate SMP, but contrary to Bochs, it uses dynamic |
translation of emulated instructions and performs much better because of |
that. |
266,7 → 273,7 |
processors. |
|
\subsection{Simics} |
Virtutech's Simics simulator can be compared to a Swiss-army knife for operating system debugging. |
Virtutech's Simics\cite{simics} simulator can be compared to a Swiss-army knife for operating system debugging. |
This proprietary piece of software was available to us under an academic license for free. |
|
Simics can be set to simulate many different configurations of many different machines. |
284,7 → 291,7 |
page was found (\#4214). As for mips32, Simics misemulated {\tt MSUB} and {\tt MSUBU} instructions. |
|
\subsection{Ski} |
The ia64 port of HelenOS has been developed and debugged on the HP's IA-64 Ski simulator. |
The ia64 port of HelenOS has been developed and debugged on the HP's IA-64 Ski\cite{ski} simulator. |
Ski is just an Itanium processor simulator and as such does not simulate a real machine. In fact, there |
is no firmware and no configuration tables (e.g. memory map) present in Ski! On the other hand, the missing parts can be supplied externally\footnote{This |
is actually how Linux runs in this simulator.}. The simulator provides means of interaction with |
309,7 → 316,7 |
make it far enough for the HP to fix or at least clarify the issue. Finally, we adopted a workaround implemented by {\JJ} |
that simply swaps LMA and the program entry point in the kernel ELF image. |
|
\subsection{VMware} VMware is the only virtualizer we have used in |
\subsection{VMware} VMware\cite{vmware} is the only virtualizer we have used in |
HelenOS development. It virtualizes the ia32 host machine. Since VMware |
version 5.5, we made use of its possibility to run the guest system |
(i.e. HelenOS) on multiple processors. VMware has no support for |