Wie Computer funktionieren: Von-Neumann-Architektur

Finde heraus, was in einem Computer geschieht, wenn er ein Programm ausführt. Lerne die Bestandteile der Von-Neumann-Architektur kennen und erfahre, wie Busse und Geräte sie verbinden, wie Logikgatter und der Prozessor Befehle im Befehlszyklus ausführen und wie aus Programmen Maschinencode wird. Vergleiche Haupt- und Sekundärspeicher, erkenne, warum Caches Computer schneller machen, und entdecke, wie das Betriebssystem den Computer startet, Programme in den Speicher lädt und das Zusammenspiel aller Teile ermöglicht.

AnfängerEinheit 3 von 7 in Kurs: Informatik – Computer, Algorithmen, Internet und KI verstehen

Was du lernst

  1. Benenne die wichtigsten Hardwarebestandteile eines Computers, erkläre das Speicherprogrammprinzip hinter der Von-Neumann-Architektur und beschreibe, wie Busse und Ein- und Ausgabegeräte alles verbinden.
    • Benenne die Hauptbestandteile eines Computers und erläutere das Speicherprogrammprinzip
      Unterscheide Hardware von Software und beschreibe die Von-Neumann-Architektur: einen Prozessor, einen gemeinsamen Speicher für Befehle und Daten, Ein- und Ausgabe sowie die Verbindungen zwischen ihnen.
    • Erkläre, wie Busse Adressen, Daten und Steuersignale übertragen
      Beschreibe den Adress-, Daten- und Steuerbus des Systembusses, vollziehe einen Lese- und einen Schreibvorgang im Speicher nach und berechne, wie die Busbreite den adressierbaren Speicher und die Übertragungsgeschwindigkeit begrenzt.
    • Ordne Ein- und Ausgabegeräte ein und erkläre ihre Anbindung an die CPU
      Ordne Geräte nach ihrer Aufgabe, erkläre die Umwandlung zwischen analogen Signalen und digitalen Daten und beschreibe, wie Controller, Treiber, Interrupts und direkter Speicherzugriff das Zusammenspiel langsamer Geräte mit einem schnellen Prozessor ermöglichen.
  2. Zeige, wie Transistoren und Logikgatter mit Bits rechnen, benenne die Bestandteile der CPU, vollziehe den Befehlszyklus nach und erkläre, wodurch ein Prozessor schneller als ein anderer wird.
    • Untersuche anhand von Logikgattern, wie Hardware mit Bits rechnet
      Lies die Wahrheitstabellen der grundlegenden Logikgatter, ermittle die Ausgabe einer kleinen Schaltung und erkläre, wie Gatter aus Transistoren Zahlen addieren und Bits speichern.
    • Benenne die Bestandteile der CPU und ihre jeweiligen Aufgaben
      Beschreibe Steuerwerk, arithmetisch-logische Einheit, Universal- und Spezialregister, Takt und Prozessorkerne sowie ihre jeweiligen Aufgaben bei der Ausführung eines Programms.
    • Vollziehe den Befehlszyklus nach
      Verfolge die Schritte, die die CPU für jeden Befehl wiederholt, verfolge die Registerwerte während eines kurzen Programms und erkläre, wie Sprünge und Interrupts verändern, was als Nächstes ausgeführt wird.
    • Erkläre, wodurch ein Prozessor schneller wird
      Vergleiche die Auswirkungen von Taktfrequenz, Anzahl der Prozessorkerne, Cachegröße und Pipelining und schätze ab, wie sich jede dieser Größen auf die Dauer einer Aufgabe auswirkt.
  3. Beschreibe Maschinencode und Befehlssätze, lies ein kurzes Assemblerprogramm und erkläre, wie Compiler, Assembler, Linker und Interpreter aus Quellcode ein laufendes Programm machen.
    • Lies Maschinencode und Assemblersprache
      Erkläre, was ein Maschinenbefehl enthält, warum ein Befehlssatz Programme an eine Prozessorfamilie bindet und wie Assemblersprache Maschinencode lesbar macht.
    • Erkläre, wie Compiler und Interpreter aus Quellcode laufende Programme machen
      Vergleiche Kompilieren und Interpretieren, verfolge die Schritte von einer Quelldatei zu einer ausführbaren Datei und erkläre Bytecode, virtuelle Maschinen und warum dasselbe Programm auf verschiedenen Computern laufen kann.
  4. Vergleiche den Hauptspeicher mit den verschiedenen Arten von Sekundärspeicher, erkläre die Speicherhierarchie und die Zwischenspeicherung im Cache und wähle einen passenden Speicher für eine Aufgabe.
    • Beschreibe den Hauptspeicher und seine Adressierung
      Erkläre RAM und ROM, Flüchtigkeit, Byteadressen und Kapazitätseinheiten sowie warum ein Programm zur Ausführung im Hauptspeicher liegen muss.
    • Vergleiche Technologien für Sekundärspeicher
      Erkläre, wie Festplatten, SSDs, Flashmedien, optische Discs, Magnetband und Cloudspeicher Daten aufbewahren, und wähle Speicher nach Kapazität, Geschwindigkeit, Kosten, Haltbarkeit und Transportfähigkeit aus.
    • Erkläre die Speicherhierarchie und die Zwischenspeicherung im Cache
      Ordne die Ebenen von Registern bis zum Archivspeicher nach Geschwindigkeit, Größe und Kosten, erkläre, warum Caches funktionieren, und berechne, wie Cache-Treffer und Cache-Fehltreffer die durchschnittliche Zugriffszeit beeinflussen.
  5. Beschreibe die Aufgaben eines Betriebssystems und den Start eines Computers sowie wie das Betriebssystem Programme in den Speicher lädt, auf dem Prozessor ausführt und voneinander trennt.
    • Beschreibe die Aufgaben des Betriebssystems
      Erkläre, wie das Betriebssystem Prozessor, Haupt- und Sekundärspeicher und Geräte verwaltet, eine Benutzeroberfläche und ein Dateisystem bereitstellt und Nutzer und Programme schützt.
    • Vollziehe nach, wie ein Computer startet und ein Programm ausführt
      Vollziehe den Startablauf nach, verfolge, wie das Betriebssystem ein Programm in den Speicher lädt und startet, und erkläre, wie virtueller Speicher Programme voneinander trennt und ihnen ermöglicht, mehr Speicher als eingebaut zu nutzen.

Von-Neumann-Architektur einfach erklärt

5 Kapitel

1

Computerbestandteile und ihre Verbindungen

Ein Computer wird leichter verständlich, wenn du die Aufgaben seiner Bestandteile unterscheidest. Die Eingabe bringt Daten hinein, der Prozessor folgt gespeicherten Befehlen, der Speicher hält Arbeitsinhalte bereit und die Ausgabe stellt Ergebnisse dar. Die Verbindungen sind ebenso wichtig wie die Komponenten: Verfolge eine Adresse, einen Wert und ein Steuersignal, um zu sehen, wie ein Prozessor auf Speicher und Geräte zugreift. Sieh dir anschließend an, wie langsamere Geräte Aufmerksamkeit anfordern.

1.1 Die Bestandteile, die einen Computer funktionsfähig machen

Ein Computer nimmt Eingaben entgegen, verarbeitet sie anhand von Befehlen, speichert Daten und erzeugt Ausgaben. Diese Aufgaben gibt es sowohl bei einem Laptop als auch bei einer Steuerung im Inneren einer Waschmaschine. Der Unterschied liegt in der Aufgabe und den angeschlossenen Geräten.

Physische Bestandteile und Programme

Hardware sind die physischen Bestandteile. Software besteht aus Programmen und den Daten, die sie verarbeiten. Die CPU ist der Prozessorchip, nicht das ganze Computergehäuse. Ein Mainboard verbindet sie mit RAM, Sekundärspeicher, einer GPU, der Stromversorgung und Geräteanschlüssen. Die GPU übernimmt das Zeichnen und andere Arbeiten, bei denen ähnliche Operationen auf viele Werte angewendet werden. Ein Telefon vereint viele dieser Funktionen in einem System-on-a-Chip (SoC).

RAM enthält Befehle und Daten, die gerade genutzt werden. Ein Speicherlaufwerk bewahrt Programme und gespeicherte Dateien auch ohne Strom auf. Bei einem Computer mit 16 GB Arbeitsspeicher und einer 512-GB-SSD bezeichnet die erste Kapazität den RAM und die zweite den Sekundärspeicher. Ein größeres Laufwerk stellt nicht mehr RAM als Arbeitsspeicher bereit.

Ein als Daten gespeichertes Programm

Die Von-Neumann-Architektur umfasst eine CPU, einen Hauptspeicher für Befehle und Daten, Ein- und Ausgabegeräte sowie Busse, die sie verbinden. John von Neumann beschrieb diesen Aufbau 1945 im „First Draft of a Report on the EDVAC“. Seine zentrale Idee ist das gespeicherte Programm: Befehle liegen als Binärwerte im Speicher bereit, damit die CPU sie holen kann.

Frühere Maschinen wie ENIAC wurden mit Schaltern und Kabeln für Aufgaben eingerichtet. Durch das Laden eines neuen Programms kann eine speicherprogrammierte Maschine die Aufgabe wechseln, ohne neu verkabelt zu werden. Die Manchester Baby führte am 21. Juni 1948 ein Programm in einem wiederbeschreibbaren elektronischen Speicher aus.

Der Speicher weist nicht jedem Muster eine Bedeutung zu. Das Byte 01000001 kann die Zahl 65, den ASCII-Buchstaben „A“ oder einen Teil eines Befehls darstellen. Was die CPU oder das Programm mit dem Muster tut, bestimmt seine Bedeutung. Beim Holen eines Befehls behandelt die CPU das geholte Muster als Befehl.

Warum der Prozessor warten kann

Befehle und Daten teilen sich den Weg zwischen CPU und Hauptspeicher. Außerdem liefert der Speicher sie langsamer, als die CPU sie nutzen kann. Diese Einschränkung ist der Von-Neumann-Flaschenhals. Ein schneller Prozessor kann deshalb Zeit damit verbringen, auf den nächsten Wert zu warten. Kleine, schnelle Caches halten nützliche Kopien nahe an der CPU und verringern viele dieser Wartezeiten.

ArchitekturBefehle und DatenNützliche Folge
Von NeumannTeilen sich Hauptspeicher und ÜbertragungswegEin Speicher enthält eine wechselnde Mischung aus Code und Daten.
HarvardHaben getrennte Speicher und ÜbertragungswegeEin Befehl und ein Datenwert können gleichzeitig geholt werden.

Kleine Mikrocontroller und Signalprozessoren nutzen oft eine Harvard-Architektur. Moderne Allzweck-CPUs verbinden die Ideen: gemeinsamer Hauptspeicher, aber getrennte Level-1-Caches für Befehle und Daten.

Computer in anderen Geräten

Ein eingebettetes System erfüllt eine bestimmte Aufgabe in einem größeren Gerät. Ein Thermostat liest einen Temperatursensor aus, verarbeitet den Messwert und steuert die Heizung. Sein gespeichertes Programm liegt gewöhnlich in nichtflüchtigem Speicher. Die Aufgaben von Prozessor, Speicher und Ein- und Ausgabe sind auch ohne Tastatur, Bildschirm oder vollständiges Desktopbetriebssystem vorhanden.

Wichtige Erkenntnisse

  • Hardware sind die physischen Bestandteile; Software umfasst Programme und Daten.
  • Die CPU ist eine einzelne Komponente und unterscheidet sich von RAM, Sekundärspeicher und Computergehäuse.
  • Ein speicherprogrammierter Computer holt binäre Befehle aus dem Speicher.
  • Ein Bitmuster erhält seine Bedeutung dadurch, wie es verwendet wird.
  • Caches verringern Wartezeiten durch den Flaschenhals zwischen CPU und Speicher.

1.2 Wie Adressen, Werte und Befehle übertragen werden

Ein Prozessor benötigt für den Zugriff auf den Speicher drei Dinge: einen Ort, den zu übertragenden Wert und einen Befehl, der dem Speicher sagt, was er tun soll. Wenn du diese Aufgaben auseinanderhältst, kannst du eine Busübertragung viel leichter nachvollziehen.

Drei Aufgaben auf einem klassischen Systembus

Ein Bus ist ein gemeinsamer Kommunikationsweg. In einem klassischen parallelen Systembus übertragen mehrere Drähte oder Leiterbahnen auf einer Platine gleichzeitig Bits.

BustypWas er überträgtRichtung bei einem Speicherzugriff der CPU
AdressbusDie zu verwendende SpeicherstelleVon der CPU zum Speicher oder zu einem Gerät
DatenbusEinen Befehl oder DatenwertBeim Lesen zur CPU; beim Schreiben von ihr weg
SteuerbusLese-, Schreib-, Takt- und InterruptsignaleHängt vom Signal ab

Eine Adresse bezeichnet eine Speicherstelle; sie ist nicht der dort gespeicherte Wert. Adresse 200 kann heute 7 und später 9 enthalten, ohne dass sich ihre Adresse ändert. Ein hilfreicher Vergleich ist ein nummerierter Briefkasten: Die Nummer bezeichnet den Kasten, während sich sein Inhalt ändern kann.

Verfolge einen Lese- und einen Schreibvorgang

Um Adresse 200 zu lesen, legt die CPU 200, binär 11001000, auf den Adressbus und sendet einen Lesebefehl über den Steuerbus. Der Speicher gibt den Wert an dieser Stelle, hier 7, über den Datenbus zurück. Die CPU kopiert ihn in ein Register.

Um 9 an Adresse 201 zu schreiben, legt die CPU 201 auf den Adressbus, 9 auf den Datenbus und einen Schreibbefehl auf den Steuerbus. Der Speicher ersetzt den Inhalt der Speicherstelle 201. Würde 201 über den Datenbus gesendet, wäre das der falsche Wert; Adresse und Inhalt haben unterschiedliche Aufgaben.

Die Adressbreite begrenzt die Anzahl der Speicherstellen

Mit n Adressbits gibt es 2n verschiedene Adressen. Bezeichnet jede Adresse ein Byte, ist das zugleich die Anzahl der adressierbaren Bytes.

  • 16 Bit ergeben 216=65.536 Adressen oder 64 KiB.
  • 32 Bit ergeben 232=4.294.967.296 Adressen oder 4 GiB.
  • Eine Erhöhung von 20 auf 21 Bit verdoppelt die Kapazität von 1 MiB auf 2 MiB.

Jedes zusätzliche Bit verdoppelt die Kombinationen. Eine Verdopplung der Bitzahl von 16 auf 32 multipliziert die Anzahl der Speicherstellen mit 216; sie verdoppelt sie nicht bloß. Diese Rechnung ergibt eine Adressierungsschranke, nicht die tatsächlich eingebaute RAM-Größe.

Die Datenbreite begrenzt jede Übertragung

Ein 64 Bit breiter Datenweg überträgt 8 Bytes in einem Vorgang. Ein 8 Bit breiter Datenweg benötigt vier Übertragungen für einen 4 Byte großen Wert. Die Bandbreite misst, wie viele Daten pro Sekunde übertragen werden können:

Bandbreite=Bytes pro U¨bertragung×U¨bertragungen pro Sekunde

Bei 1 Milliarde Übertragungen pro Sekunde überträgt ein 8 Byte breiter Datenweg 8 Milliarden Bytes pro Sekunde oder 8 GB/s. Die Adressbreite bestimmt, wie viele Speicherstellen bezeichnet werden können; die Datenbreite bestimmt, wie viel auf einmal übertragen wird.

Das Maschinenwort einer CPU ist ihre natürliche Arbeitsgröße, häufig 32 oder 64 Bit. Ein 64-Bit-Prozessor benötigt nicht für jede Verbindung 64 Leitungen. Auch der tatsächlich umgesetzte Adressbereich kann weniger als 64 Bit nutzen.

Moderne Verbindungen erfüllen dieselben Aufgaben

Speicherkanäle, PCI Express und USB ersetzen einen gemeinsamen Bus durch mehrere Verbindungen. PCI Express und USB sind seriell: Bits werden nacheinander über schnelle Leitungspaare übertragen. Adressen, Werte und Befehle werden in Nachrichten verpackt. Sie bezeichnen weiterhin ein Ziel, übertragen Inhalte und koordinieren die Übertragung.

Wichtige Erkenntnisse

  • Eine Adresse bezeichnet eine Speicherstelle; Daten sind der übertragene Inhalt.
  • Lese- und Schreibbefehle werden als Steuersignale übertragen.
  • Eine n-Bit-Adresse hat 2ⁿ mögliche Werte; bei Byteadressierung beträgt die Kapazität 2ⁿ Bytes.
  • Jedes zusätzliche Adressbit verdoppelt den Adressbereich.
  • Die Bandbreite entspricht den Bytes pro Übertragung multipliziert mit den Übertragungen pro Sekunde.
  • Serielle Verbindungen übertragen Adressierungs-, Daten- und Steuerinformationen in Nachrichten.

1.3 Daten in einen Computer hinein- und aus ihm herausbringen

Ein Eingabegerät liefert Daten; ein Ausgabegerät stellt ein Ergebnis dar oder setzt es in eine Aktion um. Die Einordnung beschreibt die Aufgabe des Geräts im System. Sie beschreibt nicht, wie kompliziert das Gerät im Inneren ist.

Ordne die Tätigkeit ein

Tastaturen, Kameras, Mikrofone, Barcode-Lesegeräte und Sensoren liefern Eingaben. Bildschirme, Drucker, Lautsprecher und Aktoren liefern Ausgaben. Ein Aktor verändert etwas Physisches, indem er etwa ein Ventil öffnet oder einen Motor dreht.

Manche Geräte übernehmen beide Aufgaben. Ein Touchscreen erfasst Berührungen und zeigt Bilder an. Ein Headset vereint ein Mikrofon mit Lautsprechern. Ein Netzwerkadapter sendet und empfängt Daten. Auch Speicherlaufwerke führen Lese- und Schreibvorgänge über Ein-/Ausgabecontroller aus. Ihr Hauptzweck ist jedoch die Aufbewahrung von Daten, daher bilden sie die eigene Kategorie Sekundärspeicher.

Ein Drucker kann einen Prozessor enthalten, der eine Seite in druckbare Punkte umwandelt. Aufgrund seiner Aufgabe für den Computer bleibt er ein Ausgabegerät. Eine drahtlose Maus liefert ebenso Eingaben wie eine kabelgebundene.

Kontinuierliche Signale in Zahlen umwandeln

Schall und Temperatur ändern sich kontinuierlich: Sie sind analoge Signale. Ein Analog-Digital-Wandler (ADC) misst ein Signal in regelmäßigen Abständen und kodiert die Abtastwerte als Zahlen. Ein Digital-Analog-Wandler (DAC) wandelt digitale Werte in eine analoge Ausgabe um, etwa in das Signal, das einen Lautsprecher ansteuert.

Für einen Audiokanal, der 44.100-mal pro Sekunde mit 16 Bit pro Abtastwert abgetastet wird:

44.100×16=705.600 Bit pro Sekunde

Das ist die Datenrate der rohen Abtastwerte. Jede Sekunde enthält 44.100 Messungen, und jede Messung benötigt 16 Bit. Durch Abtastung und Kodierung kann ein Computer die Aufnahme speichern und verarbeiten.

Hardwarecontroller, Softwaretreiber

Geräte werden über Anschlüsse oder drahtlose Verbindungen wie USB, HDMI, Bluetooth oder WLAN verbunden. Ein Gerätecontroller ist eine Schaltung, die die gerätenahe Kommunikation übernimmt und Register bereitstellt, die die CPU lesen oder beschreiben kann. Ein Gerätetreiber ist Software, die Anforderungen des Betriebssystems in Befehle für das Gerät übersetzt. Der Controller ist Hardware; der Treiber ist Software.

Geräte können Aufmerksamkeit anfordern

