Schichtenmodell eines Rechners

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Schichtenmodell eines Rechners

    Hallo,

    ich hätte da eine kleine Frage... Unser Prof teilte uns folgendes Schichtenmodell mit:

    • Ebene 5: Problemorientierte Sprache
    • Ebene 4: Assemblersprache
    • Ebene 3: Betriebssystem
    • Ebene 2: ISA
    • Ebene 1: Mikroarchitektur
    • Ebene 0: Digitale Logik

    Nun hatte ich mir die Frage gestellt, in welcher Sprache ein Betriebssystem geschrieben wird. Google bestätigte mir meine Annahme, dass dies größenteils in C und C++ geschieht.
    Soweit ich weiß, benötigt C und C++ einen Compiler und diese Compiler ist in Assembler geschrieben. Wenn ich nun meiner Logik vertraue, müsste die Assembler/Compiler Ebene nun unterhalb des BS liegen oder nicht?
    Wenn Assembler ein BS benötigen würde... irgendwas passt dann nicht, oder habe ich einen Logikfehler? Vielleicht kann mir da jemand helfen :)

    Danke :)

    PS: Bei Wikipedia steht, dass die Assembler Ebene unterhalb des OS liegt?!
  • Es kommt auch darauf auf welchem Level euch der Prof. das Ganze erklären will.

    Bin da bei den aktuellen Feinheiten nicht ganz up to date. Überlege ob ich das so schreiben soll?
    Solltet ihr beim folgenden Text nur "böhmische Dörfer" verstehen, vergesst das ihr den gesehen habt.

    Es ist möglich z.B. mit einer "Hochsprache" wie Basic, C, Pascal und Anderen das Übersetzungsprogramm Assembler zu erstellen. Umgekehrt geht das auch.
    Compiler werden oft mit Lex und Yacc erstellt. Wenn diese Compiler dann einen gewissen Umfang erreicht haben, können die sich zum Teil selbst erstellen.

    Beispiele waren z.B. ein Programmiertool geschrieben in QBasic, das es erlaubte mit diesem Interpreter Assembler-Quelltext zu übersetzen um so ein ausführbares Programm als Ergebnis zu erhalten. Quelle: DMV - Zeitschriften aus den 90er Jahren.

    Compiler, die sich im aktuellen Stadium selbst übersetzen können TinyCC : bellard.org/tcc/ hab das nicht versucht oder der GCC. Der GCC wird meist mit der Vorversion erstellt.
    Beim GCC gibt es augenblicklich Bestrebungen die Grösse der ausführbaren Dateien, die aus C-Quelltext erstellt wurden, zu reduzieren. Da kann man nicht immer mit der der Vorversion des Compilers einfach zum Ziel kommen. Musst mal in der Entstehungsgeschichte des GCC nach lesen. Da sollten einige Infos zu dem Thema drin stehen.

    Es gibt auch Microarchitekturen, die schon programmierbar sind.

    Dies nur ein kleiner Beitrag zu dem Thema.

    Ich versuch das noch mal anders ;) : Am Anfang waren die Null und die Eins. Dann hat man per Hardware ( ganz früher mechanisch, dann Relais/Schütze, irgendwann mal TTL, CMOS oder welche Technologien es da noch gab ) logische Operationen ausgeführt. Irgend wann hat man mit den TTL-IC Kubikmeter-grosse Räume voll gesteckt, die eine Menge Wärme abgaben. Also überlegten die Techniker, wie man die Bauteile kompakter und energieeffizienter bekommen konnte. Mit Hilfe der vorhandenen Technologie wurde also die nächste Generation Logikbauteilen hergestellt. Das wuchs dann immer so weiter bis zu dem Tablet-PC oder was es da noch so alles gibt.

    Mit der Software ist das ähnlich. Die ist auch von der Null und der Eins zu umfangreichen Betriebssystemen oder Compilern gewachsen. Mal machte der Compiler einen Schritt, mal das Betriebssystem oder manchmal gar Beide.

    MfG bcc-fan
  • Das klingt soweit alles verständlich.
    Also kann man sagen, dass diese Ebenen Ansichtssache sind und relativ viel Spielraum haben, richtig?

    Womit wurden denn die Assembler geschrieben, als es noch kein C/C++ (usw.) existierten? Maschinensprache?
  • Zu diesem Schritt hab ich mir noch keinen Kopf gemacht, kann mich aber vage noch an folgendes erinnern:
    Ein Aufzugmodell aus Fischtechnik wurde per Microprozessor angesteuert. Damals 8bit 6800 von Motorola, Speicher höchstens 1kB und ein paar Treiberbausteine für die Aufzugmotore. Eingegeben wurde die "Software" per DIP-Schalter. Da lag dann eine Tabelle mit den entsprechenden Prozessorbefehlen in Byte-Form und der dazugehörigen Maschinensprachenbefehlen, die dem Assemblerbefehlen schon ähnlich sind, nicht weit weg vom Eingabemedium. Ausgabe erfolgte mit ein paar LED und dem Modell-Fahrstuhl.

    Vermute mal mit diesen Basics hat man dann die ersten Treiber für Tastaturen geschrieben. Das waren dann noch nicht die Tastaturen, wie wir die heute als selbstverständlich ansehen, sondern Hilfen damit man keine DIP-Schalter mehr bewegen musste. Tasten damals: alle für Hexadezimal und ein paar Sondertasten. Damit hat man dann die nächsten "Evolutionsstufen" geschrieben.

    Das aus der Computersteinzeit.

    Falls der 6800 nicht mehr bekannt ist. Das ist Verwandter des 8080, eines der Urur...urahnen der heutigen Pentiums.

    MfG bcc-fan