Subversion Repositories HelenOS-doc

Compare Revisions

Ignore whitespace Rev 77 → Rev 78

/prjdoc/trunk/prjdoc.tex
38,5 → 38,16
\addcontentsline{toc}{chapter}{References}
\bibitem{helenos}\href{http://www.helenos.eu}{HelenOS project, http://www.helenos.eu.}
\bibitem{helenos-spec}\href{http://www.helenos.eu/?reason=specs}{HelenOS specifications}
\bibitem{binutils}\href{http://www.gnu.org/software/binutils/}{binutils, http://www.gnu.org/software/binutils/}
\bibitem{gcc}\href{http://gcc.gnu.org/}{gcc, http://gcc.gnu.org/}
\bibitem{grub}\href{http://www.gnu.org/software/grub/}{GRUB, http://www.gnu.org/software/grub/}
\bibitem{bochs}\href{http://bochs.sourceforge.net/}{Bochs, http://bochs.sourceforge.net/}
\bibitem{pearpc}\href{http://pearpc.sourceforge.net/}{PearPC, http://pearpc.sourceforge.net/}
\bibitem{msim}\href{http://nenya.ms.mff.cuni.cz/~holub/msim}{msim, http://nenya.ms.mff.cuni.cz/$\tilde{~}$holub/msim}
\bibitem{ski}\href{http://www.hpl.hp.com/research/linux/ski/}{Ski, http://www.hpl.hp.com/research/linux/ski/}
\bibitem{simics}\href{http://www.virtutech.com/about/research}{Simics, http://www.virtutech.com/about/research}
\bibitem{vmware}\href{http://www.vmware.com/products/desktop/ws_features.html}{VMware, http://www.vmware.com/products/desktop/ws\_features.html}
\bibitem{gxemul}\href{http://gavare.se/gxemul/}{GXemul, http://gavare.se/gxemul/}
\bibitem{qemu}\href{http://fabrice.bellard.free.fr/qemu/}{QEMU, http://fabrice.bellard.free.fr/qemu/}
\end{thebibliography}
\end{document}
/prjdoc/trunk/tools/tools.tex
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