Beim Polling prüft der Prozessor wiederholt ein Statusregister. Das ist einfach, aber ein Gerät, das meist untätig ist, kann viele Prüfungen ohne nützliches Ergebnis verursachen.

Mit einem Interrupt signalisiert der Controller, wenn Aufmerksamkeit benötigt wird. Die CPU beendet im einfachen Modell des Befehlszyklus den aktuellen Befehl, sichert den unterbrochenen Zustand und führt eine Interruptbehandlungsroutine aus. Danach stellt sie den gesicherten Zustand wieder her und arbeitet weiter. Ein Tastendruck oder ein abgeschlossener Lesevorgang einer Festplatte kann diesen Ablauf auslösen.

Menschen und viele Geräte handeln viel langsamer als eine CPU. Ein Mensch tippt nur wenige Zeichen pro Sekunde, während ein Prozessor Milliarden Befehle pro Sekunde ausführen kann. Interrupts ermöglichen der CPU, zwischen Ereignissen zu arbeiten.

Bei einer großen Übertragung ermöglicht der direkte Speicherzugriff (DMA) einem Gerät oder DMA-Controller, einen Block direkt in den RAM oder aus ihm heraus zu übertragen. Die CPU richtet den Vorgang ein und arbeitet an etwas anderem. Ein Interrupt bei Abschluss teilt ihr mit, wann der Block bereitsteht. Dank DMA muss die CPU nicht jedes Byte kopieren; an der Einrichtung und dem Abschluss der Übertragung ist sie weiterhin beteiligt.

Wichtige Erkenntnisse

  • Ordne Ein- und Ausgabe nach der Tätigkeit für den Computer ein.
  • Ein ADC kodiert abgetastete analoge Eingaben; ein DAC erzeugt analoge Ausgaben.
  • Ein Controller ist Hardware, ein Treiber dagegen Software.
  • Polling prüft wiederholt; ein Interrupt signalisiert, dass Aufmerksamkeit benötigt wird.
  • DMA überträgt Blöcke zwischen einem Gerät und dem RAM, ohne dass die CPU jedes Byte kopiert.
2

Wie ein Prozessor arbeitet

Im Inneren eines Prozessors verbinden sich einfache Schaltungen zu einer Maschine, die einem Programm folgen kann. Beginne mit Gattern, die auf Bits wirken, und lerne dann die Register und Steuersignale kennen, die einen Befehl durch die CPU bewegen. Eine kurze Ablaufverfolgung macht den sich ändernden Zustand sichtbar. Taktfrequenz, Prozessorkerne, Caches und Pipelines erklären, warum die Ausführung derselben nützlichen Arbeit auf verschiedenen Systemen unterschiedlich lange dauern kann.

2.1 Von Schaltern zu Berechnungen

Die kleinsten Operationen eines Computers entstehen in Schaltungen, die zwischen zwei Signalpegeln wechseln. Eine hohe Spannung steht für 1 und eine niedrige für 0. Diese Pegel stellen Bits dar; ein Chip erkennt nicht die Bedeutung eines Fotos oder Satzes.

Gatter wandeln Eingabebits in eine Ausgabe um

Ein Transistor wirkt als elektronisch gesteuerter Schalter. Kleine Gruppen bilden Logikgatter, die jeweils einer festen Ein-/Ausgaberegel folgen. Eine Wahrheitstabelle führt jede Eingabekombination und ihre Ausgabe auf. Bei zwei Eingängen gibt es vier Kombinationen; allgemein sind für n Eingänge 2n Zeilen nötig.

NICHT kehrt seine einzige Eingabe um. Die Gatter mit zwei Eingängen verhalten sich wie folgt:

ABUNDODERXORNANDNOR
0000011
0101110
1001110
1111000

UND benötigt an beiden Eingängen eine 1. ODER benötigt mindestens einen solchen Eingang, auch beide dürfen es sein. XOR benötigt unterschiedliche Eingaben. NAND kehrt UND um; NOR kehrt ODER um. Wer ODER als „einer, aber nicht beide“ liest, verwechselt es mit XOR.

Um (A AND B) OR (NOT C) für A = 1, B = 0, C = 0 auszuwerten, gehst du von den Eingaben nach außen vor. A AND B ergibt 0. NOT C ergibt 1. Schließlich ergibt 0 OR 1 den Wert 1. Schreibe die Zwischenausgaben auf, damit das letzte Gatter die richtigen Eingaben erhält.

Gatter addieren Binärziffern

Ein Halbaddierer nimmt zwei Bits auf. Sein Summenausgang ist ein XOR, sein Übertragsausgang ein UND. Bei zwei Eingaben mit 1 ist das Summenbit 0 und das Übertragsbit 1: Das zweistellige Ergebnis ist 10, also 2.

Ein Volladdierer nimmt zusätzlich einen Übertrag aus der vorherigen Stelle auf. Durch Verkettung dieser Schaltungen kann eine ALU längere Zahlen addieren. Verfolge 0110 plus 0011 von rechts:

  1. Die äußerste rechte Stelle ergibt 1, ohne Übertrag.
  2. Die nächste Stelle hat zwei 1: Schreibe 0 und übertrage 1.
  3. Die nächste hat 1, 0 und den Übertrag 1: Schreibe 0 und übertrage 1.
  4. Die äußerste linke hat 0, 0 und den Übertrag 1: Schreibe 1.

Das Ergebnis ist 1001, also 9. Ein Übertrag gehört zur nächsten Stelle; lässt du ihn weg, ändert sich der Wert.

Gatter können ein Bit halten

Rückkopplung bedeutet, den Ausgang einer Schaltung auf ihren Eingang zurückzuführen. Kreuzgekoppelte NAND- oder NOR-Gatter bilden ein Latch, das ein Bit hält, solange Strom anliegt. Ein Flipflop übernimmt ein neues Bit an einer Taktflanke und hält Aktualisierungen so im Gleichschritt mit dem Prozessortakt. Register nutzen getaktete Speicherschaltungen. SRAM-Cachezellen nutzen Schaltungen nach Art eines Latches; DRAM speichert Ladung in Kondensatoren.

NAND und NOR sind jeweils universell: Aus jedem dieser Gattertypen allein lässt sich jede logische Funktion aufbauen. Verbindet man beide NAND-Eingänge mit A, ergibt sich A NAND A, was wie NICHT A wirkt.

Das sind Abstraktionsschichten. Transistoren bilden Gatter; Gatter bilden Addierer, Register und Steuerschaltungen; diese bilden einen Prozessor, der Befehle ausführt. Eine programmierende Person kann die Befehlsschicht nutzen, ohne die darunterliegenden Schalter zu entwerfen.

Wichtige Erkenntnisse

  • Wahrheitstabellen führen jede Eingabekombination auf.
  • ODER schließt den Fall ein, dass beide Eingaben 1 sind; XOR schließt ihn aus.
  • Werte eine Schaltung anhand der Zwischenausgaben ihrer Gatter aus.
  • Ein Halbaddierer erzeugt eine XOR-Summe und einen UND-Übertrag.
  • Rückkopplung speichert Bits; Taktflanken steuern die Aktualisierung von Flipflops.
  • NAND und NOR reichen jeweils aus, um jede logische Funktion aufzubauen.

2.2 Die Bestandteile des Prozessors

Die CPU oder der Prozessor führt die Befehle eines Programms aus. Ihr Steuerwerk leitet die Arbeit, ihre arithmetisch-logische Einheit führt Operationen aus und ihre Register halten die unmittelbar benötigten Werte bereit. Ein Takt koordiniert Änderungen in diesen Schaltungen.

Arbeit steuern und ausführen

Das Steuerwerk holt einen Befehl, dekodiert ihn und gibt Steuersignale aus. Es kann den Speicher anweisen, einen Wert zurückzugeben, zwei Eingaben für die ALU auswählen und einem Register ermöglichen, das Ergebnis zu speichern. Es koordiniert die Operation; die ALU führt die arithmetische oder logische Operation aus.

Zu den ALU-Operationen gehören Addition, Subtraktion, Vergleiche, Bitverschiebungen und Gatteroperationen wie UND und XOR. Ergebnisse aktualisieren auch Statusflags. Ein Nullflag zeigt ein Ergebnis von null an; ein Negativflag hält ein negatives Ergebnis fest. Ein Sprung kann ein Flag prüfen, um den nächsten Befehl auszuwählen.

Register halten den aktuellen Arbeitszustand

Register sind sehr kleine, schnelle Speicherstellen innerhalb des Prozessors. Ein Universalregister enthält gewöhnlich ein Maschinenwort. Beispielsweise stellt x86-64 16 Universalregister für Ganzzahlen bereit und 64-Bit-ARM 31. Programme nutzen sie, um Werte nahe an der ALU bereitzuhalten.

Das Prozessor-Lehrbuchmodell macht folgende Aufgaben sichtbar:

RegisterAufgabe
Befehlszähler, PCAdresse des nächsten zu holenden Befehls
Speicheradressregister, MARAdresse für den nächsten Lese- oder Schreibzugriff auf den Speicher
Speicherdatenregister, MDRGerade gelesener oder als Nächstes zu schreibender Wert
Befehlsregister, CIRBefehl, der gerade dekodiert und ausgeführt wird
Akkumulator, ACCArbeitswert und ALU-Ergebnis in der Lehrmaschine

Das MDR wird auch Speicherpufferregister (MBR) genannt. Das CIR heißt auch Befehlsregister (IR). Tatsächliche Chips organisieren diese Aufgaben auf komplexere Weise, aber das Modell lässt dich den Weg eines Befehls und seiner Daten verfolgen.

Der PC enthält eine Adresse, keine Gesamtzahl abgeschlossener Befehle. Ein Sprung kann ihn zurücksetzen, um eine Schleife zu wiederholen. Auch MAR und MDR unterscheiden sich: Eine Adresse wie 10 gelangt in das MAR; der an Adresse 10 gespeicherte Wert gelangt in das MDR.

Ein Taktzyklus ist ein Zeitschritt

Die Taktfrequenz zählt die Impulse pro Sekunde und wird in Hertz (Hz) gemessen. Ein Takt mit 3 GHz erzeugt 3 Milliarden Zyklen pro Sekunde. Die Dauer eines Zyklus beträgt:

13.000.000.000 s≈0,33 ns

Ein Impuls lässt Teile einer Schaltung einen Schritt weiterarbeiten. Manche Befehle benötigen mehrere Taktschritte, und moderne Prozessoren überlappen die Arbeit an mehreren Befehlen.

Mehr als ein Prozessorkern

Ein Prozessorkern besitzt die Steuer-, Rechen-, Register- und Cacheressourcen, die zur Ausführung einer Befehlsfolge nötig sind. Vier Kerne können vier Befehlsfolgen gleichzeitig ausführen. Ein Programm profitiert, wenn sich seine Arbeit unter ihnen aufteilen lässt; allein das Vorhandensein von vier Kernen teilt nicht jede Aufgabe auf.

Eine GPU hat viele kleinere Verarbeitungseinheiten, die sich dafür eignen, ähnliche Operationen auf viele Datenelemente anzuwenden. Das Zeichnen von Pixeln, die Verarbeitung von Videos und manche Berechnungen des maschinellen Lernens haben diese Form. Eine CPU eignet sich für eine größere Vielfalt von Befehlen und Entscheidungen.

Denk an eine Küche: Das Steuerwerk weist Tätigkeiten zu, die ALU führt sie aus, Register halten Zutaten griffbereit und der Speicher liefert weitere. Die CPU folgt Bitmustern mechanisch; die nützliche Bedeutung kommt vom Programm.

Wichtige Erkenntnisse

  • Das Steuerwerk koordiniert Operationen; die ALU führt arithmetische und logische Operationen aus.
  • Flags halten Zustände wie ein Ergebnis von null für spätere Sprünge fest.
  • PC, MAR, MDR, CIR und ACC halten unterschiedliche Teile des aktuellen Arbeitszustands.
  • Ein Taktzyklus ist ein Zeitschritt, nicht notwendigerweise ein abgeschlossener Befehl.
  • Mehrere Kerne helfen bei Arbeit, die parallel ausgeführt werden kann.

2.3 Verfolge einen Befehl durch die CPU

Der Befehlszyklus verbindet die Bestandteile des Prozessors zu einem laufenden Programm. Jeder Zyklus holt einen Befehl, bestimmt seine Operation und führt sie aus. Eine Ablaufverfolgung hält die Änderungen an Registern und Speicher fest, sodass jedes Ergebnis eine sichtbare Ursache hat.

Den Befehl holen

Im einfachen Prozessor folgt das Holen dieser Reihenfolge:

  1. Kopiere den PC in das MAR.
  2. Lege die Adresse auf den Adressbus und sende ein Speicherlesesignal.
  3. Empfange den Befehl über den Datenbus im MDR.
  4. Kopiere ihn in das CIR.
  5. Setze den PC auf den nächsten Befehl weiter.

In der Lehrmaschine belegt jeder Befehl eine Speicherstelle, daher erhöht sich der PC um 1. Ein byteadressierter Prozessor erhöht ihn um die Länge des Befehls in Bytes. Während der Ausführung zeigt der PC bereits über den geholten Befehl hinaus.

Dekodieren und dann ausführen

Das Steuerwerk trennt den Operationscode, der die Operation angibt, vom Operanden, der einen Wert, ein Register oder eine Adresse liefert. Anschließend sendet es die Signale, die zur Ausführung des Befehls nötig sind. Ein Ladebefehl liest Daten, eine Addition nutzt die ALU, ein Speicherbefehl schreibt Daten und ein Sprung ändert den PC. Manche Beschreibungen bezeichnen das Schreiben des Ergebnisses als eigene Phase des Rückschreibens.

Ein vollständiges Programm verfolgen

Die Lehrmaschine hat einen Akkumulator. Hier verwenden LOAD, ADD und STORE Speicheradressen als Operanden.

Address  Instruction      Data address  Value
0        LOAD 10          10            7
1        ADD 11           11            5
2        STORE 12         12            0
3        HALT

Beginne mit PC 0. Beim Holen von LOAD 10 wird der PC auf 1 gesetzt. Die Ausführung legt Adresse 10 in das MAR, liest 7 über das MDR und setzt den ACC auf 7. Der Operand 10 bezeichnet eine Speicherstelle; er ist nicht der geladene Wert.

Als Nächstes wird ADD 11 geholt und der PC auf 2 gesetzt. Speicherstelle 11 liefert 5. Die ALU addiert 7 und 5, sodass der ACC 12 enthält. Beim Holen von STORE 12 wird der PC auf 3 gesetzt. Die Ausführung legt Adresse 12 in das MAR und Wert 12 in das MDR und schreibt dann 12 an diese Stelle. Der ACC bleibt 12. Schließlich wird beim Holen von HALT der PC auf 4 gesetzt und die Ausführung hält die Lehrmaschine an. Vier Befehle wurden ausgeführt.

Sprünge ersetzen die nächste Adresse

JUMP 0 setzt den PC bei der Ausführung auf 0, unabhängig von seinem vorherigen Wert. JUMPZ 6 springt nur, wenn der ACC null ist. Wurde dieser Befehl von Adresse 4 geholt, setzt das Holen den PC zunächst auf 5. Die Ausführung setzt den PC dann auf 6, wenn der ACC null ist; andernfalls bleibt der PC bei 5. So kann eine Befehlsfolge einen Weg wählen oder eine Schleife wiederholen.

Unterbrechungen und reale Prozessoren

An einer Befehlsgrenze prüft die CPU in diesem Modell, ob Interrupts vorliegen. Um einen zu behandeln, sichert sie den PC und andere Arbeitsregister, führt die Behandlungsroutine aus und stellt dann den gesicherten Zustand wieder her. Das unterbrochene Programm wird mit seinen eigenen Werten und seiner nächsten Adresse fortgesetzt.

Eine CPU holt nicht ein ganzes Quellprogramm auf einmal. Sie führt Maschinenbefehle aus, oft mehrere für eine Quellanweisung. Moderne CPUs überlappen interne Arbeit und ordnen sie um, wobei sie die geforderten Ergebnisse des Programms erhalten.

Wichtige Erkenntnisse

  • Beim Holen wird der Befehl über MAR und MDR in das CIR gelesen.
  • Der PC wird beim Holen weitergesetzt; die Ausführung eines Sprungs kann diese Adresse ersetzen.
  • Ein Adressoperand muss genutzt werden, um den dort gespeicherten Wert zu lesen.
  • STORE schreibt in dieser Lehrmaschine den ACC in den Speicher, ohne den ACC zu verändern.
  • Die Interruptbehandlung sichert den unterbrochenen Arbeitszustand und stellt ihn wieder her.
  • Reale Prozessoren überlappen Arbeit und erhalten dabei die geforderten Programmergebnisse.

2.4 Warum ein Programm früher fertig wird

Die Prozessorleistung hängt davon ab, welche Arbeit ein Programm benötigt und wie schnell der Computer sie abschließt. Taktfrequenz, nützliche Arbeit pro Zyklus, Wartezeit und Möglichkeiten zur parallelen Arbeit spielen alle eine Rolle.

Taktfrequenz und feste Zykluszahl

Für eine Aufgabe, die eine bekannte Anzahl von Taktzyklen benötigt, gilt:

Zeit=beno¨tigte ZyklenZyklen pro Sekunde

Eine Aufgabe, die 6 Milliarden Zyklen benötigt, dauert bei 3 GHz 2 Sekunden und bei 4 GHz 1,5 Sekunden. Bei diesem Vergleich bleibt die Zykluszahl fest. Auf Prozessoren unterschiedlicher Bauweise kann ein Programm unterschiedlich viele Zyklen benötigen. Ein Chip mit 3,5 GHz kann daher einen Chip mit 4 GHz übertreffen, indem er pro Zyklus mehr nützliche Befehle abschließt.

Höhere Taktfrequenzen verbrauchen auch mehr Strom und erzeugen Wärme. Thermische Drosselung senkt den Takt, wenn ein Prozessor zu heiß wird. Das erklärt mit, warum Leistungssteigerungen nicht allein durch höhere Gigahertzzahlen erreicht wurden.

Kerne teilen nur den parallelisierbaren Teil auf

Angenommen, eine Aufgabe dauert auf einem Kern 10 Sekunden. Zwei Sekunden müssen nacheinander ablaufen; acht Sekunden lassen sich gleichmäßig auf vier Kerne aufteilen. Ohne Berücksichtigung des Koordinationsaufwands ergibt sich:

2+84=4 Sekunden

Teilst du die gesamten 10 Sekunden durch vier, erhältst du 2,5 Sekunden, teilst dabei aber fälschlich auch die sequenzielle Arbeit auf. Selbst unbegrenzt viele Kerne können diese zwei Sekunden nicht beseitigen. Mehrere Kerne helfen auch dabei, getrennte Programme gleichzeitig auszuführen, selbst wenn jedes Programm nur einen Kern nutzt.

Eine Pipeline überlappt Phasen

In einer dreistufigen Pipeline wird ein Befehl ausgeführt, während der nächste dekodiert und ein weiterer geholt wird. Jeder Befehl durchläuft weiterhin alle drei Phasen. Der Gewinn besteht darin, dass in einem Zeitraum mehr Befehle abgeschlossen werden.

Dauert jede Phase einen Zyklus, benötigen zehn unabhängige Befehle ohne Überlappung 30 Zyklen. Eine ideale Pipeline benötigt drei Zyklen, um den ersten Befehl abzuschließen, und je einen weiteren für jeden verbleibenden Befehl:

3+(10−1)=12 Zyklen

Ein Sprung kann bereits geholte Befehle nutzlos machen. Das Verwerfen dieser Arbeit kostet Zyklen, daher sagen Prozessoren Sprünge voraus. Auch tatsächliche Abhängigkeiten und Wartezeiten auf den Speicher verhindern, dass eine Pipeline immer ihre ideale Rate erreicht.

Den Prozessor versorgen

