Betriebssysteme Letschert - Übung 1-1

Aufgabe 1: Basiswissen

Rechnerarschitektur

  1. Aus welchen Komponenten besteht ein Rechner mit Von-Neumann-Architektur?

  2. Was sind Bits und Bytes?

    Bit: "Binary digIT" = Binäre Einheit. Speichert 0 oder 1
    Byte: 8 Bit zusammengefasst. "Wortlänge" auf heutigen Rechnern
    Register: Speicher im Prozessor
    Befehlszähler: Register, das auf den nächsten Maschinenbefehl im Speicher zeigt

  3. Was versteht man unter RAM

    "Random Access Memory", Hauptspeicher.

  4. Was ist ein Maschinenbefehl?

    Binär kodierter Befehl, der direkt vom Prozessor ausgeführt werden kann.

  5. Was ist eine Unterbrechnung

    "Interrupt": Unterbricht die Programmausführung, um Routinen des Betriebssystems auszuführen. Es gibt 3 Arten:

  6. Wann ist ein Rechner ein 32-Bit-Rechner

    Ein 32-Bit-Rechner hat einen 32-Bit-Adressbus, kann also biz zu 4GB Speicher linear ansprechen.

  7. Welche Komponente führt Befehle aus?

    Der Prozessor (CPU)

Programmierung

  1. Was versteht man unter einem "Assembler" und was ist ein "Assemblercode"?

    Ein Assembler übersetzt Assemblercode in ausführbaren Code. Assemblercode sind einfache Befehle, die direkt in Maschinenbefehle umgesetzt werden können.

  2. Erläutern Sie die Begriffe Interpreter (auch Interpretierer), Compiler, Binder und Lader.

    Interpreter Führt ein Programm, das im Quellcode vorliegt, direkt aus
    Compiler Übersetzt Quellcode in Maschinencode
    Binder (Linker) Bindet mehrere Objektdateien und Bibliotheken zu einem ausführbaren Programm zusammen. Objektdateien sind der vom Compiler erzeugte Maschinencode incl. Informationen fü Linker und Debugger
    Lader Lädt ein Programm von der Platte in den Arbeitsspeicher und startet es.

  3. Was versteht man unter getrennter Übersetzung? Erlätern Sie, warum bereits Ihr allererstes C/C++-Programm - Hallo Welt oder ähnliches auf getrennter Übersetzung basierte

  4. Beschreiben Sie möglichst genau, welche Informationen eine Include-Datei enthält und von wem und wozu diese Informationen benötigt werden. Nutzen Sie in Ihrer Erklärung folgendes Beispiel:
    #include <math.h>   // in C++: #include <cmath>
    int main() {
      double d = sqrt (10);
    }
    
    Was ist math.h? Welchen Bezug haben math.h und sqrt? Wo ist der Code der sqrt-Funktion in welcher Form zu finden?

    Eine Include-Datei enthält

    Jedes Programm, das Bibliotheken benutzt (also im Pronzip jedes), sollte die dazugehörigen Include-Dateien einbinden. Es wird allerdings niemand gezwungen, das zu tun; man könnte die Funktionsprototypen auch selbst hinschreiben. Das rächt sich spätestens, wenn sich in der nächsten Version der Bibliothek die Protoypen oder Konstanten ändern.
    In math.h steht unter anderem der Prototyp für sqrt. Der Code fü sqrt befindet sich ausnahmsweise nicht in einer math.c der libc-Quellen, da es sich um einen Befehl handelt, der normalderweise von der FPU direkt unterstützt wird. daher findet sich aus Performancegründen im Prototyp von sqrt ein Aufruf der Form __ieeeirgendwas, der die FPU direkt anspricht.