GDI III
GRUNDLAGEN DER INFORMATIK - WS 12/13 TU DARMSTADT
GRUNDLAGEN DER INFORMATIK - WS 12/13 TU DARMSTADT
Kartei Details
Karten | 50 |
---|---|
Sprache | Deutsch |
Kategorie | Informatik |
Stufe | Grundschule |
Erstellt / Aktualisiert | 13.03.2013 / 14.06.2016 |
Weblink |
https://card2brain.ch/box/gdi_iii
|
Einbinden |
<iframe src="https://card2brain.ch/box/gdi_iii/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Lernkarteien erstellen oder kopieren
Mit einem Upgrade kannst du unlimitiert Lernkarteien erstellen oder kopieren und viele Zusatzfunktionen mehr nutzen.
Melde dich an, um alle Karten zu sehen.
Was bedeutet dynamisches Laden zur Laufzeit?
Dynamisches laden zur Laufzeit bedeutet dass das Programm zur Laufzeit nicht aufglöste Referenzen auf ein shared object file behält, und diese erst bei Verwendung zur Laufzeit aufgelöst werden. (Anwendungsfall z.B. Browser- Plugins). Hier liefert üblicherweise das Betriebssystem die notwendige Unterstützung damit dies effizient geschehen kann.
Beschreiben Sie stichpunktartig die Kommunikation zwischen CPU und Hauptspeicher bei Lese- bzw. Schreiboperation (movl A, %eax bzw movl %eax, A) auf einem System mit einem Bus, auf dem Daten und Adressen über dieselben Leitungen verschickt werden.
Lesen 1. CPU legt Adresse auf den Bus 2. Hauptspeicher legt Daten auf den Bus 3. CPU kopiert Daten vom Bus ins Register Schreiben 1. CPU legt Adresse auf den Bus. 2. CPU legt Daten auf den Bus. 3. Hauptspeicher transferiert Daten vom Bus in den gewünschten Speicherzellen.
Beschreiben Sie die zwei aus der Vorlesung bekannten Formen von Lokalität und nennen Sie jeweils ein Beispiel!
Zeitliche (bzw. temporale) Lokalität: Nach Zugriff auf einen bestimmten Datensatz wird mit großer Wahrscheinlichkeit bald erneut darauf zugegriffen Beispiel: Schleifen Räumliche Lokalität: Nach dem Zugriff auf einen bestimmten Datensatz wird mit großer Wahrscheinlichkeit auch auf einen Datensatz zugegriffen, der in unmittelbarer Nähe im Speicher steht Beispiel: sequentielle Instruktionsfolgen, Reihen, Matrizen
Wieviele Cache Lines besitzt ein 4-fach satzassoziativer Cache mit 16 Sätzen? Wie groß (in Bytes) ist der Cache, wenn die Blockgröße 64 Bit beträgt?
16 Sätze à 4 Cache Lines = 64 Cache Lines 64 Cache Lines à 8 Byte (64 Bit) = 512 Byte
Was versteht man unter einer Daisy-Chain? Was sind die Vor- und Nachteile dieser Struktur?
Die Daisy-Chain ist eine Bus-Struktur, bei der die Master, die den Bus verwenden dürfen, eine Prioritätskette bilden. Ein größerer Abstand vom Mikroprozessor bedeutet eine niedrigere Priorität. Wenn mehrere Master den Bus über das MBRQ-Signal anfordern, wird das das Bus Grant Signal BGT vom Mikroprozessor aus durchgereicht, bis es den Master höchster Priorität mit MBRQ erreicht. Vorteile: wenige Signalleitungen, dezentrale einfache Logik, weitere Master leicht anschließbar Nachteile: Bus-Totzeiten durch Kettenlaufzeit, Aushungerung von Mastern niedriger Priorität
Wovon hängt die Zugriffszeit einer klassischen Festplatte ab? Welchen Vorteil bieten hierbei SSD-Festplatten?
Die Zugriffszeit einer Festplatte hängt von folgenden Faktoren ab: • Such-Zeit (Seek Time): Zeit, um den Arm zum entsprechenden Ziel-Sektor zu bewegen. • Rotations-Latenz (Rotational Latency): Wartezeit, bis gewünschter Sektor am Kopf ist, ggf. bis zu einer Umdrehung Übertragungs-Zeit (Transfer Time): Zeit, um einen Sektor zu lesen, hängt ab von Rotationsgeschwindigkeit SSD-Festplatten (solid state drive) hingegen sind aus nichtflüchtigen Speicherchips (Flash-Zellen) aufgebaut. Dadurch dass sich keine mechanischen Teile bewegt werden müssen ist die Such-Zeit wesentlich niedriger als bei herkömmlichen Festplatten. Sequentielles Schreiben und Lesen liegt (je nach verwendeter Technologie) ungefähr in derselben Größenordnung.
Erläutern Sie, wann ein Code die Fano-Bedingung erfüllt. Trifft dies für folgenden Code zu: C = 0, 10, 01, 11? Begründen Sie.
Wenn ein Code die Fano-Bedingung erfüllt, ist ein Codewort sofort decodierbar, sobald es im Codebaum auftritt. Dies bedeuetet ebenfalls, dass sich alle Codewörter in den Blättern des Codebaums befinden. Ein solcher Code nennt sich auch präfixfrei. Der Code C ist nicht präfixfrei, da das Wort 0 ein präfix zum Wort 01. Der Knoten mit dem Wort 0 ist ein innerer Knoten im Codebaum.
Was beschreibt die Hammingdistanz? Welche Distanz besteht zwischen folgenden Code-Wörtern: 0000, 1001, 0110? Wie groß darf ein Fehler in der Übertragung sein, damit der Code noch korrigiert werden kann?
Die Hammingdistanz ist die Anzahl an Bitpositionen, an denen sich zwei Wörter eines Alphabets mindestens unterscheiden. Sie kann durch das Bilden eines XORs und anschließendem zählen der Einsen berechnet werden. Die Hammingdistanz zwischen den Codewörtern beträgt zwei, zwischen 1001 und 0110 sogar vier. Es können keine Fehler korrigiert werden. So kann man nicht unterscheiden, ob 1000 ursprünglich aus 0000 oder 1001 hervorgegangen ist.
Was sind die minimalen Aufgaben eines Betriebssystems? Erläutern Sie jede Aufgabe.
Die minimalen Aufgaben eines Betriebssystems belaufen sich auf den Dispatch, das Memory Management und das Interrupt Handling. • Dispatch: Der Dispatcher weist im Rahmen des Scheduling bei einem Kontextwechsel der CPU einen neuen aktiven Prozess zu. Die Reihenfolge, welcher Prozess als nächstes aktiviert wird, entscheidet der Scheduler. • Memory Management: Der Teil des Betriebssystems, der Speicher dynamisch Programmen zuordnet und Speicher wieder freigibt, wenn er nicht mehr benötigt wird. • Interrupt Handling: Wenn ein Interrupt Request auftritt (Programm, I/O) wird bei einer Unterbrechungsannahme im Rahmen des Interruption Handling die Unterbrechung behandelt und danach der vorherige Prozess fortgeführt.
Welche zwei atomaren Operationen können auf einem Semaphor ausgeführt werden?
Ein Prozess kann über die Operation P eine Ressource anfordern und bei Zuteilung der Ressource für andere Prozesse sperren. Nach Ende der Berechnung kann die Ressource mit der Operation V wieder freigegeben werden.
Was bedeutet das Verhungern eines Prozesses? Nennen sie ein Scheduling-Verfahren, bei dem das vorkommen kann!
Ein Prozess gilt als verhungert, wenn er bis zu seinem definierten Timeout immer noch nicht gestartet wurde. „Shortest Job First“ und statische Prioritätenvergabe sind Scheduling-Verfahren bei denen ein Prozess leicht verhungern kann.
Was sind die Aufgaben des virtuellen Speichers?
Der virtuelle Speicher erlaubt Programmen die Größe des Hauptspeichers zu überschreiten und spielt eine Rolle in der effektiven Nutzung von zeitlicher und räumlicher Lokalität.
Erläutern Sie den Unterschied zwischen den Begriffen „Parallelität“ und „Nebenläufigkeit“.
Nebenläufigkeit bezeichnet die Möglichkeit, Prozesse unabhängig ausführen zu können (das kann auch gleichzeitig passieren), während Parallelität Prozessunabhängigkeit voraussetzt und Prozesse gleichzeitig ausgeführt werden müssen.
Was kann mit Amdahls Gesetz berechnet werden und was muss dafür bekannt sein?
Wenn bekannt ist, welcher Anteil eines Programms parallel ausgeführt werden kann, dann kann über Amdahls Gesetz der theoretische maximale Speedup (ein Faktor, der angibt um wieviel eine parallelisierte Version eines Programms schneller läuft) errechnet werden.
Welche Speicherzugriffsmodelle gibt es im PRAM-Modell und was bedeuten sie? Bei welchen dieser Modelle müssen zusätzliche Regelungen eingeführt werden?
Exclusive Read Exclusive Write (EREW) – auf ein Speicherelement kann immer nur durch einen Prozess zugegriffen werden; • Concurrent Read Exclusive Write (CREW) – beliebig viele Prozesse können ein Speicherelement lesen, aber nur ein Prozess kann Änderungen daran vornehmen; • Concurrent Read Concurrent Write (CRCW) – beliebig viele Prozesse können ein Speicherelement gleichzeitig lesen und verändern: in diesem Fall müssen weitere Kontrollmechanismen eingeführt werden, die Speicherkorruption verhindern.
allgemeine Definition einer Programmiersprache
Sprache zur Formulierung von Rechenvorschriften, die direkt oder indirekt von einem Rechner ausgeführt werden kann.
indirekt soll in diesem Zusammenhang bedeuten, dass vor einer Ausführung die Rechenvorschrift noch in ein für den Rechner verständliches Format umgesetzt werden muss.
Aufgabe des Destruktor
Der Destruktor gibt den reservierten Speicher der Variablen wieder frei. Bei dem verlassen des Scopes wird der Destruktor automatisch aufgerufen.
Deklaration des Destruktors: ~Klassenname();
Eigenschaften einer Programmiersprache
- eindeutige Syntax -> zugelassene Zeichenfolgen - eindeutige Semantik -> Auswirkung des Programms auf einem Rechner
Maximal 224 = 16777216.
Wie viele Bits werden zur Kodierung minimal benötigt, wenn das zu kodierende Alphabet 715 verschiedene Zeichen umfasst
Es werden minimal 10 Bit benötigt. (29 = 512 < 715 < 1024 = 210)
Wann ist es sinnvoll, Programme direkt in Assembler (statt in C oder JAVA) zu schreiben? Nenne zwei Gründe.
Bei knappem Speicherplatz, die Antwortzeiten von großer Relevanz sind (Echtzeitsysteme), direkter Zugriff auf den Prozessor notwendig ist oder Handoptimierung gebraucht wird.
Nennen Sie drei Vorteile einer Hochsprache wie Java gegenüber Assembler.
Kontrollstrukturen sind vorhanden, besseres Code Verständnis, Datenstrukturen sind vorhanden und Typen werden überprüft.
Was ist der Hauptunterschied einer Harvard- und einer von Neumann - Architektur?
Harvard-Architektur: Programm- und Datenspeicher sind getrennte Einheiten. Programmspeicher kann auch als Nur- Lese Speicher ausgeführt sein. Effizientes Pipelining möglich. von Neumann-Architektur: Programm- und Datenspeicher sind vereint. Für die meisten heute bekannten Computer bildet diese Architektur die Grundlage.
Erklären Sie die Begriffe Register, Maschinenbefehl, Operand und Addressierungsart.
Register - Ein Speicher innerhalb der CPU. Dieser Speicher ist sehr schnell, jedoch auch limitiert. Ein Register wird in einer Assemblersprache direkt über einen Namen angesprochen, viele Operationen arbeiten nur mit Registern. Manche Register haben auch eine spezielle Bedeutung (z.B. bei arithmetischen Operationen, oder als Adresszeiger in den Hauptspeicher). Maschinenbefehl - Eine Instruktion des jeweiligen Befehlssatzes (Maschinensprache) eines Prozessors. Eine Instruktion besteht aus einem oder mehreren Bytes, die den Befehl sowie etwaige Operanden repräsentieren. Eine solche Bytefolge ist für den Menschen schwer lesbar, deswegen wird in der Assemblersprache ein Befehl durch besser verständliche Abkürzungen, sogenannte Mnemonics, dargestellt. Beispiel: movl %ebx, %eax Operand - Ein Operand ist ein Parameter eines Maschinenbefehls. Befehle können keinen, einen oder mehrere Operanden haben. Üblicherweise ist die Anzahl der Operanden bei arithmetischen und Transportbefehlen innerhalb einer Maschinensprache konstant. Ein Operand kann ein konstanter Wert, ein Register oder eine Speicherstelle im Hauptspeicher sein. Addressierungsart - Bei der Angabe einer Speicherstelle als Operand für einen Maschinenbefehl existieren unterschiedliche Möglichkeiten zur Adressierung. Die Addressierung kann • absolute (direkte Adressangabe) • indirect (Angabe eines Registers, das die Adresse enthält.) • indexed (Angabe von zwei Registern: ein Basisregister, das an den Anfang eines Speicherbereichs zeigt, sowie ein Indexregister, das den Index innerhalb des Speicherbereichs angibt.) Es existieren auch Varianten, die die Angabe eines konstanten Offsets erlauben, sowie eine Skalierung des Indexregisters (Multiplikation mit einer Konstante).
Erklären Sie den Begriff Speicheradresse.
Die einzelnen Speicherzellen eines Computers sind durchnummeriert. Eine Speicheradresse ist eine solche Nummer, mit der sich eine Speicherzelle zum lesenden oder schreibenden Zugriff identifizieren lässt. Eine Speicherzelle hat üblicherweise die Größe von einem Byte.
Wie wird ein Array in Assembler realisiert, wie wird es im Speicher abgelegt?
Im Folgenden ist beispielhaft ein Array von fünf long Werten angegeben. arrayname: .long 42, 1337, 666, 0, 1 Im Speicher wird hierzu ein Bereich von 5 4=20 Byte angelegt. An der Adresse die dieses Array spezifiziert, liegt der erste Wert. Element n liegt demnach an Basisadresse+n 4. Eine weitere Möglichkeit besteht darin einen Speicherbereich von fixer Grösse zu reservieren: arrayname: .space 1024, 0 Im Speicher wird ein Bereich von 1024 Byte angelegt und mit 0 aufgefüllt.
Erklären Sie die Funktion der Befehle call und ret und wie sie den Stack verändern
call wird benutzt um eine Funktion / ein Unterprogramm aufzurufen. Dazu wird der Instruction-Pointer (eip) auf den ersten Befehl des Unterprogramms gesetzt. Außerdem wird die Adresse des auf call folgenden Befehls auf den Stack gepusht (die Rücksprungadresse). ret ist die letzte Instruktion in einem Unterprogramm, die die Rücksprungadresse vom Stack poppt und in den Instruction-Pointer schreibt. Anschließend geht die Verarbeitung mit der Instruktion nach dem Funktionsaufruf weiter.
Erklären Sie den Unterschied zwischen logischem und arithmetischem Shiften.
Beim arithmetischen Shiften nach rechts bleibt das Vorzeichen erhalten. Beim logischen Shiften wird das Most- Significant-Bit mit 0 aufgefüllt.
Was ist ein Systemcall?
Ein Systemcall ist ein spezieller Interrupt, der das Betriebssystem darum bittet eine bestimmte Aktion auszuführen. Was genau getan werden soll, wird dabei durch Laden von definierten Werten in die Register bestimmt. Befindet sich zur Zeit des Systemcalls beispielsweise eine 1 in eax, wird das Betriebssystem angewiesen das aufrufende Programm zu beenden. Der Wert der sich in ebx befindet wird dabei als Exit-Code zurück gegeben
Listen Sie die drei gebräuchlichen Taxonomien nach Flynn auf und beschreiben Sie kurz deren wesentliche Merkmale und Unterschiede.
• SISD - Single Instruction Single Data: typisch für sequentielle Rechner (Prinzip fast aller Systeme mit einem einzelnen Prozessor bzw. einzelnen Kern) • SIMD - Single Instruction Multiple Data: Ein Instruktionsstrom wird von mehreren Prozessoreinheiten ausgeführt (Parallelverarbeitung). Früher: Vektorprozessoren (Supercomputer, z.B. Cray), heute auch in x86- Architektur zu finden (Erweiterung des Befehlssatzes um SIMD Operationen: SSE). • MIMD - Multiple Instruction Multiple Data: Mehrere Einheiten, die einen getrennten Instruktions- und Datenstrom verarbeiten, sind über eine Netzwerkstruktur miteinander verbunden. Beispiele: Mehrkern-Prozessor (Verbindung auf dem Chip), über Netzwerk verbundener Rechnercluster. quasi-uabhängige Berechnungen, üblich in Mehrkernprozessoren
-
- 1 / 50
-