Ein Cache hält Kopien von Befehlen und Daten in der Nähe bereit. Mehr nutzbare Cachekapazität kann Zugriffe auf den RAM verringern, besonders wenn ein Programm wiederholt mit Daten arbeitet, die vorher nicht vollständig in den Cache passten. Passen diese Arbeitsdaten bereits hinein, hilft zusätzliche Kapazität möglicherweise wenig.

Die Speicherbandbreite begrenzt, wie schnell viele Werte eintreffen können. Die Geschwindigkeit des Sekundärspeichers ist beim Öffnen von Dateien oder Starten von Anwendungen wichtig: Der Wechsel von einer Festplatte zu einer SSD kann die Verzögerung verringern, obwohl die CPU unverändert bleibt. Auch die Wortgröße und die von einem Prozessor unterstützten Befehle beeinflussen, für welche Arbeitslasten er geeignet ist.

Mehr Transistoren, andere Verwendungen

Das Mooresche Gesetz beschreibt Gordon Moores Beobachtung, erstmals 1965 gemacht und 1975 überarbeitet, dass sich die Anzahl der Transistoren etwa alle zwei Jahre verdoppelte. Dieser historische Trend ist keine Regel, nach der Programme in einem festen Zeitplan doppelt so schnell werden. Da sich die Verkleinerung verlangsamt hat, nutzen Chipentwickler zusätzliche Transistoren für Kerne, Caches, GPUs und spezialisierte Beschleuniger. Ein nützlicher Vergleich fragt, wie lange dieselbe Aufgabe unter denselben Bedingungen dauert.

Wichtige Erkenntnisse

  • Vergleiche die Ausführungszeit für die tatsächliche Aufgabe, nicht allein die Taktfrequenz.
  • Mehr Kerne verringern nur die Arbeit, die sich auf sie verteilen lässt.
  • Pipelining erhöht den Durchsatz, indem es Befehlsphasen überlappt.
  • Cache, Speicherbandbreite, Sekundärspeicher und Wärme können die nutzbare Arbeit der CPU begrenzen.
3

Wie aus geschriebenen Programmen Maschinenbefehle werden

Ein lesbares Programm und die Befehle, die eine CPU ausführt, sind verschiedene Formen derselben beabsichtigten Arbeit. Assemblersprache macht einzelne Operationen und Sprünge sichtbar; Compiler und Interpreter verbinden Code höherer Sprachen mit diesen Operationen. Wenn du den Erstellungsprozess verfolgst, erkennst du, warum sich eine Quelldatei von einer ausführbaren Datei unterscheidet, warum Bibliotheken wichtig sind und warum Software für eine andere Plattform möglicherweise neu erstellt werden muss oder eine passende Laufzeitumgebung benötigt.

3.1 Die Befehle lesen, die ein Prozessor ausführt

Maschinencode besteht aus Binärbefehlen für eine bestimmte Prozessorart. Die Assemblersprache schreibt diese Befehle mit lesbaren Namen. Beide beschreiben Operationen viel näher an der Hardware als eine höhere Programmiersprache wie Python oder C.

Operationen und Operanden

Ein Befehl enthält einen Operationscode, der angibt, was zu tun ist, und gewöhnlich einen oder mehrere Operanden, die angeben, was zu verwenden ist. Ein Operand kann ein Register oder eine Speicheradresse bezeichnen oder direkt einen Wert liefern. Seine Bedeutung ergibt sich aus dem festgelegten Format des Befehls.

Betrachte eine 8-Bit-Lehrkodierung. Die ersten vier Bits enthalten einen Operationscode; die letzten vier enthalten eine Adresse. Ist LOAD gleich 0001, wird aus LOAD 10 der Wert 0001 1010, weil dezimal 10 binär 1010 ist. Vier Operationscodebits erlauben 24=16 Operationscodes. Vier Adressbits bezeichnen die Speicherstellen 0 bis 15. Diese Kodierung veranschaulicht ein begrenztes Format; die anderen Ablaufverfolgungen der Lehrmaschine nutzen ausgeschriebene Befehle mit größeren Adressen.

Eine Befehlssatzarchitektur (ISA) definiert die Befehle, Kodierungen und Register, die ein Prozessor bietet. x86-64, ARM und RISC-V sind Beispiele. Die A64-Befehle von ARM sind 32 Bit lang; x86-64-Befehle umfassen 1 bis 15 Bytes. Die Wortgröße eines 64-Bit-Prozessors bestimmt nicht die Länge jedes Befehls.

Eine lesbare Schleife

Ein Assembler wandelt mnemonische Befehlsnamen und Marken der Assemblersprache in Maschinencode für eine ISA um. Zu den wichtigen Befehlsgruppen gehören Datenübertragung, Arithmetik und Logik, Kontrollfluss sowie System- oder Ein-/Ausgabeoperationen.

Dieses Akkumulatorprogramm zählt von 3 herunter. SUB 21 subtrahiert den Inhalt von Adresse 21. JUMPZ springt, wenn der ACC null ist.

0  LOAD 20
1  SUB 21
2  STORE 20
3  JUMPZ 5
4  JUMP 0
5  HALT

20 holds 3; 21 holds 1.

Im ersten Durchlauf liest LOAD den Wert 3, SUB hinterlässt 2 und STORE speichert 2. Der Nulltest fällt negativ aus, sodass JUMP 0 einen weiteren Durchlauf startet. Der zweite Durchlauf speichert 1 und springt zurück. Der dritte speichert 0, sodass JUMPZ 5 zu HALT führt.

Die ersten beiden Durchläufe nutzen jeweils fünf Befehle. Der letzte nutzt vier vor HALT, das ebenfalls als Befehl zählt: 5+5+4+1=15. Wer nur die sechs geschriebenen Zeilen zählt, übersieht wiederholte Ausführungen.

Eine Quellanweisung, mehrere Befehle

Eine Anweisung in einer höheren Sprache wie total = price + tax kann zu Operationen werden, die einen Wert laden, einen weiteren addieren und das Ergebnis speichern. Höhere Programmiersprachen drücken Variablen, Entscheidungen, Schleifen und Funktionen aus, ohne jedes Register zu benennen. Assemblersprache bildet gewöhnlich jeden geschriebenen Befehl auf einen Maschinenbefehl ab und hängt eng von ihrer ISA ab.

Maschinencode für x86-64 kann nicht nativ als ARM-Code ausgeführt werden. Der Quellcode kann für ARM neu kompiliert werden, oder eine Übersetzungs- oder Emulationsschicht kann den Unterschied behandeln.

RISC und CISC

RISC-Bauweisen wie ARM und RISC-V bevorzugen einfache, regelmäßige Befehle. Viele nutzen Befehle fester Länge, aber RISC-V kann komprimierte 16-Bit-Formen mit 32-Bit-Standardbefehlen mischen. CISC-Bauweisen wie x86 bieten komplexere Befehle variabler Länge. Moderne x86-Prozessoren zerlegen Befehle in einfachere interne Operationen. Diese Bezeichnungen beschreiben Entwurfsansätze und garantieren nicht, dass eine Maschine schneller ist.

Wichtige Erkenntnisse

  • Ein Operationscode wählt eine Operation; Operanden geben deren Eingaben oder Ziele an.
  • Eine ISA definiert die Maschinencode-Vereinbarung, die ein Prozessor umsetzt.
  • Ein Assembler übersetzt lesbare mnemonische Befehlsnamen in Maschinencode.
  • Schleifen führen manche Befehle wiederholt aus, sodass sich Ausführungszahlen von Zeilenzahlen unterscheiden.
  • Programme in höheren Sprachen benötigen eine Übersetzung oder einen in Maschinencode implementierten Interpreter.
  • RISC und CISC beschreiben Befehlssatzarten, bei denen es Ausnahmen von einfachen Längenregeln gibt.

3.2 Vom Quellcode zum laufenden Programm

Quellcode ist lesbarer Programmtext. Ein Prozessor führt Maschinenbefehle aus, daher muss ein Werkzeug die Lücke überbrücken. Kompilieren und Interpretieren beschreiben Wege dazu; viele tatsächliche Implementierungen verbinden beide.

Die Übersetzungswerkzeuge
WerkzeugSeine Arbeit
AssemblerÜbersetzt Assemblersprache in Maschinencode
CompilerÜbersetzt Code in eine andere Form, oft Maschinencode oder Bytecode
InterpreterFührt die Operationen eines Programms während dessen Laufzeit aus

Die meisten Compiler arbeiten, bevor ein Programm startet. Ein Just-in-time-Compiler (JIT-Compiler) arbeitet während der Ausführung. Ein Interpreter ist selbst ein Maschinencodeprogramm: Die CPU führt den Interpreter aus, der die Operationen des Quellprogramms ausführt.

Die Erstellung eines C-Programms verfolgen

Der Befehl clang hello.c -o hello erstellt aus hello.c eine ausführbare Datei namens hello. Ein Build-Werkzeug wie make kann die Compilerbefehle für die programmierende Person zusammenstellen. Die Hauptphasen sind:

  1. Vorverarbeitung: Direktiven wie #include <stdio.h> verarbeiten und dabei Headerdeklarationen in den Quellcode übernehmen.
  2. Kompilieren: Den C-Code in Operationen auf Assemblerebene übersetzen.
  3. Assemblieren: Diese Operationen als Maschinencode in Objektdateien kodieren.
  4. Binden: Objektcode und Bibliotheksverweise verbinden, um eine ausführbare Datei zu erzeugen.

Header beschreiben Bibliotheksschnittstellen; das Einbinden eines Headers kopiert für sich genommen nicht die kompilierte Bibliotheksimplementierung in das Programm. Das Binden stellt die Verbindung zu diesem Code her. Statisches Binden kopiert benötigten Bibliothekscode in die ausführbare Datei. Dynamisches Binden vermerkt Abhängigkeiten von gemeinsam genutzten Bibliotheken, die bei Bedarf geladen und verbunden werden.

Die ausführbare Datei ist auf eine ISA und ein Betriebssystemformat ausgerichtet. Für einen ARM-Mac und einen x86-64-Windows-Computer sind daher getrennte native Erstellungsvorgänge nötig. Auch nach einer Änderung des Quellcodes muss eine kompilierte ausführbare Datei neu erstellt werden, bevor die Änderung wirksam wird.

Fehler treten in verschiedenen Phasen auf

Ein Compiler kann Syntaxfehler melden, etwa ein fehlendes Semikolon in C, und Typfehler, sofern die Sprache Typen prüft. Eine erfolgreiche Kompilierung belegt nicht, dass das Programm das richtige Problem löst. Ein logischer Fehler erzeugt ein falsches Ergebnis. Ein Laufzeitfehler tritt während der Programmausführung auf, etwa bei einer Division durch einen Eingabewert, der sich als null erweist.

Ein einfacher Interpreter erreicht einen Fehler möglicherweise erst, nachdem frühere Anweisungen ausgeführt wurden. Python prüft zuerst die Syntax einer ganzen Datei, aber ein nicht definierter Name kann trotzdem erst dann einen Fehler auslösen, wenn die Ausführung ihn erreicht. Die Übersetzungsmethode allein verrät nicht, wann jede Art von Fehler gefunden wird.

Bytecode und virtuelle Maschinen

Java kompiliert Quellcode in Bytecode, also Befehle für die Java Virtual Machine (JVM). Jede unterstützte Plattform stellt ihre eigene JVM bereit. Sie kann Bytecode interpretieren und häufig genutzte Abschnitte per JIT-Kompilierung in den Maschinencode der lokalen CPU übersetzen. Der Bytecode bleibt portabel, weil die plattformspezifische JVM die Hardwareunterschiede behandelt.

Auch CPython kompiliert Python in Bytecode und führt ihn mit einer virtuellen Maschine aus. PyPy nutzt einen JIT-Compiler, und JavaScript-Engines im Browser nutzen ebenfalls JIT-Kompilierung. „Kompiliert“ und „interpretiert“ beschreiben Implementierungen, keine dauerhaften Eigenschaften einer Sprache.

Im Voraus kompilierter nativer Code vermeidet gewöhnlich wiederholte Interpretationsarbeit. Die Interpretation macht den Ablauf aus Bearbeiten und Ausführen bequem, während Bytecode und JIT Portabilität mit Laufzeitoptimierung verbinden. Auf jedem Weg folgt die CPU letztlich Maschinenbefehlen, und das Betriebssystem lädt den benötigten ausführbaren Code in den Speicher.

Wichtige Erkenntnisse

  • Compiler übersetzen Code; Interpreter führen Operationen während der Laufzeit aus.
  • Die Erstellung eines C-Programms umfasst Vorverarbeitung, Kompilierung, Assemblierung und Binden.
  • Statisches Binden schließt Bibliothekscode ein; dynamisches Binden vermerkt Abhängigkeiten von gemeinsam genutzten Bibliotheken.
  • Die Kompilierung kann Syntaxfehler finden, während logische Fehler und Laufzeitfehler bestehen bleiben.
  • Bytecode wird über eine plattformspezifische virtuelle Maschine ausgeführt.
  • JIT-Kompilierung übersetzt während der Ausführung; Sprachen können unterschiedliche Implementierungen haben.
  • Native ausführbare Dateien hängen sowohl von einer ISA als auch von einem Betriebssystemformat ab.
4

Hauptspeicher, Sekundärspeicher und schnelle Kopien

Der Ort, an dem ein Computer Daten aufbewahrt, beeinflusst sowohl, ob sie einen Stromausfall überstehen, als auch, wie schnell sie genutzt werden können. Vergleiche den RAM als Arbeitsspeicher mit dauerhaften Laufwerken und verfolge dann die Hierarchie von Registern bis zu Archiven. Die Wahl des Speichers hängt neben der Kapazität auch von den Zugriffsmustern ab. Die Zwischenspeicherung erklärt, wie ein kleiner, schneller Speicher viele langsame Zugriffe ersparen kann, und ein gewichteter Durchschnitt zeigt, wie stark sich Fehltreffer auf das Ergebnis auswirken.

4.1 Arbeitsspeicher und seine Adressen

Der Hauptspeicher enthält die Befehle und Daten, die der CPU aktuell zur Verfügung stehen. Bei einer gewöhnlichen Anwendung auf einer SSD lädt das Betriebssystem zunächst den benötigten Code und die benötigten Daten in den RAM. Die CPU holt dann Befehle über ihr Speicher- und Cachesystem.

RAM, DRAM und SRAM

RAM bezeichnet einen Speicher mit wahlfreiem Zugriff: Eine Speicherstelle kann erreicht werden, ohne alle vorherigen Stellen zu durchlaufen. Gewöhnlicher RAM als Arbeitsspeicher ist flüchtig, sodass sein Inhalt ohne Strom verloren geht. Beim Speichern eines Dokuments werden seine Daten auf nichtflüchtigen Speicher kopiert.

Der Hauptspeicher nutzt DRAM, der Bits als Ladung in kleinen Kondensatoren speichert. Die Ladung entweicht, daher müssen die Zellen aufgefrischt werden, üblicherweise innerhalb eines Auffrischungsintervalls von 64 ms. SRAM nutzt Transistorschaltungen nach Art eines Latches, die ihren Zustand behalten, solange Strom anliegt. Er benötigt keine Auffrischung, braucht aber mehr Platz und kostet pro Bit mehr. Seine Geschwindigkeit eignet sich für Prozessorcaches.

ArtSpeichert ein Bit mithilfe vonTypische AufgabeBehält Inhalt ohne Strom?
DRAMLadung in einem KondensatorHauptarbeitsspeicherNein
SRAMEiner Schaltung nach Art eines LatchesCPU-CacheNein
Firmware-FlashspeicherEingeschlossener LadungStartbefehleJa

ROM oder Festwertspeicher ist nichtflüchtiger Speicher, der mit festen Befehlen wie Firmware verbunden ist. Moderne UEFI- oder BIOS-Firmware liegt gewöhnlich in aktualisierbarem Flashspeicher. Die beworbene Dateikapazität eines Telefons ist Flashspeicher, auch wenn eine Beschreibung sie umgangssprachlich „ROM“ nennt; das Telefon schreibt dort regelmäßig Dateien.

Ein Byte hat eine Adresse

In byteadressierbarem Speicher bezeichnet jede Adresse ein Byte. Eine 4 Byte große Ganzzahl, die an der dezimalen Adresse 1000 beginnt, belegt die Speicherstellen 1000, 1001, 1002 und 1003. Die nächste ungenutzte Stelle ist 1004. Adressen werden oft hexadezimal geschrieben, etwa 0x7FFE0010, weil die Hexadezimaldarstellung Bitmuster kompakt darstellt.

Die Adresse bezeichnet, wo Bytes zu finden sind. Die Zahl zu lesen, die als Adresse geschrieben ist, ist etwas anderes, als den an dieser Adresse gespeicherten Wert zu lesen.

Kapazitätseinheiten nutzen zwei Systeme

Ein Byte enthält 8 Bits. Ein kleines b bedeutet Bits; ein großes B bedeutet Bytes.

Dezimale EinheitBytesBinäre EinheitBytes
kB1.000KiB1.024
MB1.000.000MiB1.048.576
GB1.000.000.000GiB1.073.741.824
TB1.000.000.000.000--

Ein als 1 TB verkauftes Laufwerk enthält 1012 Bytes. In GiB beträgt die Anzahl:

1012230≈931 GiB

Manche Betriebssystemanzeigen bezeichnen diese binäre Anzahl als „GB“. Die andere Zahl ergibt sich aus der Größe der Einheit; sie ist kein Beleg für fehlenden Speicherplatz.

Kapazität unterscheidet sich von Prozessorgeschwindigkeit

Mehr RAM ermöglicht, mehr laufende Programme und Daten gleichzeitig bereitzuhalten. Überschreiten die Arbeitsdaten den verfügbaren RAM, kann das Betriebssystem Speicherseiten auf den Sekundärspeicher verschieben, wodurch der Zugriff langsamer wird. Zusätzlicher RAM hilft bei diesem Mangel, erhöht aber nicht die Taktfrequenz der CPU. Das Löschen gespeicherter Dateien gibt Platz auf dem Sekundärspeicher frei. Das Schließen nicht benötigter Programme oder Tabs kann RAM freigeben.

Wichtige Erkenntnisse

  • RAM als Arbeitsspeicher ist flüchtig; beim Speichern werden Daten auf nichtflüchtigen Speicher übertragen.
  • DRAM muss aufgefrischt werden; SRAM nutzt Latch-Schaltungen und eignet sich für schnelle Caches.
  • Firmware bleibt ohne Strom erhalten und kann in aktualisierbarem Flashspeicher liegen.
  • Jede Adresse in byteadressierbarem Speicher bezeichnet ein Byte.
  • Dezimales GB und binäres GiB umfassen unterschiedlich viele Bytes.

4.2 Den passenden Speicher für die Aufgabe wählen

Sekundärspeicher bewahrt Programme und Dateien ohne Strom auf. Im Vergleich zu RAM bietet er mehr Kapazität zu geringeren Kosten pro Byte, aber langsameren Zugriff. Die verschiedenen Speichertechnologien unterscheiden sich in Geschwindigkeit, Kosten, Transportfähigkeit und Haltbarkeit.

Magnetfestplatten und Solid-State-Drives

Ein Festplattenlaufwerk (HDD) speichert magnetische Muster auf rotierenden Scheiben. Ein beweglicher Kopf sucht die richtige Spur und wartet dann, bis sich der gewünschte Teil der Scheibe unter ihn dreht. Beide Bewegungen verlängern die Zugriffszeit.

Bei 7.200 Umdrehungen pro Minute dauert eine Umdrehung:

607.200 s≈8,3 ms

Die durchschnittliche Wartezeit auf die Drehung beträgt eine halbe Umdrehung, etwa 4,2 ms. Das ist nur der Anteil der Drehung, nicht die vollständige Lesezeit; auch das Suchen und Übertragen benötigt Zeit. Bewegliche Teile machen eine laufende HDD zudem anfällig für Stöße.

