forked from dmoisset/os-implementation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFAQ.html
119 lines (94 loc) · 4.79 KB
/
FAQ.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<html>
<head>
<title>GeekOS FAQ</title>
</head>
<body>
<h1>GeekOS FAQ</h1>
<p> Maintained by David Hovemeyer <<a href="mailto:[email protected]">[email protected]</a>>
<p> This document attempts to answer frequently asked questions
about <a href="http://geekos.sourceforge.net/">GeekOS</a>.
<p> Last modified on $Date: 2004/02/07 19:31:45 $.
<h2>Contents</h2>
<ol>
<li> <a href="#q1">What is GeekOS?</a>
<li> <a href="#q2">What do I need to run GeekOS?</a>
<li> <a href="#q3">Why did you write another instructional operating system?</a>
<li> <a href="#q4">Why does GeekOS suck so much?</a>
<li> <a href="#q5">Will GeekOS run program <i>X</i>?</a>
</ol>
<h2><a name="q1">1. What is GeekOS?</a></h2>
<p> GeekOS is an instructional operating system. It is intended to
be used in undergraduate operation system courses, or for self-study.
It implements a very minimal set of features on top of bare x86 PC
hardware. In a series of projects included in the GeekOS distribution,
students add important operation system features such as processes,
virtual memory, a filesystem, and interprocess communication. Once
all of the projects have been completed, GeekOS resembles a very simple
version of Unix.
<h2><a name="q2">2. What do I need to run GeekOS?</a></h2>
<p> GeekOS runs mainly on the <a href="http://bochs.sourceforge.net/">Bochs</a>
PC emulator. Running GeekOS on an emulator has several important
advantages over running it on a real computer:
<ol>
<li> The emulator boots very quickly (around 1 second), allowing
a much quicker compile/edit/debug cycle
<li> The logfile produced by bochs (bochs.out) contains very useful
information for diagnosing crashes
<li> Recent versions of Bochs (2.0 and later) can be build with
stubs for the gdb debugger, allowing easy debugging of the kernel
</ol>
<p> Please note that although GeekOS is
<a href="http://geekos.sourceforge.net/hardware.html">tested on real hardware</a>
from time to time, you will probably need to do some hacking to get
it working on <em>your</em> PC. Submissions of bug fixes
that make GeekOS work on more hardware are
<a href="mailto:[email protected]">gladly accepted</a>.
<p> To compile GeekOS from source, you will need the following software:
<ul>
<li> <a href="http://gcc.gnu.org/">gcc</a> targeting i386/ELF; the default
compiler on Linux and FreeBSD systems will work, and cross compilers
targeting i386-elf should also work
<li> A host platform C compiler supporting ANSI C
<li> <a href="http://nasm.sourceforge.net/">The Netwide Assembler (NASM)</a>
<li> <a href="http://www.gnu.org/software/make/">GNU Make</a>
<li> <a href="http://www.perl.com/">Perl</a>, version 5.0 or later
<li> AWK, egrep
</ul>
<h2><a name="q3">3. Why did you write another instructional operating system?</a></h2>
<p> Good question. There are a lot of other good instructional
operating systems out there: <a href="http://www.cs.vu.nl/~ast/minix.html">Minix</a>,
<a href="http://www.tik.ee.ethz.ch/~topsy/">Topsy</a>,
<a href="http://www.eecs.harvard.edu/~syrah/os161/">OS/161</a>,
and <a href="http://www.cs.washington.edu/homes/tom/nachos/">Nachos</a>,
to name a few.
<p> GeekOS pursues slightly different design goals than any of the above.
I wanted to combine <em>simplicity</em> with <em>realism</em>. Simplicity
means that GeekOS tries to use the simplest algorithm or data structure
that will work; for example, you will find lots of linked lists and arrays in GeekOS,
but no hash tables or balanced trees. Realism means that GeekOS
resembles a real operating system. When the projects are completed,
GeekOS has processes, paged virtual memory, and a hierarchical filesystem.
Adventurous hackers can boot GeekOS on a real PC.
<h2><a name="q4">4. Why does GeekOS suck so much?</a></h2>
<p> Many of the implementation decisions made in GeekOS would be unacceptable
in a real operating system. For example:
<ul>
<li> No support for PCI devices
<li> IDE disk driver uses CHS addressing and programmed I/O
<li> IDE requests proceed synchronously with busy waiting
<li> Page stealing does a complete walk of every page of memory
with interrupts disabled
<li> Executable loading copies entire program image into
memory twice before process starts
<li> And so on...
</ul>
<p> Keep in mind that the main goal of GeekOS is <em>simplicity</em>.
If you want to fix some of the more egregious limitations in GeekOS,
<em>in a way that maintains or improves the simplicity of the system</em>,
please <a href="mailto:[email protected]">submit a patch</a>.
<h2><a name="q5">5. Will GeekOS run program <i>X</i>?</a></h2>
<p> GeekOS does not conform to any existing API standard, and has only a
very minimal C library. Therefore, any program written for another
operating system will require considerable porting effort.
</body>
</html>