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




    Ein Rechnerarchitektur und Betriebssystem Projekt
                           von
           Lukas Probst und Christopher Scherb




                         NumericOS - a project by Lukas
                                                                          1
                          Probst and Christopher Scherb
Ziel
• Eigenes x86 Betriebssystem
  entwickeln
• Funktionen ähnlich Octave
• Benchmark




            NumericOS - a project by Lukas Probst and
                                                        2
                      Christopher Scherb
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
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
Heap
• Eigenes
  Speicherarchitekturkonzept
  – „Heaptable“ und „Heap“
• Laufzeiten:
  – Malloc: O(n)
  – Free: O(1)




                   NumericOS - a project by Lukas Probst and
                                                               5
                             Christopher Scherb
Beispiel für Heaptable




     NumericOS - a project by Lukas Probst and
                                                 6
               Christopher Scherb
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
Hashmap
• Speichert Variablen
  – Verwendet den Anfangsbuchstaben
  – Variablennamen muss mit Buchstaben
    beginnen
• Array mit Überlaufkette




             NumericOS - a project by Lukas Probst and
                                                         8
                       Christopher Scherb
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
Benchmark




NumericOS - a project by Lukas Probst and
                                            10
          Christopher Scherb
Demo!


NumericOS - a project by Lukas Probst and
                                            11
          Christopher Scherb
Fragen?


 NumericOS - a project by Lukas Probst and
                                             12
           Christopher Scherb

NumericOS - How to build your own Operatingsystem

  • 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 x86Betriebssystem 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
  • 6.
    Beispiel für Heaptable NumericOS - a project by Lukas Probst and 6 Christopher Scherb
  • 7.
    Mathematische Funktionen • FloatingPoint 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
  • 10.
    Benchmark NumericOS - aproject by Lukas Probst and 10 Christopher Scherb
  • 11.
    Demo! NumericOS - aproject by Lukas Probst and 11 Christopher Scherb
  • 12.
    Fragen? NumericOS -a project by Lukas Probst and 12 Christopher Scherb