Eine SSD speichert Ladung in Flashzellen und hat keine beweglichen Teile. Kleine Lesezugriffe an zufälligen Positionen dauern einige zehn Mikrosekunden statt der für HDD-Zugriffe typischen Millisekunden. SSDs sind leise, stoßfest und eignen sich für tragbare Computer. HDDs bieten für große Sammlungen im Allgemeinen geringere Kosten pro Terabyte.

Flashzellen vertragen nur eine begrenzte Anzahl von Lösch- und Schreibzyklen. Der Controller nutzt Wear-Leveling, um Schreibvorgänge auf die Zellen zu verteilen. Auch USB-Sticks, Speicherkarten und Telefonspeicher nutzen Flashtechnologie, wobei Controller und Schnittstelle ihre Leistung beeinflussen.

Optische Discs und Magnetband
MediumWie es Daten speichert oder liestGeeigneter Einsatz
CD, DVD, Blu-rayEin Laser liest Markierungen auf einer reflektierenden SchichtMedien verbreiten oder ein Disc-Archiv aufbewahren
MagnetbandDaten folgen einer Reihenfolge auf einem langen BandGroße Sicherungskopien und Archive

Typische Kapazitäten sind etwa 700 MB für eine CD, 4,7 GB für eine einschichtige DVD und 25 GB für eine einschichtige Blu-ray-Disc. Optische Medien sind transportabel, aber langsam im Vergleich zu modernen Laufwerken.

Magnetband bietet geringe Kosten für große Archive. Sein sequenzieller Zugriff bedeutet, dass das Laufwerk spulen muss, um eine entfernte Datei zu erreichen. Festplatten und SSDs bieten direkten Zugriff und erreichen eine ausgewählte Stelle, ohne alle vorherigen Daten zu durchlaufen. Magnetband eignet sich daher besser für geplante umfangreiche Sicherungskopien als für eine Anwendung, die wiederholt verstreute kleine Dateien öffnet.

Cloudspeicher ist ein Dienst

Cloudspeicher bewahrt Dateien auf Geräten in den Rechenzentren eines Anbieters auf. Die zugrunde liegenden Medien sind weiterhin SSDs, HDDs oder Magnetband. Eine Netzwerkverbindung bringt zusätzliche Zugriffs- und Übertragungsverzögerungen mit sich. Der Dienst bietet Teilen, Fernzugriff und Kopien an einem anderen Ort, verbunden mit laufenden Gebühren und einer Abhängigkeit von den Zugriffskontrollen und der Zuverlässigkeit des Anbieters.

Berücksichtige den begrenzenden Faktor

Die Zugriffszeit ist die Verzögerung, bevor Daten einzutreffen beginnen. Die Übertragungsrate misst, wie schnell sie danach fließen. Beim Lesen vieler kleiner Dateien fällt die Zugriffsverzögerung wiederholt an; bei einer großen zusammenhängenden Datei steht die Übertragungsrate stärker im Vordergrund.

Eine SSD eignet sich für die aktiven Programme eines Laptops. HDDs eignen sich für einen Server, der 20 TB Video kostengünstig speichert. Magnetband oder ein Cloudarchiv eignet sich für langfristig aufbewahrte Unterlagen eines Unternehmens, während ein USB-Stick für den Transport von Dateien praktisch ist. Wähle anhand von Kapazität, Zugriffszeit, Übertragungsrate, Kosten pro Byte, Stromverbrauch, Zuverlässigkeit und Transportfähigkeit. Der Aufbau aus Chips macht eine SSD nicht zum RAM als Arbeitsspeicher: Sie bleibt ein nichtflüchtiger Speicher hinter einem Speichercontroller.

Wichtige Erkenntnisse

  • Der HDD-Zugriff umfasst Such- und Drehverzögerung; SSDs haben keine beweglichen Teile.
  • Wear-Leveling verteilt Flash-Schreibvorgänge auf die Zellen.
  • Magnetband bietet sequenziellen Zugriff und eignet sich für große Archive.
  • Cloudspeicher nutzt physischen Speicher, der über ein Netzwerk erreichbar ist.
  • Zugriffszeit und Übertragungsrate messen unterschiedliche Teile eines Lesevorgangs.
  • Wähle Speicher nach dem Zugriffsmuster der Aufgabe und den praktischen Anforderungen.

4.3 Nützliche Daten nahe an der CPU halten

Ein Computer kombiniert mehrere Speicherarten, weil schneller Zugriff, große Kapazität und geringe Kosten nicht in einer einzigen Technologie zusammenkommen. Die Speicherhierarchie platziert eine kleine Menge sehr schnellen Speichers nahe an der CPU und größere, langsamere Speicher weiter entfernt.

Die Ebenen der Hierarchie

Vom schnellsten und kleinsten zum langsameren und größeren Speicher sind die Hauptebenen Register, L1-/L2-/L3-Cache, RAM, SSD, HDD und Archivspeicher. Die Kosten pro Byte sinken im Allgemeinen mit wachsender Kapazität.

EbeneBeispielhafte ZugriffszeitTypische Größenordnung
RegisterBruchteil einer NanosekundeEinige Kilobyte oder weniger
L1-CacheEtwa 1 nsEinige zehn bis einige hundert Kilobyte pro Kern
L2-CacheEinige nsBis zu einigen Megabyte
L3-CacheEtwa 10–20 nsEinige bis einige zehn Megabyte
RAMEtwa 50–100 nsEinige bis einige zehn Gigabyte
SSDEtwa 20–100 µsEinige hundert Gigabyte bis Terabyte
HDDEtwa 5–10 msMehrere Terabyte

Diese Zeiten zeigen Größenordnungen und sind keine feste Angabe für jedes Gerät. Nimmst du 1 ns für L1, 100 ns für RAM und 10 ms für eine Festplatte, benötigt RAM etwa 100-mal so lange wie L1 und die Festplatte etwa 100.000-mal so lange wie RAM.

Treffer, Fehltreffer und nützliche Kopien

Ein CPU-Cache nutzt SRAM, um aus dem Hauptspeicher kopierte Blöcke aufzubewahren. Die Hardware durchsucht die Cacheebenen, bevor sie Daten aus dem RAM holt. Bei einem Treffer wird der angeforderte Inhalt im Cache gefunden. Ein Fehltreffer macht das Holen aus einer langsameren Ebene nötig und kann eine Kopie in den Cache bringen.

Die Trefferquote ist die Anzahl der Treffer geteilt durch alle Zugriffe. Bei 950 Treffern in 1.000 Zugriffen beträgt sie 95 %. Ein Fehltreffer bedeutet nicht, dass Daten fehlen oder beschädigt sind; er bedeutet, dass die schnelle Kopie nicht verfügbar war.

Warum vergangene Zugriffe künftige Zugriffe vorhersagen lassen

Zeitliche Lokalität bedeutet, dass kürzlich genutzte Inhalte wahrscheinlich bald erneut genutzt werden. Eine Schleife liest wiederholt eine Zählvariable und ihre eigenen Befehle. Räumliche Lokalität bedeutet, dass benachbarte Adressen wahrscheinlich bald genutzt werden. Das Lesen aufeinanderfolgender Listenelemente folgt diesem Muster.

Ein Cache holt eine ganze Cachezeile, gewöhnlich 64 benachbarte Bytes, und nutzt so die räumliche Lokalität. Mehrere Ebenen gleichen Kapazität und Suchzeit aus: Die Suche in einem einzigen riesigen Cache würde länger dauern.

Die durchschnittliche Verzögerung berechnen

Angenommen, eine Cacheprüfung dauert 1 ns und ein RAM-Zugriff 100 ns. Ein Fehltreffer kostet beides und dauert daher 101 ns. Bei einer Trefferquote von 95 %:

0,95×1+0,05×101=6 ns

Bei einer Trefferquote von 80 %:

0,80×1+0,20×101=21 ns

Der zweite Durchschnitt ist 21÷6=3,5-mal so groß. Gewichte die vollständigen Kosten eines Treffers und eines Fehltreffers danach, wie häufig sie jeweils auftreten. Würdest du die Cacheprüfung bei einem Fehltreffer vergessen, änderte sich die Antwort dieses Modells.

Zwischenspeicherung außerhalb des Prozessors

Das Betriebssystem hält Dateiinhalte im RAM zwischen. Ein Browser speichert heruntergeladene Webdateien auf dem Sekundärspeicher zwischen, und Content Delivery Networks halten Kopien nahe bei den Nutzern. Alle verwenden nahe Kopien erneut, um wiederholtes langsames Abrufen zu vermeiden. Das Leeren eines Browsercaches entfernt Browserdateien; es leert nicht die Cache-Schaltungen der CPU. CPU-Caches enthalten kleine Speicherblöcke, keine geordnete Sammlung ganzer Dokumente.

Wichtige Erkenntnisse

  • Die Hierarchie wägt Geschwindigkeit und Kosten pro Byte gegen Kapazität ab.
  • Bei einem Cache-Treffer wird eine schnelle Kopie gefunden; bei einem Fehltreffer wird aus einer langsameren Ebene geholt.
  • Zeitliche Lokalität nutzt Inhalte erneut; räumliche Lokalität nutzt benachbarte Adressen.
  • Die durchschnittliche Zugriffszeit gewichtet die vollständigen Kosten von Treffern und Fehltreffern.
  • Browser-, Datei- und CPU-Caches nutzen dieselbe Grundidee auf verschiedenen Ebenen.
5

Wie das Betriebssystem die Bestandteile zusammenarbeiten lässt

Das Öffnen einer Anwendung hängt von mehr als einem Prozessor und einer Programmdatei ab. Das Betriebssystem weist Speicher zu, teilt Prozessorzeit auf, prüft Berechtigungen und bietet Datei- und Gerätedienste an. Verfolge den Start von der Firmware bis zum Betriebssystemkern und begleite dann einen laufenden Editor durch seine Speicherbereiche, Eingabeereignisse und eine Speicheranforderung. Virtueller Speicher verbindet die Adresssicht jedes Prozesses mit dem physischen RAM, den er nutzen darf.

5.1 Die alltäglichen Aufgaben des Betriebssystems

Ein Betriebssystem verwaltet Hardware und stellt Anwendungen Dienste bereit. Windows, macOS und Linux dienen Personal Computern und Servern; Android und iOS dienen mobilen Geräten. Der sichtbare Desktop ist nur ein Teil dieser Arbeit.

Ressourcen verwalten und Hardwaredetails verbergen

Als Ressourcenverwalter weist das Betriebssystem Programmen und Nutzern Prozessorzeit, Arbeitsspeicher, Dateien und Geräte zu. Als Abstraktion stellt es einfachere Operationen bereit, die Hardwaredetails verbergen. Ein Texteditor kann „Öffne die Datei report.txt“ anfordern, ohne Festplattenspuren oder Gerätebefehle auszuwählen.

FunktionWas das Betriebssystem tut
ProzessverwaltungStartet, plant und beendet laufende Programme
SpeicherverwaltungWeist Speicher zu und setzt die Trennung durch
DateiverwaltungOrganisiert Dateien, Ordner und gespeicherte Daten
GeräteverwaltungKommuniziert über Treiber mit Geräten
SicherheitSetzt Konten und Berechtigungen durch
NetzwerkfunktionenStellt Dienste zum Datenaustausch bereit

Über die Benutzeroberfläche können Menschen diese Arbeit anfordern. Eine grafische Benutzeroberfläche (GUI) nutzt Fenster, Symbole, Menüs und Berührung oder einen Zeiger. Eine Kommandozeilenschnittstelle (CLI) nimmt eingetippte Befehle entgegen. Befehle wie ls unter Linux und macOS oder dir unter Windows listen Dateien auf; Skripte können Befehle für wiederkehrende Aufgaben kombinieren.

Der Betriebssystemkern steuert privilegierte Operationen

Der Betriebssystemkern ist der Kern des Betriebssystems, der für die Hardwaresteuerung und geschützte Ressourcen zuständig ist. Anwendungen laufen im Benutzermodus mit eingeschränkten Rechten. Code des Betriebssystemkerns läuft im Kernelmodus mit weitergehenden Rechten. Eine Anwendung fordert einen geschützten Dienst über einen Systemaufruf an, etwa indem sie das Betriebssystem bittet, eine Datei zu lesen.

Der Betriebssystemkern prüft Berechtigungen und führt die erlaubte Aktion aus. Eine fehlerhafte Anwendung kann nicht einfach mit einem normalen Befehl im Benutzermodus die Kontrolle über jedes Gerät übernehmen oder den geschützten Speicher eines anderen Prozesses lesen.

Prozessorzeit aufteilen

Der Scheduler entscheidet, welches bereite Programm Prozessorzeit erhält. Kurze Zeitabschnitte auf einem einzelnen Verarbeitungsstrom lassen Musikwiedergabe und Dokumentbearbeitung gleichzeitig erscheinen. Mehrere Kerne ermöglichen außerdem, Arbeit tatsächlich zur selben Zeit auszuführen. Manche CPUs unterstützen Hardware-Multithreading innerhalb eines Kerns, aber die zeitliche Aufteilung bleibt nötig, wenn mehr Arbeit bereitsteht, als die Hardware gleichzeitig ausführen kann.

Dateien benennen und Geräte mit Treibern versehen

Ein Dateisystem verwaltet Dateiinhalte und Metadaten wie Größe, Datumsangaben und Berechtigungen. Ordner bilden eine Hierarchie; ein Pfad bezeichnet eine Datei, zum Beispiel /home/sam/notes.txt unter Linux. NTFS, APFS und ext4 sind Beispiele für Dateisysteme.

Beim Löschen einer Datei wird gewöhnlich ihr Verzeichniseintrag entfernt und ihr Speicherplatz zur Wiederverwendung freigegeben. Das unterscheidet sich vom gezielten Überschreiben jedes Bytes. Alte Daten können manchmal wiederherstellbar bleiben, besonders auf HDDs; ein normales Löschen garantiert keine sichere Löschung.

Ein Treiber übersetzt allgemeine Geräteanforderungen in Befehle, die ein Controller versteht. Standardtreiber bedienen viele Tastaturen und USB-Sticks, während manche Geräte einen bestimmten Treiber benötigen.

Software nach ihrer Aufgabe einordnen

Das Betriebssystem, Treiber und Dienstprogramme wie Werkzeuge für Sicherungskopien sind Systemsoftware. Browser, Editoren, Spiele und Tabellenkalkulationen sind Anwendungssoftware. Mobile Systeme legen Wert auf Akkulaufzeit, Berührung und die Trennung von Apps; Server unterstützen Netzwerkdienste. Ein Echtzeitbetriebssystem hält vorgegebene Antwortfristen für Steuerungsaufgaben ein. Sehr einfache eingebettete Geräte können ein Programm ohne vollständiges Betriebssystem ausführen.

Wichtige Erkenntnisse

  • Das Betriebssystem verwaltet gemeinsame Ressourcen und verbirgt Hardwaredetails hinter Diensten.
  • Systemaufrufe fordern Dienste des Betriebssystemkerns aus eingeschränkten Anwendungen im Benutzermodus an.
  • Der Scheduler teilt Prozessorzeit unter bereitstehender Arbeit auf.
  • Dateisysteme verwalten Dateiinhalte, Namen, Pfade und Berechtigungen.
  • Treiber verbinden allgemeine Anforderungen des Betriebssystems mit gerätespezifischen Befehlen.
  • Systemsoftware betreibt und wartet den Computer; Anwendungen erledigen Aufgaben für Nutzer.

5.2 Vom Einschalten zum gespeicherten Dokument

Das Starten eines Computers und das Starten einer Anwendung umfassen unterschiedliche Phasen. Beim Hochfahren übernimmt das Betriebssystem die Kontrolle. Das anschließende Laden einer Anwendung erzeugt einen laufenden Prozess, der Prozessor, Speicher und Dienste des Betriebssystems nutzt.

Mit dauerhaft gespeicherten Befehlen beginnen

Beim Einschalten enthält der RAM als Arbeitsspeicher kein nutzbares laufendes Programm. Die CPU beginnt mit Firmware, die in nichtflüchtigem Speicher liegt. Auf einem modernen PC bereitet die UEFI-Firmware die Hardware vor und führt Startprüfungen aus, die oft Einschaltselbsttest (POST) genannt werden. Sie wählt ein Startgerät aus und startet einen Bootloader. Der Bootloader lädt den Betriebssystemkern in den RAM und übergibt ihm die Kontrolle. Der Betriebssystemkern bereitet Speicherverwaltung, Treiber und Dienste vor, bevor der Anmelde- oder Startbildschirm erscheint.

Eine Programmdatei in einen Prozess verwandeln

Ein Programm besteht aus gespeicherten Befehlen. Ein Prozess ist eine laufende Instanz mit Speicher, Registerzustand und Ressourcen. Getrennte Instanzen eines Editors können getrennte Dokumente enthalten, obwohl sie aus derselben Programmdatei gestartet wurden.

Um eine Anwendung zu starten, prüft das Betriebssystem die ausführbare Datei und die Berechtigung zu ihrer Ausführung, erzeugt einen Adressraum, lädt den zunächst benötigten Code und die benötigten Daten, richtet einen Stapelspeicher ein und legt die Adresse des Startbefehls fest. Weitere Speicherseiten können bei ihrer Verwendung geladen werden. Der Scheduler gibt dem Prozess Zeit auf der CPU, die seine Maschinenbefehle ausführt.

Verschiedene Bereiche enthalten verschiedene Inhalte
BereichInhalt
CodeMaschinenbefehle
DatenGlobale Variablen
HeapWährend der Programmausführung angeforderter Speicher
StapelspeicherAktive Funktionsaufrufe, lokale Werte und Rücksprungadressen

Der Aufruf einer Funktion fügt dem Stapelspeicher Informationen hinzu; bei der Rückkehr wird der Teil dieses Aufrufs freigegeben. Wiederholte Aufrufe ohne Abbruch können den Stapelspeicher erschöpfen und einen Stapelüberlauf verursachen. Ein Speicherleck entsteht, wenn ein Programm nicht mehr benötigten Speicher behält, sodass der weiterhin belegte Speicher wächst. Die bloße Nutzung einer großen Speichermenge reicht nicht aus, um ein Speicherleck festzustellen.

Adressen von physischen Speicherstellen unterscheiden

Virtueller Speicher gibt jedem Prozess einen eigenen Adressraum. Das Betriebssystem und die Speicherverwaltungseinheit (MMU) der CPU bilden virtuelle Adressen in Speicherseiten, oft 4 KiB groß, auf den physischen RAM ab. Zwei Prozesse können 0x1000 für verschiedene physische Speicherstellen nutzen. Zugriffsberechtigungen verhindern unbefugtes Lesen oder Schreiben; das Betriebssystem kann gemeinsam genutzte Seiten auch ausdrücklich erlauben.

Ein verbotener Zugriff löst einen Fehler aus, der den Prozess beenden kann. Unter Linux oder macOS kann ein C-Programm einen „Speicherzugriffsfehler“ melden. Eine virtuelle Adresse bezeichnet eine Stelle in der Zuordnung dieses Prozesses, nicht notwendigerweise ein gleich nummeriertes Byte im RAM.

Bei hohem Speicherbedarf kann das Betriebssystem inaktive Seiten in eine Auslagerungsdatei auf dem Sekundärspeicher verschieben. Das beispielhafte Abrufen einer Seite in 100 µs dauert etwa 1.000-mal so lange wie ein RAM-Zugriff von 100 ns. Wiederholtes Verschieben von Seiten, Seitenflattern genannt, kann die Ausführungszeit beherrschen. Ein geringerer aktiver Speicherbedarf oder zusätzlicher RAM können helfen.

Einen Tastendruck durch die Ebenen verfolgen

Ein Tastaturcontroller signalisiert einen Interrupt. Die Behandlungsroutine und der Treiber des Betriebssystems nehmen das Ereignis entgegen und geben es an den Editorprozess weiter. Der Editor aktualisiert das Dokument in seinem Speicher und fordert die Grafikdienste des Betriebssystems auf, die Anzeige zu aktualisieren. Beim Speichern wird das Dateisystem aufgefordert, das Dokument auf den Sekundärspeicher zu schreiben. Wenn der Prozess endet, nimmt das Betriebssystem seinen Speicher und seine Ressourcen zurück. Gespeicherte Daten bleiben erhalten; Änderungen, die nur im Prozessspeicher liegen, verschwinden.

