Wie Computer funktionieren: Von-Neumann-Architektur
AnfängerEinheit 3 von 7 in Kurs: Informatik – Computer, Algorithmen, Internet und KI verstehen
Was du lernst
- 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 SpeicherprogrammprinzipUnterscheide 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 übertragenBeschreibe 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 CPUOrdne 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.
- Benenne die Hauptbestandteile eines Computers und erläutere das Speicherprogrammprinzip
- 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 rechnetLies 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 AufgabenBeschreibe Steuerwerk, arithmetisch-logische Einheit, Universal- und Spezialregister, Takt und Prozessorkerne sowie ihre jeweiligen Aufgaben bei der Ausführung eines Programms.
- Vollziehe den Befehlszyklus nachVerfolge 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 wirdVergleiche 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.
- Untersuche anhand von Logikgattern, wie Hardware mit Bits rechnet
- 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 AssemblerspracheErklä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 machenVergleiche 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.
- Lies Maschinencode und Assemblersprache
- 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 AdressierungErklä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ärspeicherErklä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 CacheOrdne 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.
- Beschreibe den Hauptspeicher und seine Adressierung
- 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 BetriebssystemsErklä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ührtVollziehe 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.
- Beschreibe die Aufgaben des Betriebssystems
Von-Neumann-Architektur einfach erklärt
1Computerbestandteile 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.
| Architektur | Befehle und Daten | Nützliche Folge |
|---|---|---|
| Von Neumann | Teilen sich Hauptspeicher und Übertragungsweg | Ein Speicher enthält eine wechselnde Mischung aus Code und Daten. |
| Harvard | Haben getrennte Speicher und Übertragungswege | Ein 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.
| Bustyp | Was er überträgt | Richtung bei einem Speicherzugriff der CPU |
|---|---|---|
| Adressbus | Die zu verwendende Speicherstelle | Von der CPU zum Speicher oder zu einem Gerät |
| Datenbus | Einen Befehl oder Datenwert | Beim Lesen zur CPU; beim Schreiben von ihr weg |
| Steuerbus | Lese-, Schreib-, Takt- und Interruptsignale | Hä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 Adressbits gibt es verschiedene Adressen. Bezeichnet jede Adresse ein Byte, ist das zugleich die Anzahl der adressierbaren Bytes.
- 16 Bit ergeben Adressen oder 64 KiB.
- 32 Bit ergeben 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 ; 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:
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:
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.
2Wie 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 Eingänge Zeilen nötig.
NICHT kehrt seine einzige Eingabe um. Die Gatter mit zwei Eingängen verhalten sich wie folgt:
| A | B | UND | ODER | XOR | NAND | NOR |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 |
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:
- Die äußerste rechte Stelle ergibt 1, ohne Übertrag.
- Die nächste Stelle hat zwei 1: Schreibe 0 und übertrage 1.
- Die nächste hat 1, 0 und den Übertrag 1: Schreibe 0 und übertrage 1.
- 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:
| Register | Aufgabe |
|---|---|
| Befehlszähler, PC | Adresse des nächsten zu holenden Befehls |
| Speicheradressregister, MAR | Adresse für den nächsten Lese- oder Schreibzugriff auf den Speicher |
| Speicherdatenregister, MDR | Gerade gelesener oder als Nächstes zu schreibender Wert |
| Befehlsregister, CIR | Befehl, der gerade dekodiert und ausgeführt wird |
| Akkumulator, ACC | Arbeitswert 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:
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:
- Kopiere den PC in das MAR.
- Lege die Adresse auf den Adressbus und sende ein Speicherlesesignal.
- Empfange den Befehl über den Datenbus im MDR.
- Kopiere ihn in das CIR.
- 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:
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:
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:
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.
3Wie 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 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: . 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
| Werkzeug | Seine Arbeit |
|---|---|
| Assembler | Übersetzt Assemblersprache in Maschinencode |
| Compiler | Übersetzt Code in eine andere Form, oft Maschinencode oder Bytecode |
| Interpreter | Fü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:
- Vorverarbeitung: Direktiven wie
#include <stdio.h>verarbeiten und dabei Headerdeklarationen in den Quellcode übernehmen. - Kompilieren: Den C-Code in Operationen auf Assemblerebene übersetzen.
- Assemblieren: Diese Operationen als Maschinencode in Objektdateien kodieren.
- 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.
4Hauptspeicher, 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.
| Art | Speichert ein Bit mithilfe von | Typische Aufgabe | Behält Inhalt ohne Strom? |
|---|---|---|---|
| DRAM | Ladung in einem Kondensator | Hauptarbeitsspeicher | Nein |
| SRAM | Einer Schaltung nach Art eines Latches | CPU-Cache | Nein |
| Firmware-Flashspeicher | Eingeschlossener Ladung | Startbefehle | Ja |
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 Einheit | Bytes | Binäre Einheit | Bytes |
|---|---|---|---|
| kB | 1.000 | KiB | 1.024 |
| MB | 1.000.000 | MiB | 1.048.576 |
| GB | 1.000.000.000 | GiB | 1.073.741.824 |
| TB | 1.000.000.000.000 | - | - |
Ein als 1 TB verkauftes Laufwerk enthält Bytes. In GiB beträgt die Anzahl:
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:
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
| Medium | Wie es Daten speichert oder liest | Geeigneter Einsatz |
|---|---|---|
| CD, DVD, Blu-ray | Ein Laser liest Markierungen auf einer reflektierenden Schicht | Medien verbreiten oder ein Disc-Archiv aufbewahren |
| Magnetband | Daten folgen einer Reihenfolge auf einem langen Band | Groß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.
| Ebene | Beispielhafte Zugriffszeit | Typische Größenordnung |
|---|---|---|
| Register | Bruchteil einer Nanosekunde | Einige Kilobyte oder weniger |
| L1-Cache | Etwa 1 ns | Einige zehn bis einige hundert Kilobyte pro Kern |
| L2-Cache | Einige ns | Bis zu einigen Megabyte |
| L3-Cache | Etwa 10–20 ns | Einige bis einige zehn Megabyte |
| RAM | Etwa 50–100 ns | Einige bis einige zehn Gigabyte |
| SSD | Etwa 20–100 µs | Einige hundert Gigabyte bis Terabyte |
| HDD | Etwa 5–10 ms | Mehrere 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 %:
Bei einer Trefferquote von 80 %:
Der zweite Durchschnitt ist -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.
5Wie 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.
| Funktion | Was das Betriebssystem tut |
|---|---|
| Prozessverwaltung | Startet, plant und beendet laufende Programme |
| Speicherverwaltung | Weist Speicher zu und setzt die Trennung durch |
| Dateiverwaltung | Organisiert Dateien, Ordner und gespeicherte Daten |
| Geräteverwaltung | Kommuniziert über Treiber mit Geräten |
| Sicherheit | Setzt Konten und Berechtigungen durch |
| Netzwerkfunktionen | Stellt 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
| Bereich | Inhalt |
|---|---|
| Code | Maschinenbefehle |
| Daten | Globale Variablen |
| Heap | Während der Programmausführung angeforderter Speicher |
| Stapelspeicher | Aktive 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
1Verfolge die Wege in einem Computer
13 Schritte
- 1Einfü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.
- 2Erklä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.
- 3KernaussageProgramme 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
01000001könnte 65, den ASCII-Buchstaben „A“ oder einen Teil eines Befehls darstellen. Seine Verwendung bestimmt die Deutung. - 4HerausforderungWechsle 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.
- 5AnalogieWä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.
- 6BeispielLies 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.
- 7Erklä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.
- 8HerausforderungUnterscheide 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 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.
- 9Erklä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.
- 10VerbindungController 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.
- 11HerausforderungVermeide 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.
- 12HerausforderungVerbinde 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.
- 13ZusammenfassungLies 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.
2Baue eine Prozessoroperation auf und verfolge sie
19 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungMache die Ausführung sichtbar
- 2ErklärungLies eine Gatterregel
- 3BeispielErzeuge einen Übertrag
- 4HerausforderungWerte die Zwischenausgaben aus
- 5VerbindungHalte ein Ergebnis zwischen Schritten fest
- 6ErklärungOrdne die Aufgaben des Prozessors zu
- 7HerausforderungHalte Adresse und Inhalt auseinander
- 8ErklärungHole den Befehl vor seiner Verwendung
- 9BeispielErster Befehl: Laden
- 10BeispielZweiter Befehl: Addieren
- 11BeispielDritter und vierter Befehl: Speichern und Anhalten
- 12HerausforderungFühre einen Sprung aus oder überspringe ihn
- 13KernaussageSetze nach einem Interrupt fort
- 14BeispielVergleiche eine feste Zykluszahl
- 15BeispielTeile nur die parallele Arbeit auf
- 16ErklärungÜberlappe Phasen, nicht Bedeutungen
- 17HerausforderungSchätze eine neue parallele Aufgabe ab
- 18HerausforderungErkläre eine ungenutzte schnelle Pipeline
- 19ZusammenfassungVerbinde Bits, Zustand und Zeit
3Verfolge ein Programm vom Text bis zur Ausführung
13 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungUnterscheide die Formen des Programms
- 2ErklärungZerlege einen Befehl in Felder
- 3ErklärungBenenne die Vereinbarung mit der Hardware
- 4BeispielRichte eine Rückwärtszählung ein
- 5BeispielZähle die Ausführungen einschließlich des Abschlusses
- 6HerausforderungÄndere den Startwert und verfolge den Abschluss
- 7ErklärungErstelle das Programm vor der Ausführung
- 8VerbindungEntscheide, wo Bibliothekscode liegt
- 9HerausforderungErkläre eine erfolgreiche Programmerstellung mit falscher Ausgabe
- 10KernaussageAuch bei der Interpretation läuft Maschinencode
- 11HerausforderungÜbertrage das Programm auf eine andere CPU
- 12HerausforderungVerfolge zwei Wege zur selben Hardware
- 13ZusammenfassungHalte die Aufgaben der Ebenen auseinander
4Vergleiche Speicher und berechne Cache-Effekte
14 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungStelle zwei Fragen zu gespeicherten Daten
- 2ErklärungUnterscheide Arbeitsinhalte und dauerhafte Inhalte
- 3BeispielLies die Kapazitätseinheit
- 4HerausforderungFinde das letzte Byte
- 5ErklärungUnterscheide Wartezeit und Datenfluss
- 6BeispielBestimme einen Teil der Festplattenverzögerung
- 7HerausforderungWähle passendes Speicherverhalten
- 8ErklärungGehe die Hierarchie hinab
- 9VerbindungSage die nächsten nützlichen Bytes voraus
- 10BeispielBerücksichtige beide Teile eines Fehltreffers
- 11BeispielÄndere die Trefferquote
- 12HerausforderungBerechne einen neuen Cache-Durchschnitt
- 13HerausforderungWähle die passende Verbesserung
- 14ZusammenfassungOrdne die Ressource dem Bedarf zu
5Verfolge Start, Tastendruck und Speichern
15 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungVerfolge einen Editor durch das System
- 2ErklärungFordere einen Dienst an
- 3BeispielTeile Ausführungszeit auf
- 4HerausforderungErkenne die Grenze des Betriebssystems
- 5ErklärungBeginne vor dem Betriebssystem
- 6BeispielErzeuge die laufende Instanz
- 7ErklärungWeise Speicherbereichen unterschiedliche Aufgaben zu
- 8AnalogieNutze eine private Adresszuordnung
- 9HerausforderungHalte gleiche Adressen getrennt
- 10KernaussageSekundärspeicher kann Hauptspeicher langsam ergänzen
- 11BeispielLeite das Tastenereignis weiter
- 12BeispielSpeichere über die Lebensdauer des Prozesses hinaus
- 13HerausforderungUnterscheide zwei Arten der Verlangsamung
- 14HerausforderungVerbinde Prozessschutz und Speichern
- 15ZusammenfassungVerfolge die Dienste in ihrer Reihenfolge
Von-Neumann-Architektur: Übungsaufgaben
Set 1: Bestandteile, Befehle und alltägliche Computerarbeit10 Übungsfragen
Frage 1 von 10
Antwort zeigenAntwort ausblenden
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Frage 4 von 10
Antwort zeigenAntwort ausblenden
10 gehört zu den kombinierten Summen- und Übertragsausgängen eines Halbaddierers, nicht zum einzelnen Ausgang eines XOR-Gatters.Frage 5 von 10
Antwort zeigenAntwort ausblenden
Frage 6 von 10
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?Antwort zeigenAntwort ausblenden
Frage 7 von 10
LOAD, ADD und andere mnemonische Assemblerbefehle in Binärbefehle um. Um welche Art von Werkzeug handelt es sich?Antwort zeigenAntwort ausblenden
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Frage 10 von 10
0x3000 für private Daten. Die eine speichert dort 9 und die andere 22. Warum können beide Werte erhalten bleiben?Antwort zeigenAntwort ausblenden
Set 2: Verbindungen, Übersetzung und Speicherwahl10 Übungsfragen
Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.
Frage 1 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
JUMPZ 18 von Adresse 7 geholt, während der ACC 4 ist. Von welcher Adresse wird als Nächstes geholt?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
0010. Wie wird ADD 13 kodiert?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
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
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
(A XOR B) AND (NOT C) bei A = 1, B = 1 und C = 0?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
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?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
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?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
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
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
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
LOAD 19 nicht direkt kodieren?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe
Schlüsselbegriffe
A
Adressbus
Akkumulator
Analog-Digital-Wandler
Arbeitsspeicher (RAM)
Arithmetisch-logische Einheit (ALU)
Assembler
Assemblersprache
Ausführbare Datei
Ausgabegerät
B
Bandbreite
Befehlsregister
Befehlssatzarchitektur
Befehlszähler
Befehlszyklus
Betriebssystem
Betriebssystemkern
Bootloader
Bus
Byteadressierbarer Speicher
Bytecode
C
Cache
Cache-Treffer und Cache-Fehltreffer
Cachezeile
Cloudspeicher
Compiler
D
Dateisystem
/home/sam/notes.txt bezeichnet eine Linux-Datei, ohne zu verraten, welche Speicherblöcke sie enthalten.Datenbus
Digital-Analog-Wandler
Direkter Speicherzugriff (DMA)
DRAM
E
Echtzeitbetriebssystem
Eingabegerät
Eingebettetes System
F
Festplattenlaufwerk (HDD)
Festwertspeicher (ROM)
Firmware
Flipflop
G
Gerätecontroller
Gerätetreiber
Grafikprozessor (GPU)
Grafische Benutzeroberfläche (GUI) und Kommandozeilenschnittstelle (CLI)
ls in einer Kommandozeile seine Dateiliste anfordern.H
Halbaddierer
10 dar.Hardware
Harvard-Architektur
Heap
I
Interpreter
Interrupt
Interruptbehandlungsroutine
J
Just-in-time-Kompilierung
L
Latch
Linker
Logikgatter
M
Magnetband
Maschinencode
Maschinenwort
Mooresches Gesetz
N
NAND-Gatter
NICHT-Gatter
NOR-Gatter
O
ODER-Gatter
Operand
LOAD 10 ist der Operand die Adresse 10, deren Inhalt in den Akkumulator ACC gelesen wird.Operationscode
Optische Disc
P
Pipelining
Polling
Prozess
Prozessorkern
Q
Quellcode
R
Räumliche Lokalität
Register
RISC und CISC
Rückschreiben
S
Scheduler
Seitenflattern (Thrashing)
Sekundärspeicher
Software
Solid-State-Drive (SSD)
Speicheradressregister
Speicherauslagerung (Swapping)
Speicherdatenregister
Speicherhierarchie
Speicherleck
Speicherprogrammprinzip
Speicherseite
Speicherverwaltungseinheit (MMU)
Sprungbefehl
SRAM
Stapelspeicher (Stack)
Stapelüberlauf
Statisches und dynamisches Binden
Statusflag
Steuerbus
Steuerwerk
System-on-a-Chip
Systemaufruf
T
Taktfrequenz
Taktzyklus
Thermische Drosselung
Transistor
Trefferquote
U
UND-Gatter
V
Virtuelle Maschine
Virtueller Speicher
Von-Neumann-Architektur
W
Wahrheitstabelle
Wear-Leveling
X
XOR-Gatter
Z
Zeitliche Lokalität
Zugriffszeit und Übertragungsrate
Über diese Einheit
Erstelle deine eigenen Lernmaterialien
Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.