View
247
Download
6
Tags:
Embed Size (px)
Citation preview
_____ __ _____ _______ ________ ___ | / /____ _________ ___ _____ ___________(_)_________ __ \__ ___/ __ |/ / _ / / /__ __ `__ \_ _ \__ ___/__ / _ ___/_ / / /_____ \ _ /| / / /_/ / _ / / / / // __/_ / _ / / /__ / /_/ / ____/ / /_/ |_/ \__,_/ /_/ /_/ /_/ \___/ /_/ /_/ \___/ \____/ /____/
1 NumericOS - a project by Lukas Probst and Christopher Scherb
Ein Rechnerarchitektur und Betriebssystem Projekt von
Lukas Probst und Christopher Scherb
Ziel
• Eigenes x86 Betriebssystem entwickeln
• Funktionen ähnlich Octave
• Benchmark
NumericOS - a project by Lukas Probst and Christopher Scherb
2
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 Christopher Scherb
3
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
Christopher Scherb 4
Heap
• Eigenes Speicherarchitekturkonzept
– „Heaptable“ und „Heap“
• Laufzeiten:
– Malloc: O(n)
– Free: O(1)
NumericOS - a project by Lukas Probst and Christopher Scherb
5
Beispiel für Heaptable
NumericOS - a project by Lukas Probst and Christopher Scherb
6
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
Christopher Scherb 7
Hashmap
• Speichert Variablen
– Verwendet den Anfangsbuchstaben
– Variablennamen muss mit Buchstaben beginnen
• Array mit Überlaufkette
NumericOS - a project by Lukas Probst and Christopher Scherb
8
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 Christopher Scherb
9
Benchmark
NumericOS - a project by Lukas Probst and Christopher Scherb
10
Demo!
NumericOS - a project by Lukas Probst and Christopher Scherb
11
Fragen?
NumericOS - a project by Lukas Probst and Christopher Scherb
12