Wichtige Erkenntnisse

  • Die Firmware startet, bevor der Bootloader den Betriebssystemkern lädt.
  • Ein Prozess ist eine laufende Programminstanz mit eigenem Zustand.
  • Code, Daten, Heap und Stapelspeicher enthalten unterschiedliche Teile eines Prozesses.
  • Virtueller Speicher bildet Prozessadressen auf den RAM ab und setzt Zugriffsberechtigungen durch.
  • Die Speicherauslagerung nutzt Sekundärspeicher für Seiten; häufige Übertragungen können Seitenflattern verursachen.
  • Beim Bearbeiten ändert sich der Arbeitsspeicher; beim Speichern wird das Dokument auf den Sekundärspeicher geschrieben.
  • Das Betriebssystem nimmt die Ressourcen eines Prozesses zurück, wenn dieser endet.

Von-Neumann-Architektur: Beispiele

5 Interaktive Lektionen

1

Verfolge die Wege in einem Computer

13 Schritte
Verbinde das Speicherprogrammprinzip mit Speicherübertragungen und Geräteereignissen.
  1. 1
    EinführungVerfolge eine einfache Aktion

    Am Öffnen eines Fotos sind mehrere Teile beteiligt: Eine Eingabe fordert die Aktion an, der Sekundärspeicher bewahrt die Datei auf, der RAM hält Arbeitsinhalte und der Prozessor folgt Befehlen, um sie anzuzeigen. Befehle teilen sich den Speicher mit Daten, entsprechend der Von-Neumann-Architektur, sodass eine Maschine viele Aufgaben erledigen kann.

    Wir trennen diese Aufgaben, verfolgen eine Speicherübertragung und sehen, wie Geräte Aufmerksamkeit erhalten (durch einen Interrupt), ohne die CPU warten zu lassen. Diese Aufgaben beschreiben auch ein Telefon oder einen Controller in einem größeren Gerät.

  2. 2
    ErklärungFinde die arbeitenden Bestandteile

    Die CPU führt Befehle aus. RAM enthält die aktuellen Befehle und Daten; eine SSD oder HDD enthält dauerhaft gespeicherte Dateien. Eingabegeräte liefern Daten und Ausgabegeräte stellen Ergebnisse dar oder setzen sie in Aktionen um.

    Das Mainboard verbindet diese Teile. Ein Telefon vereint viele Funktionen in einem System-on-a-Chip. Das gesamte Computergehäuse ist nicht die CPU: Der Prozessor ist eine Komponente im Inneren des Systems.

  3. 3
    KernaussageProgramme sind Speicherinhalte

    In der Von-Neumann-Architektur enthält ein Hauptspeicher Befehle und Daten. Die CPU holt daraus binäre Befehle, sodass ein neu geladenes Programm derselben Hardware eine andere Aufgabe geben kann.

    Ein Bitmuster hat für den Speicher keine eingebaute Bedeutung. Das Byte 01000001 könnte 65, den ASCII-Buchstaben „A“ oder einen Teil eines Befehls darstellen. Seine Verwendung bestimmt die Deutung.

  4. 4
    HerausforderungWechsle die Aufgabe

    Eine Temperatursteuerung und ein Laptop enthalten beide Prozessoren, Speicher und Ein- und Ausgabe. Warum ist die Steuerung ein eingebettetes System, und was ermöglicht dem Laptop, von der Textbearbeitung zur Audiowiedergabe zu wechseln?

    ---reveal---

    Die Steuerung erfüllt eine bestimmte Aufgabe innerhalb eines anderen Geräts. Der Laptop wechselt Aufgaben, indem er verschiedene gespeicherte Befehle ausführt. Die Aufgaben der Hardware bleiben dieselben, während das Programm die von ihr ausgeführte Arbeit ändert.

  5. 5
    AnalogieWähle einen Briefkasten und dann seinen Inhalt

    Stell dir Speicherstellen als nummerierte Briefkästen vor. Die Adresse wählt einen Briefkasten aus; die Daten sind sein Inhalt. Ein Lesevorgang fordert seinen Inhalt an, und ein Schreibvorgang ersetzt ihn.

    Im klassischen Systembus wählt der Adressbus die Speicherstelle aus, der Datenbus überträgt Inhalte und der Steuerbus überträgt den Lese- oder Schreibbefehl. Eine Änderung des Inhalts ändert niemals die Nummer der Speicherstelle.

  6. 6
    BeispielLies Adresse 200

    Die CPU benötigt den Inhalt der Speicheradresse 200. Sie sendet 200 über den Adressbus und legt einen Lesebefehl auf den Steuerbus.

    Der Speicher findet diese Stelle und legt ihren Inhalt, hier 7, auf den Datenbus. Die CPU empfängt 7 in einem Register. Die Adresse hat die Stelle ausgewählt; die zurückgegebenen Daten liefern den Wert. Es findet kein Schreibvorgang statt, daher bleibt der Inhalt der Speicherstelle 200 bei 7.

  7. 7
    ErklärungZähle Speicherstellen und Übertragungen

    Mit 16 Adressbits hat byteadressierbarer Speicher 65.536 Speicherstellen oder 64 KiB. Ein zusätzliches Adressbit verdoppelt diesen Bereich.

    Die Datenbreite beantwortet eine andere Frage. Ein 64-Bit-Datenweg überträgt 8 Bytes pro Vorgang. Bei einer Milliarde Übertragungen pro Sekunde beträgt seine Bandbreite 8 GB/s. Mehr Adressbits lassen dich mehr Speicherstellen bezeichnen; mehr Datenbits lassen dich mehr Inhalt in einem Vorgang übertragen.

  8. 8
    HerausforderungUnterscheide die beiden Breiten

    Ein byteadressierbares Lehrsystem hat 11 Adressbits und einen 16-Bit-Datenweg. Wie viel Speicher kann es adressieren, und wie viele Bytes werden pro Vorgang übertragen?

    ---reveal---

    Es kann 211=2.048 Bytes oder 2 KiB adressieren. Der Datenweg überträgt 2 Bytes pro Vorgang, weil jedes Byte 8 Bits hat. Die Anzahl der Adressen mit zwei zu multiplizieren, würde fälschlich annehmen, dass jede Adresse zwei Bytes bezeichnet.

  9. 9
    ErklärungWandle zwischen Signalen und Werten um

    Ein Mikrofon liefert Eingabe, und ein Lautsprecher liefert Ausgabe. Schall ändert sich kontinuierlich, während ein Computer digitale Werte speichert. Ein ADC tastet die Eingabe ab und kodiert Messungen als Zahlen; ein DAC wandelt digitale Ausgabewerte in ein analoges Signal um.

    Ein Touchscreen erfüllt zwei Aufgaben: Das Erfassen von Berührungen liefert Eingaben und das Anzeigen eines Bildes Ausgaben. Ein Gerät kann Verarbeitungsschaltungen enthalten und trotzdem nach dieser Aufgabe eingeordnet werden.

  10. 10
    VerbindungController und Treiber arbeiten zusammen

    Ein Controller ist Hardware, die mit einem Gerät kommuniziert. Ein Treiber ist Software, die Anforderungen des Betriebssystems in Befehle für diesen Controller umwandelt.

    Polling fragt wiederholt, ob das Gerät bereit ist. Bei einem Interrupt signalisiert der Controller, wenn Aufmerksamkeit benötigt wird. Bei einem großen Block kann DMA Inhalte zwischen Gerät und RAM übertragen, während die CPU an anderer Stelle arbeitet, und danach den Abschluss signalisieren.

  11. 11
    HerausforderungVermeide ergebnislose Prüfungen

    Ein Scanner sendet ein großes Bild an den RAM. Die CPU richtet die Übertragung ein, setzt eine andere Aufgabe fort und empfängt ein Abschlusssignal. Was tragen DMA und der Interrupt jeweils bei?

    ---reveal---

    DMA überträgt den Bildblock, ohne dass die CPU jedes Byte kopiert. Der Interrupt meldet, dass die Übertragung abgeschlossen ist, damit das Betriebssystem sie behandeln kann. Die CPU richtet die Übertragung weiterhin ein; sie vermeidet lediglich, die gesamte Arbeit des Byte-Transports selbst zu erledigen.

  12. 12
    HerausforderungVerbinde einen Messwert mit einem Ergebnis

    Eine Gewächshaussteuerung liest einen digitalen Temperaturwert in den RAM, berechnet eine Entscheidung und öffnet ein Ventil. Was sind ihre Ein- und Ausgabe, und was muss zwischen Speicher und CPU übertragen werden?

    ---reveal---

    Der Temperaturmesswert ist die Eingabe, und die Betätigung des Ventils ist die Ausgabe. Die CPU benötigt sowohl die gespeicherten Steuerbefehle als auch den Messwert aus dem Speicher. Die Adressierung wählt diese Speicherstellen aus, die Datenübertragung befördert ihre Inhalte und Steuersignale koordinieren den Zugriff.

  13. 13
    ZusammenfassungLies den gesamten Weg

    Bestimme zuerst die Aufgabe: Eingabe, Verarbeitung, Arbeitsspeicher, dauerhafter Speicher oder Ausgabe. Unterscheide dann die ausgewählte Speicherstelle vom übertragenen Inhalt.

    Gespeicherte Befehle sagen der CPU, was sie tun soll; Busse oder moderne Verbindungen übertragen Adressierung, Werte und Befehle. Controller und Treiber binden Geräte an, während Interrupts und DMA ermöglichen, dass langsame oder umfangreiche Gerätearbeit einen schnellen Computer effizient mitnutzt.

2

Baue eine Prozessoroperation auf und verfolge sie

19 Schritte
Arbeite dich von Gatterausgaben über Register zu einem kurzen Programm und Leistungsschätzungen vor.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungMache die Ausführung sichtbar
  2. 2
    ErklärungLies eine Gatterregel
  3. 3
    BeispielErzeuge einen Übertrag
  4. 4
    HerausforderungWerte die Zwischenausgaben aus
  5. 5
    VerbindungHalte ein Ergebnis zwischen Schritten fest
  6. 6
    ErklärungOrdne die Aufgaben des Prozessors zu
  7. 7
    HerausforderungHalte Adresse und Inhalt auseinander
  8. 8
    ErklärungHole den Befehl vor seiner Verwendung
  9. 9
    BeispielErster Befehl: Laden
  10. 10
    BeispielZweiter Befehl: Addieren
  11. 11
    BeispielDritter und vierter Befehl: Speichern und Anhalten
  12. 12
    HerausforderungFühre einen Sprung aus oder überspringe ihn
  13. 13
    KernaussageSetze nach einem Interrupt fort
  14. 14
    BeispielVergleiche eine feste Zykluszahl
  15. 15
    BeispielTeile nur die parallele Arbeit auf
  16. 16
    ErklärungÜberlappe Phasen, nicht Bedeutungen
  17. 17
    HerausforderungSchätze eine neue parallele Aufgabe ab
  18. 18
    HerausforderungErkläre eine ungenutzte schnelle Pipeline
  19. 19
    ZusammenfassungVerbinde Bits, Zustand und Zeit
3

Verfolge ein Programm vom Text bis zur Ausführung

13 Schritte
Lies eine Rückwärtsschleife und vergleiche native Programmerstellung, Interpretation und Bytecode.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungUnterscheide die Formen des Programms
  2. 2
    ErklärungZerlege einen Befehl in Felder
  3. 3
    ErklärungBenenne die Vereinbarung mit der Hardware
  4. 4
    BeispielRichte eine Rückwärtszählung ein
  5. 5
    BeispielZähle die Ausführungen einschließlich des Abschlusses
  6. 6
    HerausforderungÄndere den Startwert und verfolge den Abschluss
  7. 7
    ErklärungErstelle das Programm vor der Ausführung
  8. 8
    VerbindungEntscheide, wo Bibliothekscode liegt
  9. 9
    HerausforderungErkläre eine erfolgreiche Programmerstellung mit falscher Ausgabe
  10. 10
    KernaussageAuch bei der Interpretation läuft Maschinencode
  11. 11
    HerausforderungÜbertrage das Programm auf eine andere CPU
  12. 12
    HerausforderungVerfolge zwei Wege zur selben Hardware
  13. 13
    ZusammenfassungHalte die Aufgaben der Ebenen auseinander
4

Vergleiche Speicher und berechne Cache-Effekte

14 Schritte
Unterscheide dauerhafte Kapazität, Speicherverzögerungen und nützliche schnelle Kopien.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungStelle zwei Fragen zu gespeicherten Daten
  2. 2
    ErklärungUnterscheide Arbeitsinhalte und dauerhafte Inhalte
  3. 3
    BeispielLies die Kapazitätseinheit
  4. 4
    HerausforderungFinde das letzte Byte
  5. 5
    ErklärungUnterscheide Wartezeit und Datenfluss
  6. 6
    BeispielBestimme einen Teil der Festplattenverzögerung
  7. 7
    HerausforderungWähle passendes Speicherverhalten
  8. 8
    ErklärungGehe die Hierarchie hinab
  9. 9
    VerbindungSage die nächsten nützlichen Bytes voraus
  10. 10
    BeispielBerücksichtige beide Teile eines Fehltreffers
  11. 11
    BeispielÄndere die Trefferquote
  12. 12
    HerausforderungBerechne einen neuen Cache-Durchschnitt
  13. 13
    HerausforderungWähle die passende Verbesserung
  14. 14
    ZusammenfassungOrdne die Ressource dem Bedarf zu
5

Verfolge Start, Tastendruck und Speichern

15 Schritte
Sieh, wie Dienste des Betriebssystems, Prozesse und virtueller Speicher Hardware mit einer Anwendung verbinden.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungVerfolge einen Editor durch das System
  2. 2
    ErklärungFordere einen Dienst an
  3. 3
    BeispielTeile Ausführungszeit auf
  4. 4
    HerausforderungErkenne die Grenze des Betriebssystems
  5. 5
    ErklärungBeginne vor dem Betriebssystem
  6. 6
    BeispielErzeuge die laufende Instanz
  7. 7
    ErklärungWeise Speicherbereichen unterschiedliche Aufgaben zu
  8. 8
    AnalogieNutze eine private Adresszuordnung
  9. 9
    HerausforderungHalte gleiche Adressen getrennt
  10. 10
    KernaussageSekundärspeicher kann Hauptspeicher langsam ergänzen
  11. 11
    BeispielLeite das Tastenereignis weiter
  12. 12
    BeispielSpeichere über die Lebensdauer des Prozesses hinaus
  13. 13
    HerausforderungUnterscheide zwei Arten der Verlangsamung
  14. 14
    HerausforderungVerbinde Prozessschutz und Speichern
  15. 15
    ZusammenfassungVerfolge die Dienste in ihrer Reihenfolge

Von-Neumann-Architektur: Übungsaufgaben

50 Übungsfragen in 5 Sets

Set 1: Bestandteile, Befehle und alltägliche Computerarbeit10 Übungsfragen

Frage 1 von 10

Ein Thermostat liest eine Temperatur und schaltet eine Heizung ein. Was macht es zu einem eingebetteten Computersystem?
  1. Es speichert seine Messwerte nur, solange Strom anliegt.
  2. Es führt eine bestimmte Steuerungsaufgabe in einem größeren Gerät aus.
  3. Es verbindet ein Eingabegerät direkt mit einem Ausgabegerät.
  4. Es führt dieselben Allzweckanwendungen wie ein Laptop aus.
Antwort zeigenAntwort ausblenden
Antwort: B
Ein eingebettetes System ist ein Computer, dem eine bestimmte Aufgabe in einem anderen Gerät zugewiesen ist. Das Thermostat verarbeitet Sensoreingaben anhand von Befehlen und steuert eine Ausgabe. Sowohl Eingabe als auch Ausgabe gehören zur Datenverarbeitung, unterscheiden aber allein ein eingebettetes System nicht von einem Allzweckcomputer.

Frage 2 von 10

Die CPU schreibt den Wert 18 an die Speicheradresse 92. Was gehört auf den Adressbus?
  1. 18
  2. 110
  3. Der Schreibbefehl
  4. 92
Antwort zeigenAntwort ausblenden
Antwort: D
Der Adressbus wählt die Speicherstelle aus und überträgt daher 92. Der Wert 18 wird über den Datenbus übertragen, ein Schreibbefehl über den Steuerbus. Wer Inhalt und Ziel verwechselt, lässt den Prozessor die falsche Speicherstelle auswählen, selbst wenn der Wert korrekt übertragen wird.

Frage 3 von 10

Eine Maschine liest den Barcode eines Pakets und druckt ein Versandetikett. Wie sind diese beiden Tätigkeiten einzuordnen?
  1. Das Lesen des Barcodes ist Eingabe; das Drucken des Etiketts ist Ausgabe.
  2. Das Lesen des Barcodes ist Ausgabe; das Drucken des Etiketts ist Eingabe.
  3. Das Lesen des Barcodes und das Drucken des Etiketts sind beide Eingabe.
  4. Das Lesen des Barcodes und das Drucken des Etiketts sind beide Ausgabe.
Antwort zeigenAntwort ausblenden
Antwort: A
Der Barcode liefert Daten an den Computer, daher ist sein Lesen eine Eingabe. Das gedruckte Etikett stellt ein Ergebnis dar, daher ist das Drucken eine Ausgabe. Ein Drucker kann Seitendaten intern verarbeiten, aber diese interne Arbeit ändert seine Ausgabeaufgabe in diesem System nicht.

Frage 4 von 10

Zwei Eingabebits sind beide 1. Was gibt ein XOR-Gatter mit zwei Eingängen aus?
  1. 1
  2. 10
  3. 0
  4. 11
Antwort zeigenAntwort ausblenden
Antwort: C
XOR gibt nur dann 1 aus, wenn sich seine beiden Eingaben unterscheiden; gleiche Eingaben von 1 und 1 ergeben daher 0. ODER würde 1 ergeben, weil mindestens eine Eingabe 1 ist. Das Ergebnis 10 gehört zu den kombinierten Summen- und Übertragsausgängen eines Halbaddierers, nicht zum einzelnen Ausgang eines XOR-Gatters.

Frage 5 von 10

Welcher Teil des Prozessors führt eine Subtraktion aus?
  1. Das Steuerwerk
  2. Die ALU
  3. Der Befehlszähler
  4. Das Befehlsregister
Antwort zeigenAntwort ausblenden
Antwort: B
Die arithmetisch-logische Einheit führt Subtraktion und andere arithmetische und logische Operationen aus. Das Steuerwerk dekodiert den Befehl und koordiniert die Signale, die die Subtraktion auslösen, aber die Berechnung übernimmt die ALU. PC und Befehlsregister enthalten Adressen und Befehle, nicht die Subtraktionsschaltung.

Frage 6 von 10

In der Lehrmaschine enthält Adresse 8 den Befehl LOAD 30 und Adresse 30 den Wert 14. Der PC beginnt bei 8. Welche Werte haben PC und ACC nach der Ausführung dieses Befehls?
  1. PC ist 8; ACC ist 14.
  2. PC ist 9; ACC ist 30.
  3. PC ist 9; ACC ist 14.
  4. PC ist 30; ACC ist 14.
Antwort zeigenAntwort ausblenden
Antwort: C
Das Holen setzt den PC von 8 auf 9 weiter, weil der Befehl eine Speicherstelle belegt. Die Ausführung liest dann den Inhalt von Speicherstelle 30, sodass der ACC 14 enthält. Wer 30 in den ACC lädt, verwechselt den Adressoperanden des Befehls mit dem an dieser Adresse gespeicherten Wert.

Frage 7 von 10

