NumericOS - How to build your own Operatingsystem

12
_____ __ _____ _______ ________ ___ | / /____ _________ ___ _____ ___________(_)_________ __ \__ ___/ __ |/ / _ / / /__ __ `__ \_ _ \__ ___/__ / _ ___/_ / / /_____ \ _ /| / / /_/ / _ / / / / // __/_ / _ / / /__ / /_/ / ____/ / /_/ |_/ \__,_/ /_/ /_/ /_/ \___/ /_/ /_/ \___/ \____/ /____/ 1 NumericOS - a project by Lukas Probst and Christopher Scherb Ein Rechnerarchitektur und Betriebssystem Projekt von Lukas Probst und Christopher Scherb

Transcript of NumericOS - How to build your own Operatingsystem

Page 1: NumericOS - How to build your own Operatingsystem

_____ __ _____ _______ ________ ___ | / /____ _________ ___ _____ ___________(_)_________ __ \__ ___/ __ |/ / _ / / /__ __ `__ \_ _ \__ ___/__ / _ ___/_ / / /_____ \ _ /| / / /_/ / _ / / / / // __/_ / _ / / /__ / /_/ / ____/ / /_/ |_/ \__,_/ /_/ /_/ /_/ \___/ /_/ /_/ \___/ \____/ /____/

1 NumericOS - a project by Lukas Probst and Christopher Scherb

Ein Rechnerarchitektur und Betriebssystem Projekt von

Lukas Probst und Christopher Scherb

Page 2: NumericOS - How to build your own Operatingsystem

Ziel

• Eigenes x86 Betriebssystem entwickeln

• Funktionen ähnlich Octave

• Benchmark

NumericOS - a project by Lukas Probst and Christopher Scherb

2

Page 3: NumericOS - How to build your own Operatingsystem

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

Page 4: NumericOS - How to build your own Operatingsystem

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

Page 5: NumericOS - How to build your own Operatingsystem

Heap

• Eigenes Speicherarchitekturkonzept

– „Heaptable“ und „Heap“

• Laufzeiten:

– Malloc: O(n)

– Free: O(1)

NumericOS - a project by Lukas Probst and Christopher Scherb

5

Page 6: NumericOS - How to build your own Operatingsystem

Beispiel für Heaptable

NumericOS - a project by Lukas Probst and Christopher Scherb

6

Page 7: NumericOS - How to build your own Operatingsystem

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

Page 8: NumericOS - How to build your own Operatingsystem

Hashmap

• Speichert Variablen

– Verwendet den Anfangsbuchstaben

– Variablennamen muss mit Buchstaben beginnen

• Array mit Überlaufkette

NumericOS - a project by Lukas Probst and Christopher Scherb

8

Page 9: NumericOS - How to build your own Operatingsystem

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

Page 10: NumericOS - How to build your own Operatingsystem

Benchmark

NumericOS - a project by Lukas Probst and Christopher Scherb

10

Page 11: NumericOS - How to build your own Operatingsystem

Demo!

NumericOS - a project by Lukas Probst and Christopher Scherb

11

Page 12: NumericOS - How to build your own Operatingsystem

Fragen?

NumericOS - a project by Lukas Probst and Christopher Scherb

12