1. _____ __ _____ _______ ________
___ | / /____ _________ ___ _____ ___________(_)_________ __ __ ___/
__ |/ / _ / / /__ __ `__ _ _ __ ___/__ / _ ___/_ / / /_____
_ /| / / /_/ / _ / / / / // __/_ / _ / / /__ / /_/ / ____/ /
/_/ |_/ __,_/ /_/ /_/ /_/ ___/ /_/ /_/ ___/ ____/ /____/
Ein Rechnerarchitektur und Betriebssystem Projekt
von
Lukas Probst und Christopher Scherb
NumericOS - a project by Lukas
1
Probst and Christopher Scherb
2. Ziel
• Eigenes x86 Betriebssystem
entwickeln
• Funktionen ähnlich Octave
• Benchmark
NumericOS - a project by Lukas Probst and
2
Christopher Scherb
3. Weg zum C-Kernel
• Bootloader in Assembler
– Code in den Speicher laden
• Wechsel von Realmode (16bit) in
Protectedmode (32bit)
• Start des C-Kernels
NumericOS - a project by Lukas Probst and
3
Christopher Scherb
4. Input/Output- Libraries
• Output
– Memory mapped Output
– Videomemory für 80*25 Zeichen + Farbe
– Autoscroll mit Buffer
• Input
– Keyboard-Controller mit Polling
– Scancode in Char übersetzen (US-
Layout)
– Read-Methode liefert charArray zurück
NumericOS - a project by Lukas Probst and
4
Christopher Scherb
5. Heap
• Eigenes
Speicherarchitekturkonzept
– „Heaptable“ und „Heap“
• Laufzeiten:
– Malloc: O(n)
– Free: O(1)
NumericOS - a project by Lukas Probst and
5
Christopher Scherb
7. Mathematische Funktionen
• Floating Point Unit
– Koprozessor für Fließkommaoperationen
– muss aktiviert werden
– Stellt bestimmte mathematische
Funktionen zur Verfügung
• Implementierte Funktionen:
– Grundoperationen +,-,*,/
– Potenz- und Exponentialfunktion
– Logarithmusfunktion
NumericOS - a project by Lukas Probst and
7
Christopher Scherb
8. Hashmap
• Speichert Variablen
– Verwendet den Anfangsbuchstaben
– Variablennamen muss mit Buchstaben
beginnen
• Array mit Überlaufkette
NumericOS - a project by Lukas Probst and
8
Christopher Scherb
9. Parser
S=[Variable „=“ ] E.
E=E(“+“|“-“) T|T.
T=T(“*“|“/“) H|H.
H=F “^“ F|F.
F=“(“E“)“ | Identifier.
Identifier = Double | Variable | Function .
Double = [“+“|“-“] Z{Z} [ „.“ Z{Z} ] [ „e“
[“+“|“-“] Z{Z} ].
Variable = B {B|Z} .
Function = B {B|Z} „(„ E {„,“ E } „)“.
Z = “1“ | “2“ | […] “0“.
B = „a“ | “b“ | […] “Z“.
NumericOS - a project by Lukas Probst and
9
Christopher Scherb