Ein Werkzeug wandelt LOAD, ADD und andere mnemonische Assemblerbefehle in Binärbefehle um. Um welche Art von Werkzeug handelt es sich?
  1. Ein Assembler
  2. Ein Interpreter
  3. Ein Linker
  4. Ein Bootloader
Antwort zeigenAntwort ausblenden
Antwort: A
Ein Assembler kodiert Assemblerbefehle als Maschinencode für einen bestimmten Befehlssatz. Ein Linker verbindet nach dem Assemblieren Objektdateien und Bibliotheksverweise; er übersetzt nicht die mnemonischen Namen in Befehle. Ein Bootloader lädt dagegen beim Start ein Betriebssystem in den Speicher.

Frage 8 von 10

Ein 6 Byte großer Wert beginnt bei Byteadresse 800. Wie lautet die Adresse seines letzten Bytes?
  1. 806
  2. 804
  3. 848
  4. 805
Antwort zeigenAntwort ausblenden
Antwort: D
Das erste Byte nutzt Adresse 800, die verbleibenden fünf nutzen also 801 bis 805. Addierst du die vollständige Größe, erhältst du 806, die nächste Adresse nach dem Wert und nicht sein letztes Byte. In byteadressierbarem Speicher ist die letzte Adresse die Startadresse plus Größe minus eins.

Frage 9 von 10

Ein Editor fordert an, eine Datei zu lesen, die der Nutzer öffnen darf. Wie fordert der Editor diesen geschützten Dienst des Betriebssystems an?
  1. Durch Übernahme des Kernelmodus.
  2. Durch einen Systemaufruf.
  3. Durch direkte Laufwerkbefehle.
  4. Durch seine eigene Firmware.
Antwort zeigenAntwort ausblenden
Antwort: B
Ein Systemaufruf gibt dem Editor einen kontrollierten Zugang zu einem Dienst des Betriebssystemkerns. Der Betriebssystemkern prüft den Zugriff und führt den Dateivorgang mithilfe seiner Datei- und Gerätedienste aus. Könnte eine gewöhnliche Anwendung sich selbst in den uneingeschränkten Kernelmodus versetzen, würde das den Schutz dieser Grenze aufheben.

Frage 10 von 10

Zwei getrennte Instanzen eines Programms nutzen die virtuelle Adresse 0x3000 für private Daten. Die eine speichert dort 9 und die andere 22. Warum können beide Werte erhalten bleiben?
  1. Ihre Adressräume können sie auf verschiedene RAM-Stellen abbilden.
  2. Das Betriebssystem hält beide auf einer physischen Seite und wechselt die CPU-Zeit ab.
  3. Jeder Speichervorgang nummeriert die virtuelle Adresse des anderen Prozesses neu.
  4. Beide Prozesse teilen eine Zuordnung, die den neuesten Wert behält.
Antwort zeigenAntwort ausblenden
Antwort: A
Virtuelle Adressen werden innerhalb des Adressraums des jeweiligen Prozesses interpretiert. MMU und Betriebssystem können dieselbe geschriebene Adresse auf verschiedene physische Seiten abbilden, sodass die privaten Werte getrennt bleiben. Die zeitliche Aufteilung allein gewährleistet diese Trennung nicht: Das Sichern und Wiederherstellen von CPU-Registern erzeugt keine getrennten Speicherzuordnungen.
Set 2: Verbindungen, Übersetzung und Speicherwahl10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Ein byteadressierbares Gerät erhöht seine Adressbreite von 12 Bit auf 14 Bit. Um welchen Faktor wächst seine adressierbare Kapazität?
  1. 2
  2. 14/12
  3. 4
  4. 16
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Ein Sensor tastet einen Kanal 24.000-mal pro Sekunde mit 12 Bit pro Abtastwert ab. Wie hoch ist seine Rohdatenrate?
  1. 288.000 Bit/s
  2. 36.000 Bit/s
  3. 2.000 Bit/s
  4. 2.304.000 Bit/s
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

In der Lehrmaschine wird JUMPZ 18 von Adresse 7 geholt, während der ACC 4 ist. Von welcher Adresse wird als Nächstes geholt?
  1. 7
  2. 18
  3. 4
  4. 8
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Eine Aufgabe benötigt auf einer bestimmten CPU mit 3 GHz 9 Milliarden Zyklen. Wie lange dauert sie, wenn du Wartezeiten außerhalb dieser Zyklen vernachlässigst?
  1. 0,33 s
  2. 3 s
  3. 6 s
  4. 27 s
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Ein 8-Bit-Lehrbefehl nutzt vier Operationscodebits, gefolgt von vier Adressbits. ADD ist 0010. Wie wird ADD 13 kodiert?
  1. 0010 1101
  2. 1101 0010
  3. 0010 1011
  4. 0010 0011
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Bei der Erstellung eines C-Programms wurden Objektdateien mit Maschinencode erzeugt. Ihre Bibliotheksverweise müssen noch für eine ausführbare Datei aufgelöst werden. Welche Phase ist nötig?
  1. Vorverarbeitung
  2. Assemblieren
  3. Interpretieren
  4. Binden
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Wie viele Bytes sind in 2 KiB enthalten?
  1. 2.000 Bytes
  2. 256 Bytes
  3. 2.048 Bytes
  4. 16.384 Bytes
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein Archiv liest einmal im Jahr eine vollständige große Sicherungskopie und legt Wert auf geringe Kosten pro Terabyte. Das Spulen zu den Daten ist akzeptabel. Welches Medium passt zu diesen Anforderungen?
  1. SRAM-Cache
  2. Magnetband
  3. DRAM als Hauptspeicher
  4. Optische Disc mit geringer Kapazität
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Eine Cacheprüfung dauert 2 ns, und bei einem Fehltreffer benötigt der RAM-Zugriff zusätzlich 80 ns. Die Trefferquote beträgt 90 %. Wie hoch ist die durchschnittliche Zugriffszeit?
  1. 8,2 ns
  2. 9,8 ns
  3. 82 ns
  4. 10 ns
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Computer spielt Ton ab, während sich ein Editor und ein Browser auf einem Verarbeitungsstrom abwechseln. Welche Funktion des Betriebssystems weist diese Zeitabschnitte zu?
  1. Dateizuordnung
  2. Geräteerkennung
  3. Prozessplanung
  4. Quellcodekompilierung
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 3: Abläufe verfolgen und Leistung vergleichen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Zwei Computer haben dieselbe CPU- und RAM-Geschwindigkeit. Einer nutzt getrennte Befehls- und Datenspeicher mit getrennten Wegen. Welchen gleichzeitigen Zugriff ermöglicht diese Trennung?
  1. Das Holen jedes Befehls eines Programms.
  2. Das Speichern einer Datei und ihr Erhalt ohne Strom.
  3. Das Ausführen zweier beliebiger abhängiger Befehle.
  4. Das Holen eines Befehls und eines Datenwerts.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Was ist die Ausgabe von (A XOR B) AND (NOT C) bei A = 1, B = 1 und C = 0?
  1. 1
  2. 0
  3. 10
  4. 11
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Bei einem Speicherlesevorgang wurde die ausgewählte Adresse in das MAR gelegt. Welches Register empfängt in der Lehrbuch-CPU den vom Speicher zurückgegebenen Inhalt?
  1. MDR
  2. PC
  3. ACC
  4. CIR
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Eine Aufgabe dauert auf einem Kern 18 s: 3 s müssen sequenziell bleiben und 15 s lassen sich gleichmäßig auf fünf Kerne aufteilen. Wie lange würde sie ohne zusätzlichen Parallelisierungsaufwand auf fünf Kernen dauern?
  1. 3,6 s
  2. 3 s
  3. 6 s
  4. 15,6 s
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine Lehrschleife enthält LOAD 40, SUB 41, STORE 40, JUMPZ 5, JUMP 0, HALT an den Adressen 0–5. Speicherstelle 40 beginnt mit 2 und Speicherstelle 41 enthält 1. Wie viele Befehle werden ab PC 0 bis einschließlich HALT ausgeführt?
  1. 10
  2. 6
  3. 9
  4. 11
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine Java-Bytecodedatei läuft auf zwei verschiedenen Prozessorfamilien, jeweils mit einer passenden JVM. Was behandelt die Hardwareunterschiede?
  1. Eine feste Bytecodebreite, die die ISA ersetzt.
  2. Eine in den Bytecode eingebundene native ausführbare Datei.
  3. Das Betriebssystem, das Bytecode als nativen Code ausführt.
  4. Die plattformspezifische JVM-Implementierung.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Zwei Laufwerke haben für eine große Datei dieselbe dauerhafte Übertragungsrate. Eines hat eine viel geringere Zugriffszeit bei wahlfreiem Zugriff. Warum kann es dennoch ein Verzeichnis mit Tausenden winzigen Dateien schneller öffnen?
  1. Winzige Dateien erhöhen die dauerhafte Byterate des Laufwerks.
  2. Bei jedem einzelnen Lesevorgang kann eine Anfangsverzögerung anfallen.
  3. Eine geringere Zugriffszeit überspringt alle Dateimetadaten.
  4. Gleiche dauerhafte Raten ergeben gleiche Öffnungszeiten.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein Programm liest eine Liste in Adressreihenfolge. Nachdem ein Element geholt wurde, enthält der Cache bereits mehrere folgende Elemente. Welche Eigenschaft erklärt diesen Vorteil?
  1. Zeitliche Lokalität
  2. Nichtflüchtigkeit
  3. Räumliche Lokalität
  4. Sequenzielle Ablaufplanung
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Ein Prozess liest acht Speicherseiten. Sechs liegen bereits im RAM und benötigen jeweils 60 ns. Zwei erfordern jeweils zusätzlich ein Abrufen vom Sekundärspeicher in 120 µs, gefolgt von demselben RAM-Zugriff von 60 ns. Wie hoch ist die durchschnittliche Zeit pro Seite, wenn du andere Kosten vernachlässigst?
  1. 30,06 µs
  2. 30 µs
  3. 120,06 µs
  4. 0,03 µs
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Die Lehrmaschine enthält LOAD 50, SUB 51, JUMPZ 4, ADD 51, STORE 52, HALT an den Adressen 0–5. Die Speicherstellen 50 und 51 enthalten beide 6. Was steht beim Anhalten in Speicherstelle 52?
  1. 6
  2. 0
  3. 12
  4. 52
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 4: Das Verhalten von Computersystemen untersuchen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Eine schnellere CPU verbessert eine Aufgabe kaum, die wiederholt auf nicht zwischengespeicherte Daten aus dem Hauptspeicher wartet. Welche Änderung begegnet dem genannten Engpass am direktesten?
  1. Ein Cache, der mehr der wiederverwendeten Daten der Aufgabe aufnimmt.
  2. Ein größeres Speicherlaufwerk mit unveränderter Zugriffsgeschwindigkeit.
  3. Ein neuer Bildschirm mit höherer Pixelauflösung.
  4. Ein höherer Takt bei unveränderter Wartezeit auf den Speicher.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Ein byteadressierbares System hat 18 Adressbits und einen 32-Bit-Datenweg. Wie groß sind seine adressierbare Kapazität und die Anzahl der Bytes pro Übertragung?
  1. 32 KiB und 18 Bytes.
  2. 256 KiB und 32 Bytes.
  3. 256 KiB und 4 Bytes.
  4. 1 MiB und 4 Bytes.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Ein Speichercontroller kopiert nach Einrichtung durch die CPU einen großen Block in den RAM und signalisiert dann den Abschluss. Während der Übertragung arbeitet die CPU an einem anderen Prozess. Welcher Mechanismus erklärt dies?
  1. DMA und wiederholtes CPU-Polling.
  2. Kopieren durch die CPU und ein Interrupt.
  3. Kopieren durch die CPU und wiederholtes Polling.
  4. DMA gefolgt von einem Interrupt.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Ein Halbaddierer mit zwei Eingängen erhält 1 und 1. Was sind seine Summen- und Übertragsausgaben?
  1. Summe 1, Übertrag 0.
  2. Summe 0, Übertrag 1.
  3. Summe 1, Übertrag 1.
  4. Summe 0, Übertrag 0.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine ideale Pipeline hat vier Stufen, die jeweils einen Zyklus dauern. Wie viele Zyklen benötigt sie ohne Stillstände, um ausgehend von einer leeren Pipeline sieben Befehle abzuschließen?
  1. 7
  2. 10
  3. 28
  4. 11
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Eine native ausführbare Datei startet auf ihrer vorgesehenen Plattform, meldet aber, dass eine benötigte gemeinsam genutzte Bibliothek fehlt. Was zeigt das über ihre Bibliotheksbindung?
  1. Sie hängt von Bibliothekscode ab, der zur Laufzeit getrennt bereitgestellt wird.
  2. Ihre Headerdeklarationen müssen beim Start assembliert werden.
  3. Ihr benötigter Bibliothekscode ist vollständig in die ausführbare Datei kopiert.
  4. Ihr Quelltext ist der Code, den die CPU holt.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Ein 500-GB-Laufwerk wird in GiB angezeigt. Welche Anzahl liegt seiner beworbenen dezimalen Kapazität am nächsten?
  1. 500 GiB
  2. 512 GiB
  3. 537 GiB
  4. 466 GiB
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Eine Datei liegt im Cloudspeicher. Wo werden ihre dauerhaften Daten physisch aufbewahrt?
  1. Im RAM des Nutzers bis zum nächsten Ausschalten.
  2. Nur in den Netzwerksignalen auf dem Weg zum Nutzer.
  3. Auf Speichersystemen in den Rechenzentren eines Anbieters.
  4. Im Prozessorcache des Nutzers zwischen Sitzungen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Eine Cacheprüfung dauert 3 ns und ein Fehltreffer erfordert zusätzlich einen RAM-Zugriff von 60 ns. Von 200 Lesezugriffen sind 150 Treffer. Wie hoch ist die durchschnittliche Lesezeit?
  1. 15 ns
  2. 17,25 ns
  3. 63 ns
  4. 18 ns
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Zwei Programme im Benutzermodus teilen sich einen Drucker, aber nur eines darf drucken. Der Drucker wird später möglicherweise durch ein anderes Modell ersetzt. Welche Arbeitsteilung setzt den Zugriffsschutz durch und hält Gerätebefehle aus den Anwendungen heraus?
  1. Der Betriebssystemkern prüft den Zugriff und koordiniert Aufträge; der Treiber übersetzt Gerätebefehle.
  2. Der Treiber prüft Dateinamen; jede Anwendung koordiniert die Druckaufträge direkt.
  3. Der Betriebssystemkern übersetzt modellspezifische Befehle; jede Anwendung erteilt sich selbst Zugriff.
  4. Der Drucker wählt Nutzerberechtigungen; der Scheduler übersetzt die Druckerbefehle.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 5: Befehle, Speicher und Betriebssystem verbinden10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Eine Subtraktion der ALU ergibt null. Ein anschließender bedingter Sprung prüft, ob dieses Ergebnis null war. Welche gespeicherte CPU-Information unterstützt die Entscheidung?
  1. Die Anzahl der Taktimpulse.
  2. Das Nullflag.
  3. Die Adresse des Operanden.
  4. Die Breite des Datenbusses.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Ein Interrupt wird nach Abschluss eines Befehls angenommen, wenn der PC für den nächsten Befehl 26 und der ACC 17 ist. Die Behandlungsroutine nutzt den ACC. Welcher Zustand wird benötigt, um die unterbrochene Berechnung korrekt fortzusetzen?
  1. Die Adresse des abgeschlossenen Befehls und die Register der Behandlungsroutine.
  2. Die Adresse des nächsten Befehls und die Register der Behandlungsroutine.
  3. Der gesicherte PC für den nächsten Befehl und die ursprünglichen Arbeitsregister.
  4. Die Startadresse des Programms und die anfänglichen Registerwerte.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Auf einem Kern dauert eine Aufgabe 16 s. Zwölf Sekunden können parallel ablaufen und vier Sekunden nicht. Welche Verbesserung ergibt sich beim Wechsel von vier auf sechs Kerne, wenn du zusätzlichen Aufwand vernachlässigst?
  1. Die Dauer sinkt von 7 s auf 6 s.
  2. Die Dauer sinkt von 4 s auf 2,67 s.
  3. Die Dauer sinkt von 7 s auf 4,67 s.
  4. Die Dauer sinkt von 12 s auf 8 s.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Eine CPU nutzt ein 8-Bit-Format mit vier Operationscodebits und vier direkten Adressbits. Warum kann dieses unveränderte Format LOAD 19 nicht direkt kodieren?
  1. Die Adresse passt, wenn der Operationscode im selben Format kürzer wird.
  2. Ein LOAD-Operand nutzt immer die vollständige Befehlsbreite.
  3. Eine 64-Bit-Host-CPU erweitert jeden Operanden der Lehrmaschine.
  4. Das direkte Adressfeld kann nur 0 bis 15 bezeichnen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Eine Entwicklerin ändert eine C-Quelldatei und kompiliert sie zu einer aktualisierten Objektdatei, überspringt aber das Binden. Die alte ausführbare Datei wird gestartet, und ihre gemeinsam genutzten Bibliotheken sind unverändert. Welcher Erstellungsschritt steht noch aus, und warum bleibt das alte Verhalten bestehen?
  1. Die Header erneut vorverarbeiten; der Start einer alten ausführbaren Datei übernimmt automatisch neue Objektdateien.
  2. Die alte ausführbare Datei erneut assemblieren; ihre Befehlskodierungen ändern sich beim Bearbeiten des Quellcodes.
  3. Die aktualisierte Objektdatei erneut binden; die alte ausführbare Datei enthält weiterhin die früheren Programmbefehle.
  4. Die gemeinsam genutzten Bibliotheken erneut laden; ihre Befehle ersetzen alle geänderten Befehle der Objektdatei.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Ein Nutzer speichert ein Dokument und fährt den Computer anschließend normal herunter. Welcher Speicherort bewahrt das gespeicherte Dokument ohne Strom auf?
  1. Die SSD oder ein anderer nichtflüchtiger Speicher.
  2. Der Akkumulator der CPU bis zum nächsten Start.
  3. Die DRAM-Zellen, die das geöffnete Dokument enthielten.
  4. Der SRAM-Cache, den der Editorprozess nutzte.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Die Prüfung zweier Caches dauert jeweils 2 ns. Ein Fehltreffer fügt 100 ns hinzu. Der eine erzielt bei 92 % der Lesezugriffe einen Treffer, der andere bei 96 %. Wie verändert sich die durchschnittliche Zugriffszeit?
  1. Sie sinkt von 9,84 ns auf 5,92 ns.
  2. Sie sinkt von 8 ns auf 4 ns.
  3. Sie sinkt von 10 ns aus um 4 %.
  4. Sie sinkt von 10 ns auf 6 ns.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Eine Steuerungsaufgabe benötigt 1 ms für einen festen sequenziellen Schritt und 6 ms für Arbeit, die sich vollständig auf drei Kerne aufteilen lässt. Eine Echtzeitanforderung gibt eine Frist von 4 ms vor. Welche ideale Laufzeit ergibt sich und wird die Frist eingehalten, wenn du zusätzlichen Aufwand vernachlässigst?
  1. 3 ms, die Frist wird eingehalten.
  2. Etwa 2,33 ms, die Frist wird eingehalten.
  3. 4 ms, die Frist wird eingehalten.
  4. 7 ms, die Frist wird verfehlt.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Ein Prozess fordert wiederholt Heapspeicher an, den er später nicht mehr benötigt, und gibt ihn nie frei. Später beherrschen häufige Seitenübertragungen auf den Sekundärspeicher seine Laufzeit. Welche Abfolge erklärt die Verlangsamung?
  1. Ein Stapelüberlauf hält alte Heapblöcke fest und Auslagerung verursacht Seitenflattern.
  2. Ein Speicherleck erhöht den Bedarf und starke Auslagerung verursacht Seitenflattern.
  3. Ein Speicherleck erhöht den Bedarf, aber Seitenübertragungen sind schnelle Cacheprüfungen.
  4. Ein Speicherleck vergrößert gespeicherte Dateien, während der RAM-Bedarf gleich bleibt.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein PC meldet, dass die Startprüfungen der Firmware abgeschlossen sind, erreicht ein Bootloader-Menü und meldet dann ein fehlendes Abbild des Betriebssystemkerns. Nach Aus- und Wiedereinschalten lässt sich die Firmware-Einrichtung weiterhin öffnen. Was erklärt sowohl die abgeschlossene Startphase als auch den verfügbaren Einrichtungsbildschirm?
  1. Der Betriebssystemkern initialisierte seine Treiber, startete aber den Bootloader nicht; die Firmware bleibt im RAM.
  2. Der Bootloader schloss das Laden des Betriebssystemkerns ab; die Firmware-Einrichtung läuft aus dem RAM des vorherigen Prozesses.
  3. Der Betriebssystemkern erreichte vor dem Laden den Benutzermodus; der Bootloader erstellt die Firmware nach dem Ausschalten neu.
  4. Der Bootloader lief, lud aber den Betriebssystemkern nicht; die dauerhaft gespeicherte Firmware kann weiterhin ausgeführt werden.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe

Schlüsselbegriffe

109 Schlüsselbegriffe, jeweils mit Definition

A

Adressbus
Der Adressbus überträgt die für einen Speicher- oder Gerätezugriff ausgewählte Adresse und bezeichnet damit, wohin der übertragene Inhalt gehört.
Schreibt die CPU an Adresse 300, überträgt der Adressbus 300, während der Datenbus den Wert überträgt.
Akkumulator
Ein Akkumulator ist ein Arbeitsregister, das in einer einfachen Prozessorbauweise arithmetische oder logische Ergebnisse enthält und Operanden bereitstellt.
In einer einfachen Akkumulatormaschine aktualisiert ADD den ACC, während STORE den ACC in den Speicher kopiert, ohne seinen Wert zu ändern.
Analog-Digital-Wandler
Ein Analog-Digital-Wandler tastet ein analoges Signal ab und stellt die Messwerte als digitale Zahlen für die Verarbeitung durch den Computer dar.
Die Eingangsschaltung eines Mikrofons wandelt Schallmessungen in Zahlen um, die als Audioaufnahme gespeichert werden.
Arbeitsspeicher (RAM)
RAM ist lesbarer und beschreibbarer Arbeitsspeicher mit direktem Zugriff auf Speicherstellen; gewöhnlicher Computer-RAM ist flüchtig und enthält laufende Befehle und Daten.
Ein Editor hält aktuelle Dokumentinhalte im RAM, während eine gespeicherte Kopie auf nichtflüchtigem Speicher liegt.
Arithmetisch-logische Einheit (ALU)
Die arithmetisch-logische Einheit ist eine CPU-Schaltung, die Arithmetik, bitweise Logik, Verschiebungen und Vergleiche ausführt und Ergebniszustände festhält.
Wird ein Wert von sich selbst subtrahiert, entsteht null. Die ALU kann dies für einen folgenden bedingten Sprung festhalten.
Assembler
Ein Assembler übersetzt Anweisungen der Assemblersprache in ihre Maschinencodekodierungen für die ausgewählte Befehlssatzarchitektur.
Der mnemonische Name einer Addition wird zum Binärbefehl, den die Ziel-CPU holen und ausführen kann.
Assemblersprache
Assemblersprache stellt Maschinenbefehle durch lesbare mnemonische Befehlsnamen, Registernamen und Marken dar, die eng an eine bestimmte ISA gebunden sind.
Eine mit LOAD, SUB und Sprüngen geschriebene Rückwärtszählung zeigt die Operationen, die ihre Schleife umsetzen.
Ausführbare Datei
Eine ausführbare Datei ist eine zum Laden und Ausführen vorbereitete Programmdatei, die Code und unterstützende Informationen im erwarteten Format einer Plattform enthält.
Eine native ausführbare Datei kann sowohl von der ISA ihres Zielprozessors als auch vom Dateiformat ihres Betriebssystems abhängen.
Ausgabegerät
Ein Ausgabegerät stellt Ergebnisse eines Computers dar oder setzt sie physisch um, etwa indem es ein Bild anzeigt oder einen Aktor bewegt.
Ein Ventil ist ein Ausgabegerät, wenn eine Steuerung es als Reaktion auf eine gemessene Temperatur öffnet.

B

Bandbreite
Die Bandbreite ist die Datenmenge, die ein Kommunikationsweg pro Sekunde übertragen kann, oft ausgedrückt in Bytes pro Sekunde oder Bits pro Sekunde.
Ein breiterer Datenweg kann mehr Bytes pro Übertragung bewegen und erhöht bei gleichbleibender Übertragungszahl die Bandbreite.
Befehlsregister
Das Befehlsregister enthält den geholten Befehl, während dieser dekodiert und ausgeführt wird; eine alternative Abkürzung ist IR.
Nachdem ein Befehl im MDR angekommen ist, kopiert eine CPU ihn in das CIR, damit seine Operation dekodiert werden kann.
Befehlssatzarchitektur
Eine Befehlssatzarchitektur definiert die Befehle, Kodierungen und Register eines Prozessors und legt damit seine Softwareschnittstelle für Maschinencode fest.
Eine native Programmversion für ARM zielt auf eine andere ISA als eine native x86-64-Version desselben Quellprogramms.
Befehlszähler
Der Befehlszähler enthält die Adresse des nächsten zu holenden Befehls. Er wird beim Holen weitergesetzt und ändert sich, wenn ein Sprung ausgeführt wird.
Ein Sprung zurück zu Adresse 0 ersetzt die nächste Adresse in der Reihenfolge im PC, sodass das Programm eine Schleife wiederholen kann.
Befehlszyklus
Der Befehlszyklus ist der wiederholte Vorgang, einen Maschinenbefehl zu holen, seine Operation zu interpretieren und sie auszuführen.
Ein LOAD-Befehl muss zuerst geholt werden, bevor seine Ausführung den separaten Datenlesevorgang durchführt.
Betriebssystem
Ein Betriebssystem verwaltet Hardwareressourcen und stellt Dienste bereit, die Anwendungen zum Ausführen, zum Dateizugriff und zur Kommunikation mit Geräten nutzen.
Ein Editor fordert eine Datei anhand ihres Namens an, während das Betriebssystem ihre Daten findet und das Speichergerät koordiniert.
Betriebssystemkern
Der Betriebssystemkern ist das Kernstück eines Betriebssystems, das privilegierte Ressourcen kontrolliert und die Schutzgrenze um Anwendungen durchsetzt.
Eine Anwendung im Benutzermodus fordert Dateidienste des Betriebssystemkerns an, statt selbst uneingeschränkte Laufwerkbefehle auszugeben.
Bootloader
Ein Bootloader ist Startsoftware, die den Betriebssystemkern vom Sekundärspeicher in den Speicher lädt und ihm die Ausführung übergibt.
Nachdem die Firmware die Hardware vorbereitet hat, bringt der Bootloader den Betriebssystemkern in den RAM, damit der Start des Betriebssystems fortgesetzt werden kann.
Bus
Ein Bus ist ein gemeinsamer Kommunikationsweg, der Signale zwischen Computerkomponenten überträgt; ein paralleler Bus überträgt mehrere Bits gleichzeitig.
Ein klassischer Systembus ermöglicht dem Prozessor, eine Speicheradresse zu senden und den dort gespeicherten Inhalt zu empfangen.
Byteadressierbarer Speicher
Byteadressierbarer Speicher weist jedem Byte eine eigene Adresse zu, sodass ein Wert aus mehreren Bytes mehrere aufeinanderfolgende Adressen belegt.
Ein Wert aus vier Bytes ab Adresse 1000 belegt die Adressen 1000 bis 1003; 1004 ist die nächste Speicherstelle.
Bytecode
Bytecode ist eine Befehlsdarstellung für eine virtuelle Maschine, die es ermöglicht, ein Programm unabhängig von einer bestimmten physischen CPU zu verbreiten.
Eine Java-Bytecodedatei kann über verschiedene JVM-Implementierungen auf ARM- und x86-64-Computern laufen.

C

Cache
Ein CPU-Cache ist ein kleiner, schneller SRAM-Speicher, der Kopien von Befehls- und Datenblöcken aus langsameren Speicherebenen zur schnellen Wiederverwendung enthält.
Eine Schleife kann ihre Befehle wiederholt im Cache finden, statt sie jedes Mal aus dem RAM zu holen.
Cache-Treffer und Cache-Fehltreffer
Bei einem Cache-Treffer wird angeforderter Inhalt im Cache gefunden; ein Fehltreffer erfordert das Abrufen aus einer langsameren Ebene und verzögert diesen Zugriff.
Ein Fehltreffer bei einem Listenelement kann auch seine benachbarten Bytes laden, sodass spätere Zugriffe Treffer im Cache erzielen.
Cachezeile
Eine Cachezeile ist der Block benachbarter Speicherbytes, der gemeinsam in einen CPU-Cache übertragen wird, bei modernen Prozessoren häufig 64 Bytes.
Das Holen eines angeforderten Bytes kann auch benachbarte Bytes kopieren, die spätere Lesezugriffe ohne weiteren RAM-Zugriff finden.
Cloudspeicher
Cloudspeicher ist ein Dienst, der Dateien auf den physischen Speichersystemen eines Anbieters aufbewahrt und sie über ein Netzwerk zugänglich macht.
Eine entfernt gespeicherte Datei kann auf mehreren Geräten geteilt werden, aber ihr Lesen hängt von der Verbindung und dem Anbieter ab.
Compiler
Ein Compiler übersetzt Programmcode in eine andere Darstellung, oft Maschinencode oder Bytecode, entweder im Voraus oder während der Ausführung.
Ein Compiler, der im Voraus arbeitet, kann ein C-Programm in Code für den als Ziel ausgewählten Prozessor umwandeln.

D

Dateisystem
Ein Dateisystem ordnet gespeicherte Inhalte in benannte Dateien und Ordner und verwaltet deren Speicherorte, Größen, Datumsangaben und Zugriffsberechtigungen.
Der Pfad /home/sam/notes.txt bezeichnet eine Linux-Datei, ohne zu verraten, welche Speicherblöcke sie enthalten.
Datenbus
Der Datenbus überträgt Befehle oder Werte zwischen Prozessor, Speicher und Geräten und ermöglicht Lese- und Schreibvorgänge.
Ein Speicherlesevorgang gibt ein gespeichertes Byte über den Datenbus zurück, nachdem seine Speicherstelle ausgewählt wurde.
Digital-Analog-Wandler
Ein Digital-Analog-Wandler wandelt digital dargestellte Werte in ein analoges Signal um, das ein Ausgabegerät wie einen Lautsprecher ansteuern kann.
Bei der Wiedergabe einer gespeicherten Aufnahme müssen ihre digitalen Abtastwerte in ein Signal für den Lautsprecher umgewandelt werden.
Direkter Speicherzugriff (DMA)
Direkter Speicherzugriff ermöglicht einem Gerät oder DMA-Controller, Blöcke in den RAM oder aus ihm heraus zu übertragen, ohne dass die CPU jedes einzelne Byte kopiert.
Nachdem die CPU DMA für eine Bildübertragung eingerichtet hat, kann sie andere Arbeit ausführen, während der Block übertragen wird.
DRAM
DRAM ist flüchtiger Speicher, der Bits als Ladung in Kondensatoren speichert und regelmäßig aufgefrischt werden muss. Er eignet sich für großen Hauptspeicher.
Die Auffrischung des DRAM stellt Ladung wieder her, bevor ihr Verlust die gespeicherten Bitwerte während des Betriebs unzuverlässig macht.

E

Echtzeitbetriebssystem
Ein Echtzeitbetriebssystem bietet vorgegebene Antwortzeitgarantien für Aufgaben, deren Korrektheit von der Einhaltung von Fristen abhängt.
Die Antwort einer Industriesteuerung muss vor ihrer Frist eintreffen, selbst wenn eine spätere Antwort denselben Wert berechnen würde.
Eingabegerät
Ein Eingabegerät liefert Daten an einen Computer, darunter von Menschen eingegebene Daten oder Messungen aus der physischen Welt.
Ein Lichtsensor liefert eine Eingabe, anhand derer eine Steuerung entscheidet, ob eine Lampe eingeschaltet werden soll.
Eingebettetes System
Ein eingebettetes System ist ein Computer, der in ein größeres Gerät eingebaut ist und mithilfe von Prozessor, Speicher und Ein- und Ausgabe eine bestimmte Aufgabe erfüllt.
Die Steuerung einer Waschmaschine liest Sensoren aus und schaltet ihren Motor mithilfe eines gespeicherten Steuerprogramms.

F

Festplattenlaufwerk (HDD)
Ein Festplattenlaufwerk speichert Bits magnetisch auf rotierenden Scheiben und nutzt einen beweglichen Kopf, der Such- und Drehverzögerungen verursacht.
Beim Lesen verstreuter kleiner Dateien fallen auf einer HDD vor der Übertragung jedes Blocks wiederholt Verzögerungen an.
Festwertspeicher (ROM)
ROM ist nichtflüchtiger Speicher für dauerhaft erhaltene, normalerweise feste Inhalte; moderne Firmware nutzt stattdessen häufig aktualisierbaren Flashspeicher.
Wer den häufig beschriebenen Dateispeicher eines Telefons „ROM“ nennt, verwechselt seinen Flashspeicher mit festen Startinhalten.
Firmware
Firmware ist hardwarenahe Software in nichtflüchtigem Speicher, die Hardware steuert oder Startbefehle bereitstellt, bevor das Hauptbetriebssystem läuft.
UEFI-Firmware bereitet die Hardware eines PCs vor und startet einen Bootloader, bevor der Betriebssystemkern in den RAM geladen wird.
Flipflop
Ein Flipflop ist eine getaktete Speicherschaltung, die ein Bit an einer Taktflanke übernimmt und diesen Zustand zwischen Aktualisierungen hält.
Reihen von Flipflops können Registerwerte halten und gemeinsam an der passenden Taktflanke aktualisiert werden.

G

Gerätecontroller
Ein Gerätecontroller ist Hardware, die die gerätenahe Kommunikation übernimmt und dem System Status- und Datenregister bereitstellt.
Ein Speichercontroller empfängt eine Übertragungsanforderung und meldet, wenn sein Datenblock den RAM erreicht hat.
Gerätetreiber
Ein Gerätetreiber ist Software, die allgemeine Anforderungen des Betriebssystems in die Befehle übersetzt, die ein bestimmter Gerätecontroller benötigt.
Ein Druckertreiber wandelt die Druckanforderung des Betriebssystems in Befehle um, die der angeschlossene Drucker versteht.
Grafikprozessor (GPU)
Ein Grafikprozessor ist ein Prozessor, der auf stark parallele Arbeit spezialisiert ist, bei der ähnliche Operationen auf viele Datenwerte angewendet werden.
Das Aktualisieren vieler Bildpixel eignet sich für die GPU-Verarbeitung, weil die Arbeit viele ähnliche Berechnungen enthält.
Grafische Benutzeroberfläche (GUI) und Kommandozeilenschnittstelle (CLI)
Eine GUI bietet visuelle Bedienelemente wie Fenster und Symbole; eine CLI nimmt eingetippte Befehle entgegen, die auch in Skripten kombiniert werden können.
Ein Nutzer kann einen Ordner visuell durchsuchen oder mit ls in einer Kommandozeile seine Dateiliste anfordern.

H

Halbaddierer
Ein Halbaddierer addiert zwei Eingabebits und erzeugt getrennte Summen- und Übertragsbits. Er nutzt XOR für die Summe und UND für den Übertrag.
Die Addition zweier Bits mit 1 erzeugt Übertrag 1 und Summe 0 und stellt damit die zweistellige Binärzahl 10 dar.
Hardware
Hardware sind die physischen Bestandteile eines Computersystems, darunter Prozessor, Platinen, Speicherchips, Laufwerke und Geräte.
Die Tastatur und die RAM-Module eines Laptops sind Hardware, während der darauf laufende Texteditor Software ist.
Harvard-Architektur
Die Harvard-Architektur hält Befehle und Daten in getrennten Speichern mit getrennten Wegen und ermöglicht so je einen Zugriff beider Arten gleichzeitig.
Ein Mikrocontroller kann seinen nächsten Befehl holen, während er über seinen Datenweg einen Sensorwert liest.
Heap
Der Heap ist ein Speicherbereich eines Prozesses für Speicher, der während der Ausführung angefordert wird, etwa für eine Sammlung, die wächst.
Ein Programm, das eine Liste variabler Größe erstellt, kann Heapspeicher anfordern, sobald es weitere Elemente erhält.

I

Interpreter
Ein Interpreter ist ein Programm, das während der Ausführung die Operationen eines anderen Programms mithilfe seiner eigenen Implementierung auf dem Hostcomputer ausführt.
Die CPU führt den Maschinencode eines Interpreters aus, während dieser die Operationen eines Programms in einer höheren Sprache umsetzt.
Interrupt
Ein Interrupt ist ein Signal, das die Aufmerksamkeit des Prozessors anfordert und die Ausführung einer passenden Behandlungsroutine auslöst, bevor die unterbrochene Arbeit fortgesetzt wird.
Eine abgeschlossene Festplattenübertragung kann einen Interrupt auslösen, damit das Betriebssystem weiß, dass die angeforderten Daten bereitstehen.
Interruptbehandlungsroutine
Eine Interruptbehandlungsroutine reagiert auf einen Interrupt, während der Zustand des unterbrochenen Programms für dessen spätere Fortsetzung bewahrt wird.
Eine Tastaturbehandlungsroutine hilft, ein Tastenereignis zu verarbeiten. Danach kann die unterbrochene Berechnung fortgesetzt werden.

J

Just-in-time-Kompilierung
Just-in-time-Kompilierung übersetzt Code während der Programmausführung in native Maschinenbefehle und konzentriert sich oft auf häufig ausgeführte Teile.
Nachdem eine Laufzeitumgebung eine häufig ausgeführte Schleife erkannt hat, kann sie diese kompilieren, sodass spätere Wiederholungen erneute Interpretation vermeiden.

L

Latch
Ein Latch ist eine Rückkopplungsschaltung, die ein Bit halten kann, solange Strom anliegt. Es bildet einen einfachen Baustein zur Speicherung digitaler Zustände.
Kreuzgekoppelte Gatter führen ihre Ausgänge aufeinander zurück, sodass die Schaltung ihren Zustand speichern kann.
Linker
Ein Linker kombiniert Objektdateien und löst Bibliotheksverweise auf, um mithilfe statischen Codes oder von Abhängigkeiten zu gemeinsam genutzten Bibliotheken eine ausführbare Datei zu erzeugen.
Eine nach dem Assemblieren nicht aufgelöste externe Funktion erfordert Binden, keinen weiteren Durchlauf zur Prüfung der Quellcodesyntax.
Logikgatter
Ein Logikgatter ist eine Schaltung, die ein oder mehrere Eingabebits aufnimmt und nach einer festen Regel wie UND oder NICHT ein Ausgabebit erzeugt.
Durch die Kombination von Gattern kann ein Prozessor Bitmuster vergleichen, Summen berechnen und steuern, wohin Ergebnisse gelangen.

M

Magnetband
Magnetband ist ein dauerhafter Datenträger, der Daten in einer Folge aufzeichnet und günstige Kapazität für große Datenmengen bei langsamem Zugriff auf einzelne Positionen bietet.
Ein großes Archiv kann die Spulverzögerung akzeptieren, die beim Abrufen nur gelegentlich genutzter Daten entsteht.
Maschinencode
Maschinencode ist die binäre Kodierung von Befehlen, die ein Prozessor gemäß seiner Befehlssatzarchitektur direkt ausführt.
Eine ausführbare x86-64-Datei enthält Befehlskodierungen, die ein ARM-Prozessor nicht nativ ausführen kann.
Maschinenwort
Ein Maschinenwort ist die natürliche Größe der Datenmenge, die ein Prozessor in einer Operation verarbeitet. Sie spiegelt sich häufig in der Breite seiner Universalregister wider.
Ein 64-Bit-Maschinenwort fasst acht Bytes, aber nicht jede Verbindung muss deshalb 64 parallele Leitungen nutzen.
Mooresches Gesetz
Das Mooresche Gesetz ist die historische Beobachtung, dass die Anzahl der Transistoren auf Chips über einen langen Zeitraum durch eine ungefähre Verdopplung alle zwei Jahre wuchs.
Mehr Transistoren können größere Caches und zusätzliche Kerne ermöglichen, ohne die Geschwindigkeit jedes Programms zu verdoppeln.

N

NAND-Gatter
Ein NAND-Gatter kehrt das UND-Ergebnis um und gibt nur dann 0 aus, wenn alle Eingaben 1 sind; NAND-Gatter allein können jede logische Funktion umsetzen.
Verbindet man beide Eingänge eines NAND-Gatters mit einem Bit, ist seine Ausgabe das Gegenteil dieses Bits.
NICHT-Gatter
Ein NICHT-Gatter kehrt sein einziges Eingabebit um: Bei einer Eingabe von 0 gibt es 1 aus und bei einer Eingabe von 1 gibt es 0 aus.
Ist ein Signal am Eingang eines NICHT-Gatters 0, erhält das nächste angeschlossene Gatter von dessen Ausgang 1.
NOR-Gatter
Ein NOR-Gatter kehrt das ODER-Ergebnis um und gibt nur dann 1 aus, wenn jede Eingabe 0 ist; NOR-Gatter allein können jede logische Funktion umsetzen.
Ist eine von zwei Eingaben 1, ist ihre NOR-Ausgabe 0, weil ihr ODER-Ergebnis 1 wäre.

O

ODER-Gatter
Ein ODER-Gatter gibt 1 aus, wenn mindestens eine Eingabe 1 ist, auch wenn jede Eingabe 1 ist.
Bei zwei Eingaben mit 1 bleibt die ODER-Ausgabe 1; wer dies als „eine, aber nicht beide“ versteht, verwechselt ODER mit XOR.
Operand
Ein Operand gibt gemäß der Definition des Befehls dessen Eingabe oder Ziel an, etwa ein Register, eine Adresse oder einen unmittelbaren Wert.
In einem Befehl wie LOAD 10 ist der Operand die Adresse 10, deren Inhalt in den Akkumulator ACC gelesen wird.
Operationscode
Ein Operationscode ist der Teil eines Maschinenbefehls, der seine Operation angibt, etwa das Laden eines Werts, eine Addition oder einen Sprung.
In einer Befehlskodierung kann eine Änderung des Operationscodes einen Datenladebefehl in eine andere Operation umwandeln.
Optische Disc
Eine optische Disc speichert Daten als Markierungen, die ein Laser auf einer reflektierenden Schicht liest. Sie ist ein Wechselmedium wie CDs, DVDs und Blu-ray-Discs.
Eine einschichtige DVD speichert typischerweise 4,7 GB, eine einschichtige Blu-ray-Disc typischerweise 25 GB.

P

Pipelining
Pipelining überlappt Phasen verschiedener Befehle und erhöht nach dem Füllen der Pipeline die Rate, mit der Befehle abgeschlossen werden.
In einer dreistufigen Pipeline kann ein Befehl ausgeführt werden, während ein anderer dekodiert und ein dritter geholt wird.
Polling
Polling ist die wiederholte Prüfung des Status eines Geräts, um festzustellen, ob es Daten bereithält oder eine zugewiesene Operation abgeschlossen hat.
Ein Prozessor, der einen untätigen Sensor immer wieder prüft, verbringt Zeit mit Prüfungen, die keine neuen Daten liefern.
Prozess
Ein Prozess ist eine laufende Instanz eines Programms mit eigenem Ausführungszustand, Adressraum und vom Betriebssystem verwalteten Ressourcen.
Getrennte Editorinstanzen können dieselbe Programmdatei nutzen und dabei unterschiedliche Dokumentzustände im Speicher halten.
Prozessorkern
Ein Prozessorkern ist eine Verarbeitungseinheit mit den Steuer-, Rechen- und Zustandsressourcen, die zur Ausführung einer Befehlsfolge nötig sind.
Vier Kerne können getrennte Arbeit gleichzeitig ausführen, wenn das Betriebssystem bereite Aufgaben hat.

Q

Quellcode
Quellcode ist der menschenlesbare Text eines Programms, der vor der Übersetzung oder Interpretation in einer Programmiersprache geschrieben wird.
Das Bearbeiten einer C-Quelldatei ändert ihren Text, aber die frühere native ausführbare Datei bleibt bis zur Neuerstellung unverändert.

R

Räumliche Lokalität
Räumliche Lokalität ist die Tendenz, auf Adressen nahe einer kürzlich genutzten Adresse zuzugreifen, wodurch Kopien benachbarter Bytes nützlich werden.
Das Lesen aufeinanderfolgender Listenelemente profitiert davon, wenn das Holen einer Cachezeile mehrere davon in die Nähe bringt.
Register
Ein Register ist eine kleine, sehr schnelle Speicherstelle innerhalb des Prozessors, die einen unmittelbar benötigten Arbeitswert, eine Adresse oder einen Befehl enthält.
Eine Schleifenzählvariable in einem Register zu halten, vermeidet das wiederholte Abrufen dieses Arbeitswerts aus dem Hauptspeicher.
RISC und CISC
RISC und CISC sind Entwurfsarten für Befehlssätze, die regelmäßige einfache beziehungsweise komplexere Operationen bevorzugen.
Die komprimierten Formen von RISC-V zeigen, warum die Einordnung als RISC-Bauweise nicht eine einzige Befehlslänge festlegt.
Rückschreiben
Das Rückschreiben ist die Phase einer Befehlsausführung, in der ein berechnetes Ergebnis in sein Zielregister oder seine Zielspeicherstelle geschrieben wird.
Nach einer arithmetischen Operation macht das Schreiben des Ergebnisses in sein Ziel dieses für spätere Befehle verfügbar.

S

Scheduler
Der Scheduler ist die Komponente des Betriebssystems, die bereitstehende Arbeit für Prozessorzeit auswählt und verfügbare Ausführungsressourcen unter Prozessen aufteilt.
Kurze Zeitabschnitte ermöglichen einem Musikabspieler und einem Editor, auf einem einzelnen Verarbeitungsstrom voranzukommen.
Seitenflattern (Thrashing)
Seitenflattern ist eine starke Verlangsamung, die entsteht, wenn häufiges Verschieben von Seiten zwischen RAM und Sekundärspeicher einen großen Teil der Ausführungszeit des Systems beansprucht.
Das Schließen speicherintensiver Anwendungen kann Seitenübertragungen verringern und mehr RAM für die verbleibende aktive Arbeit freigeben.
Sekundärspeicher
Sekundärspeicher bewahrt Programme und Daten ohne Strom auf und bietet dauerhafte Kapazität, auf die langsamer als auf den Hauptspeicher zugegriffen wird.
Eine Anwendungsdatei bleibt auf der SSD, nachdem ihr laufender Prozess beendet und sein RAM zurückgenommen wurde.
Software
Software besteht aus Programmen und den Daten, mit denen sie arbeiten. Sie stellt die Befehle und Informationen bereit, die der Hardware nützliche Aufgaben geben.
Ein Bildbearbeitungsprogramm nutzt Softwarebefehle, um die für ein Foto gespeicherten Farbwerte zu ändern.
Solid-State-Drive (SSD)
Ein Solid-State-Drive nutzt nichtflüchtige Flashzellen ohne bewegliche Teile und ermöglicht schnellen wahlfreien Zugriff auf dauerhaft gespeicherte Programme und Dateien.
Eine SSD eignet sich für aktive Dateien auf einem Laptop, weil schneller Zugriff und Stoßfestigkeit bei der mobilen Nutzung helfen.
Speicheradressregister
Das Speicheradressregister enthält die für einen Speicherlese- oder Schreibvorgang ausgewählte Adresse und stellt damit die Adressseite des Zugriffs bereit.
Um einen Datenwert aus Speicherstelle 20 zu lesen, legt eine CPU 20 in das MAR, bevor sie den Lesevorgang anfordert.
Speicherauslagerung (Swapping)
Die Speicherauslagerung verschiebt Speicherseiten zwischen RAM und Auslagerungsspeicher, sodass inaktive Inhalte den RAM verlassen und andere Arbeit den Platz nutzen kann.
Eine in einer Auslagerungsdatei aufbewahrte Seite muss zurückgeholt werden, bevor ihr fehlender Inhalt im RAM erneut genutzt werden kann.
Speicherdatenregister
Das Speicherdatenregister enthält gerade aus dem Speicher gelesenen oder als Nächstes zu schreibenden Inhalt; es wird auch Speicherpufferregister genannt.
Bei STORE erhält das MDR den Wert des Akkumulators, bevor dieser an die ausgewählte Stelle geschrieben wird.
Speicherhierarchie
Die Speicherhierarchie verbindet kleine, schnelle Speicher nahe an der CPU mit größeren, langsameren Ebenen und gleicht Kapazität, Geschwindigkeit und Kosten pro Byte aus.
Register und Caches dienen der unmittelbaren Arbeit, während RAM, Laufwerke und Archive zunehmend größere Speicher bereitstellen.
Speicherleck
Ein Speicherleck ist belegter Speicher, den ein Programm nicht mehr benötigt, aber nicht freigibt, sodass sich unnötige Speicherbelegungen ansammeln können.
Ein lange laufendes Programm, das wiederholt nicht mehr benötigten Heapspeicher zurücklässt, kann seinen Speicherverbrauch stetig erhöhen.
Speicherprogrammprinzip
Das Speicherprogrammprinzip besagt, dass Befehle als binäre Inhalte im Speicher dargestellt werden, damit ein Prozessor sie holen und ausführen kann.
Durch das Laden eines anderen Programms kann derselbe Computer nach einem Spiel ein Dokument bearbeiten.
Speicherseite
Eine Speicherseite ist ein Block fester Größe, der für Zuordnungen des virtuellen Speichers und für das Verschieben von Inhalten zwischen RAM und Auslagerungsspeicher genutzt wird.
Ein System mit 4 KiB großen Seiten ordnet Speicher in Blöcken von jeweils 4.096 Bytes zu und ruft ihn in diesen Blöcken ab.
Speicherverwaltungseinheit (MMU)
Die Speicherverwaltungseinheit ist CPU-Hardware, die virtuelle Adressen anhand der vom Betriebssystem eingerichteten Zuordnungen übersetzt und Zugriffsberechtigungen prüft.
Ein Zugriff auf eine geschützte Stelle löst einen Fehler aus, wenn die Zuordnung des Prozesses die angeforderte Operation nicht erlaubt.
Sprungbefehl
Ein Sprungbefehl ändert die Adresse des nächsten Befehls, entweder unbedingt oder nur dann, wenn eine festgelegte Prüfung erfolgreich ist.
Ein bedingter Nullsprung wie JUMPZ führt die CPU nur dann zu seinem Ziel, wenn der Akkumulator bei der Ausführung null ist.
SRAM
SRAM ist flüchtiger Speicher, der Bits in Schaltungen nach Art eines Latches ohne Auffrischung hält, solange Strom anliegt. Er bietet schnellen, aber pro Bit teuren Speicher.
CPU-Caches nutzen SRAM, um Zugriffsverzögerungen zu verringern, obwohl er pro Byte mehr als DRAM im Hauptspeicher kostet.
Stapelspeicher (Stack)
Der Stapelspeicher ist ein Speicherbereich eines Prozesses, der aktive Funktionsaufrufe festhält, einschließlich der Rücksprungadressen und lokalen Werte, die diese Aufrufe benötigen.
Ein Funktionsaufruf fügt seine Arbeitsinformationen hinzu; bei der Rückkehr wird der Anteil dieses Aufrufs am Stapelspeicher freigegeben.
Stapelüberlauf
Ein Stapelüberlauf tritt auf, wenn der Bedarf des Aufrufstapels den verfügbaren Platz übersteigt, häufig nachdem Funktionsaufrufe ohne Abbruch wiederholt werden.
Eine Funktion, die sich immer wieder selbst aufruft, fügt Aufrufeinträge hinzu, bis der verfügbare Stapelspeicher des Prozesses erschöpft ist.
Statisches und dynamisches Binden
Statisches Binden kopiert benötigten Bibliothekscode in eine ausführbare Datei; dynamisches Binden verbindet sie mit getrennt bereitgestellten gemeinsam genutzten Bibliotheken.
Ein dynamisch gebundenes Programm startet möglicherweise nicht, wenn eine benötigte kompatible gemeinsam genutzte Bibliothek fehlt.
Statusflag
Ein Statusflag ist ein gespeicherter CPU-Zustand, der durch eine Operation gesetzt wird, etwa bei einem Ergebnis von null oder einem negativen Ergebnis, und den ein späterer Befehl prüfen kann.
Ein bedingter Sprung kann das Nullflag prüfen, um zu entscheiden, ob er fortfährt oder zu einer anderen Adresse springt.
Steuerbus
Der Steuerbus überträgt Befehls- und Taktsignale, die Übertragungen koordinieren, darunter Lese-, Schreib- und Interruptanforderungssignale.
Ein Schreibsignal weist den Speicher an, den Inhalt des Datenbusses an der vom Adressbus ausgewählten Stelle zu speichern.
Steuerwerk
Das Steuerwerk koordiniert die Befehlsausführung, indem es Befehle holt und dekodiert und Signale an die anderen Teile des Prozessors ausgibt.
Bei einem ADD-Befehl wählt das Steuerwerk Operanden aus, während die ALU die Addition selbst ausführt.
System-on-a-Chip
Ein System-on-a-Chip vereint mehrere Computerfunktionen, etwa CPU, Grafik und Schaltungen zur Gerätesteuerung, auf einem integrierten Chip.
Ein Telefon nutzt ein System-on-a-Chip, um viele Computerfunktionen in einem kleinen, energieeffizienten Gerät unterzubringen.
Systemaufruf
Ein Systemaufruf ist eine kontrollierte Anfrage eines Programms an den Betriebssystemkern für einen geschützten Dienst wie Datei- oder Gerätezugriff.
Der Betriebssystemkern kann die Dateiberechtigung des Nutzers prüfen, bevor er die Leseanforderung einer Anwendung ausführt.

T

Taktfrequenz
Die Taktfrequenz ist die Rate der Taktzyklen eines Prozessors und wird in Hertz gemessen. Sie beeinflusst zusammen mit der Arbeit pro Zyklus die Ausführungszeit.
Eine feste Aufgabe mit sechs Milliarden Zyklen dauert bei 4 GHz 1,5 s, aber unterschiedliche CPU-Bauweisen können unterschiedliche Zykluszahlen benötigen.
Taktzyklus
Ein Taktzyklus ist ein Zeitintervall im Taktsignal des Prozessors, das Änderungen in Schaltungen koordiniert, ohne notwendigerweise einen Befehl abzuschließen.
Ein Takt von 3 GHz ergibt etwa 0,33 ns pro Zyklus, während ein Befehl mehrere interne Schritte umfassen kann.
Thermische Drosselung
Thermische Drosselung ist die Senkung der Prozessortaktfrequenz bei zu hoher Temperatur. Sie schützt den Chip und verringert dabei seine Arbeitsrate.
Eine lange laufende Berechnung kann langsamer werden, wenn die Kühlung die bei der bisherigen Taktfrequenz erzeugte Wärme nicht abführen kann.
Transistor
Ein Transistor ist ein elektronisch gesteuertes Bauteil, das in digitalen Schaltungen als Schalter wirkt und so bei der Darstellung und Verarbeitung von Bits hilft.
Gruppen von Transistoren setzen die Gatterregeln um, die in einer arithmetisch-logischen Einheit und ihren Registern genutzt werden.
Trefferquote
Die Trefferquote ist die Anzahl der Zugriffe, bei denen der angeforderte Inhalt im Cache gefunden wird, geteilt durch die Gesamtzahl der Zugriffe. Sie gibt an, wie oft die schnelle Kopie verfügbar ist.
Ein Cache, der 950 von 1.000 angeforderten Werten findet, hat eine Trefferquote von 95 % und eine Fehltrefferquote von 5 %.

U

UND-Gatter
Ein UND-Gatter gibt nur dann 1 aus, wenn alle Eingabebits 1 sind; jede Eingabe von 0 ergibt eine Ausgabe von 0.
Ein UND-Gatter mit zwei Eingängen erzeugt ein Übertragsbit, wenn ein Halbaddierer zwei Eingabebits erhält, die beide 1 sind.

V

Virtuelle Maschine
Eine virtuelle Maschine für eine Programmiersprache ist Software, die die Befehlsumgebung bereitstellt, die zur Ausführung von Bytecode auf einem physischen Computer benötigt wird.
Die JVM interpretiert oder kompiliert Java-Bytecode mithilfe einer für die Hostplattform erstellten Implementierung.
Virtueller Speicher
Virtueller Speicher gibt Prozessen eigene Adressräume, bildet ihre Adressen auf physischen Speicher ab und setzt dabei Zugriffsberechtigungen durch.
Zwei Prozesse können dieselbe geschriebene virtuelle Adresse nutzen und ihre privaten Werte dennoch auf verschiedenen RAM-Seiten halten.
Von-Neumann-Architektur
Die Von-Neumann-Architektur legt Programmbefehle und Daten in einem gemeinsamen Hauptspeicher ab, der mit einem Prozessor und Ein- und Ausgabegeräten verbunden ist.
Das Holen eines Befehls und das Lesen von Daten konkurrieren im klassischen Aufbau um den gemeinsamen Speicherweg.

W

Wahrheitstabelle
Eine Wahrheitstabelle führt die Ausgabe einer Schaltung für jede mögliche Kombination ihrer Eingaben auf und macht so die vollständige Ein-/Ausgaberegel deutlich.
Ein Gatter mit zwei Eingängen benötigt vier Zeilen, weil seine beiden Bits vier mögliche Eingabekombinationen haben.
Wear-Leveling
Wear-Leveling ist ein Verfahren eines Flash-Controllers, das Lösch- und Schreibvorgänge auf Zellen verteilt, um deren begrenzte Schreibbelastbarkeit gleichmäßig zu nutzen.
Das Umlenken wiederholter Schreibvorgänge auf verschiedene Zellen hilft, die frühe Abnutzung eines häufig aktualisierten Bereichs zu vermeiden.

X

XOR-Gatter
Ein XOR-Gatter mit zwei Eingängen gibt 1 aus, wenn sich die Eingaben unterscheiden, und 0, wenn sie gleich sind. Es setzt damit die Summenbitregel eines Halbaddierers um.
Ein Halbaddierer mit den Eingaben 1 und 1 erhält von XOR ein Summenbit mit dem Wert null und von UND ein Übertragsbit.

Z

Zeitliche Lokalität
Zeitliche Lokalität ist die Tendenz, kürzlich genutzte Befehle oder Daten bald erneut abzurufen, wodurch aufbewahrte Kopien nützlich werden.
Eine Schleife liest und aktualisiert ihre Zählvariable wiederholt und nutzt so denselben Arbeitsinhalt in kurzer Zeit erneut.
Zugriffszeit und Übertragungsrate
Die Zugriffszeit ist die Verzögerung, bis Daten einzutreffen beginnen; die Übertragungsrate ist die pro Sekunde gelieferte Menge, sobald die Übertragung läuft.
Bei Tausenden winzigen Dateien fallen wiederholt Zugriffsverzögerungen an, während bei einer großen Datei die dauerhafte Übertragungsrate im Vordergrund steht.

Über diese Einheit

Von StudeliFehler melden

Erstelle deine eigenen Lernmaterialien

Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.

Jetzt starten