GTI-Grundlagen der technischen Informatik

Sämtliche Themen, welche relevant sind um die technische Informatik zu erlernen.

Sämtliche Themen, welche relevant sind um die technische Informatik zu erlernen.


Fichier Détails

Cartes-fiches 178
Langue Deutsch
Catégorie Informatique
Niveau Autres
Crée / Actualisé 16.11.2020 / 24.09.2023
Lien de web
https://card2brain.ch/box/20201116_gtigrundlagen_der_technischen_informatik
Intégrer
<iframe src="https://card2brain.ch/box/20201116_gtigrundlagen_der_technischen_informatik/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Wie erkennt die CPU, dass eine Unterbrechungsanforderung ansteht? 

Die Prüfung, ob eine Unterbrechung ansteht, ist Teil des Befehlszyklus. Nach Ausführung eines Maschinenbefehls wird überprüft, ob ein Interrupt-Request anliegt. Ist dies der Fall, wird in ein spezielles Unterprogramm, die ISR, oder bei größeren Betriebssystemen in eine entsprechend davor geschaltete Verteilungsroutine, verzweigt. 

Was versteht man unter einer Interrupt-Vektor-Tabelle? 

Dies ist eine Tabelle, welche Interrupt-Vektoren, also die eigentlichen Einsprungadressen der Interrupt-Service-Routinen enthält und an einer vordefinierten Stelle im Kernelspeicher liegt. Der Index zur Adressierung innerhalb der Tabelle wird der CPU implizit durch den Interrupt-Controller anhand der belegten Adressleitungen übermittelt. Jeder Interrupt-Quelle wird ein fester Index auf diese Tabelle zugeordnet

Was ist eine Interrupt-Service-Routine und wann wird sie aufgerufen? 

Das Programmstück, das den Interrupt bearbeitet, wird als Interrupt-ServiceRoutine (ISR, Interrupt-Bearbeitungsroutine) bezeichnet. Für jeden InterruptTypen gibt es eine ISR. Eine ISR kann aber auch mehreren Interrupt-Typen zugeordnet werden. Das Betriebssystem stellt für alle Interrupts eine passende ISR zur Verfügung. 

Was bedeutet Interrupt-Sharing? 

Beim Interrupt-Sharing teilen sich mehrere Geräte eine Interrupt-Nummer. Bei Auftreten eines Interrupts muss dann ermittelt werden, welches Gerät den Interrupt tatsächlich ausgelöst hat. Diese Aufgabe erledigt meist das Betriebssystem. 

Was versteckt der Trap-Mechanismus zum Aufruf eines Systemdienstes vor dem Anwendungsprogramm? 

Der Trap-Mechanismus dient dazu, dass der Aufruf eines Systemcalls von einem Anwendungsprogramm aus ermöglicht wird, ohne dass die tatsächliche Adresse der Systemroutine bekannt sein muss. Dieser Mechanismus versteckt also die Adresse der Systemroutine vor dem Anwendungsprogramm. 

Erläutern Sie die Abwicklung eines Traps (Systemcalls)! 

Traps werden durch einen speziellen Maschinenbefehl des Prozessors, den sog. Supervisor-Call oder SVC unterstützt. Bei Ausführung des Systemcalls über den Software-Interrupt wird wie folgt verfahren: – Der aktuelle Kontext des laufenden Programms, also die Information, welche den aktuellen Status eines Prozesses beschreibt, wird gesichert. – Der Program Counter wird mit der Adresse der passenden Systemroutine belegt. – Vom Benutzermodus wird in den Kernelmodus geschaltet. – Die adressierte Systemroutine wird durchlaufen. – Anschließend wird wieder der alte Kontext des Prozesses hergestellt und der Program Counter mit der Adresse des Befehls nach dem Systemcall belegt. 

Was sind synchrone Interrupts?

Synchrone Interrupts treten bei synchronen Ereignissen auf. Dies sind Ereignisse, die bei identischen Randbedingungen (Programmausführungen mit gleichen Daten) immer an der gleichen Programmstelle auftreten. Synchrone Interrupts werden auch als Ausnahmen (Exceptions) bezeichnet. Ausnahmen werden von der CPU selbst ausgelöst und sind für das laufende Programm bestimmt. 

Was sind asynchrone Interrupts?

Asynchrone Interrupts sind die klassischen Interrupt-Typen, die nicht an ein laufendes Programm gebunden sind. Sie treten unabhängig davon auf, was das System gerade macht. Typische Beispiele für asynchrone Interrupts sind die Ankunft einer Nachricht an einem Netzwerkadapter oder die Zustellung eines Plattenspeicherblocks an die CPU. Beide Ereignisse unterbrechen in der Regel für kurze Zeit den Ablauf des laufenden Programms. Asynchrone Interrupts sind nicht vorhersehbar und können auch nicht ohne weiteres reproduziert werden. 

Welche Aufgabe hat ein Interrupt-Controller? 

Ein Interrupt-Controller erzeugt aus einem IRQ (einer Interruptanforderung) eine Unterbrechung der CPU, die mit Hilfe eines passenden Programmstücks (einer ISR) bearbeitet werden muss

Was ist in der Prozessverwaltung ein PCB, wozu dient er und welche Inhalte hat er? Nennen Sie dabei drei wichtige Informationen, die im PCB verwaltet werden!

Ein Eintrag in der Prozesstabelle heißt Process Control Block (PCB). Je nach Betriebssystem gibt es deutliche Unterschiede im Aufbau. Einige Informationen sind aber prinzipiell sehr ähnlich. Hierzu gehört u.a die Information zur Identifikation des Prozesses, die Information zum aktuellen Prozesszustand sowie Informationen zu sonstigen Ressourcen, die dem Prozess zugeordnet sind (Dateien, offene Netzwerkverbindungen). Weitere Informationen, die für einen Prozess im PCB verwaltet werden, sind der Programmzähler, der Prozesszustand, die Priorität und die Prozessnummer sowie die aktuellen Registerinhalte. 

Wie verhalten sich Threads zu Prozessen im Hinblick auf die Nutzung des Prozessadressraums? 

Threads erhalten den vollen Zugriff auf den zugehörigen Prozessadressraum.  

Beschreiben Sie den groben Ablauf eines Prozess-Kontextwechsels und erläutern Sie, warum ein Thread-Kontextwechsel schneller sein kann, als ein Prozess-Kontextwechsel! 

Bei einem Prozess-Kontextwechsel wird ein aktiver Prozess unterbrochen. Die gesamte Information des unterbrochenen Prozesses, also der Prozesskontext, wird gesichert und der Prozesskontext des neu aktivierten Prozesses in die Ablaufumgebung (CPU-Register, MMU-Register,...) geladen. Ein Thread-Kontextwechsel innerhalb des laufenden Prozesses kann schneller sein als ein Prozess-Kontextwechsel, weil meist Speicherbereiche des gleichen Prozesses verwendet werden. Ein Austausch von Speicherbereichen ist daher oft nicht erforderlich, was den Betriebssystem-Overhead reduziert. 

Was versteht man unter User-Level-Threads im Vergleich zu Kernel-Level-Threads und welche Beziehungen zwischen beiden sind möglich?

User-Level-Threads laufen auf der Benutzerebene (Benutzermodus), Kernel-LevelThreads dagegen auf der Kernelebene (Kernelmodus, Systemmodus) ab. 

Was bedeutet eine 1:n-Beziehung zwischen den Betriebsmitteln Prozess und Thread? 

Ein Prozess kann mehrere Threads beherbergen. 1:n-Beziehungen, bei denen ein Prozess nahezu beliebig viele Threads enthalten kann, sind heute in Betriebssystemen üblich. 

Erläutern Sie die beiden Möglichkeiten in Java, eigene Threads zu definieren und zu nutzen? 

Es besteht die Möglichkeit, eine eigene Threadklasse zu implementieren, indem man diese von der Basisklasse Thread ableitet. Die Methode run muss überschrieben werden, da dies die Methode ist, die beim Starten eines Threads aufgerufen wird. Die andere Variante, einen Thread zu erzeugen, ist die Definition einer Klasse, die das Interface Runnable implementiert. In der Klasse wird ebenfalls die Methode run implementiert. Als Runnable-Objekt wird die Klasse angegeben, welche das Interface Runnable implementiert. Beide Varianten sind semantisch vollkommen identisch. 

In welcher Methode wird die eigentliche Arbeit eines Java-Threads ausgeführt?

In der Methode run, die über die Methode start aufgerufen wird.  

Welche Aufgabe hat ein Thread unter Windows?

Threads stellen die eigentliche Scheduling-Einheit des Windows-Betriebssystems dar. 

Kann es unter Windows sein, dass ein Thread mehreren Prozessen zugeordnet ist? Begründen Sie Ihre Entscheidung! 

Welche zwei grundsätzlichen Implementierungsmöglichkeiten für Threads gibt es?

Threads können auf der Benutzerebene sowie Kernelebene implementiert werden

Was sind die Vor- und Nachteile einer Thread Implementierung auf Benutzerebene?

Vorteil dieser Implementierungsvariante ist die hohe Effizienz, da beim Thread-Kontextwechsel kein Umschalten in den Kernelmodus notwendig ist. Nachteilig ist, dass alle Threads eines Prozesses blockieren, wenn ein Systemaufruf innerhalb eines einzelnen Threads blockiert. 

Welche Vor- und Nachteile hat die Implementierung eines Threads auf Kernelebene?

Von Vorteil ist beispielsweise, dass das Betriebssystem in der Lage ist, die Zuteilung der Rechenzeit über die Threads zu gestalten und so einen Prozess nicht unnötig zu blockieren. Mit dieser Implementierungsvariante kann man auch Multiprozessorsysteme besser unterstützen, da das Betriebssystem ablaufbereite Threads selbstständig auf die verfügbaren CPUs verteilen kann. Ein weiterer Vorteil für Kernel-Threads ist, dass ein Prozess nicht blockiert ist, wenn ein Thread innerhalb des Prozesses blockiert ist. Ein anderer Thread des Prozesses kann weiterarbeiten. 

Nachteilig ist beispielsweise, dass im Kernel implementierte Threads nicht so effizient sind, da sie sich bei jedem Thread-Kontextwechsel an den Kernel wenden müssen (Software-Interrupt). Weiterhin ist die größere Systemabhängigkeit von Nachteil.  

Beschreiben Sie einen einfachen Zustandsautomaten eines Prozesses!

Ein einfacher Zustandsautomat für einen Prozess hat vier Zustände. Im Zustand „bereit“ ist der Prozess zur Bearbeitung vorbereitet, im aktiven Zustand hat er eine CPU und im Zustand „blockiert“ wartet er auf Ressourcen, um weitermachen zu können. Im Zustand „beendet“ ist der Prozess dann schon nicht mehr im System vorhanden. Die Zustandsübergänge lassen sich wie folgt beschreiben: – bereit Æ aktiv: Das Betriebssystem wählt den Prozess aus (Aktivieren) – aktiv Æ bereit: Das Betriebssystem wählt einen anderen Prozess aus (Deaktivieren, Preemption, Vorrangunterbrechung) – aktiv Æ blockiert: Der Prozess wird blockiert (z. B. wegen Warten auf Input, Betriebsmittel wird angefordert) – blockiert Æ bereit: Der Blockierungsgrund wird aufgehoben (Betriebsmittel verfügbar) – aktiv Æ beendet: Prozessbeendigung oder schwerwiegender Fehler (Terminieren des Prozesses) 

Was ist ein „Zombie-Prozess“ unter Unix? 

Ein Zombie ist ein Prozess in einem speziellen Zustand. In diesen Zustand gelangt ein Prozess, der terminieren will. Er verweilt solange in diesem Zustand, bis der Elternprozess eine Nachricht über das Ableben des Kindprozesses erhalten hat und terminiert erst dann.

Was ist der Scheduling-Algorithmus Minimal Deadline First?

Bei „Minimal Deadline First“ wird der Prozess mit der kleinsten nächsten Zeitschranke (deadline) als erstes ausgewählt. 

Was ist der Scheduling-Algorithmus Polled Loop?

 

 Bei „Polled Loop“ werden alle Geräte (Ereignisquellen) zyklisch nach einem anstehenden Ereignis abgefragt und dieses wird dann gleich bearbeitet. 

Was ist der Scheduling-Algorithmus Interrupt-gesteuert?

Interrupt-gesteuerte Systeme warten z. B. in einer Warteschleife auf Interrupts von Ereignisquellen und führen dann die geeignete Interrupt-Service-Routine (ISR) aus. 

Was ist der Unterschied zwischen System- und Anwendungssoftware?

Die Systemsoftware wird benötigt, damit ein Rechner überhaupt funktionstüchtig ist. Diese besteht aus systemnaher Software und wird dazu benötigt, um mit der Hardware zu kommunizieren. Es besteht keine direkte Benutzerinteraktion. Die Anwendungssoftware dagegen, wird vom User zur Erledigung von Aufgaben verwendet. Darunter fallen Programme wie MS-Office etc.

Die Anwendungssoftware ist auf die Systemsoftware angewiesen und benötigt diese für einen ordnungsgemässen Ablauf. Gemeinsam haben die Software, dass diese beide auf dem Betriebssystem aufsetzen und durch dieses gesteuert werden. 

 

Was ist ein Interrupt und welche Arten unterscheidet man?

Ein Interrupt ist eine Unterbrechungsanforderung an das Betriebssystem. Diese dient dazu, Ereignisse abzufangen und somit die sequenzielle Programmausführung zu unterbrechen. Durch ein Interrupt wird eine Routine ausgeführt, welche sich Interrupt-Service-Routine (ISR) nennt. 

Es wird unterschieden zwischen asynchronen sowie synchronen Interrupts. Synchrone Interrupts. sind vorhersehbar und wiederholen sich Ereignisabhängig, während asynchrone Interrupts nicht Ereignisabhängig sind und individuell auftauchen können.

Als Beispiel für synchrone Interrupts sind System Calls zu nennen, während asynchrone Interrupts beispielsweise durch Drücken einer Taste ausgelöst werden können.

Was ist der Befehlssatz eines "Rechners" resp. einer CPU und in welchem Zusammenhang steht dies zu den Begriffen RISC und CISC?

Ein Befehlssatz definiert die Menge an Maschinenbefehlen, welche ein Prozessor ausführen kann. Die Begriffe RISC und CISC beziehen sich auf die Prozessorarten. 

RISC steht für "Reduced Instruction Set Computer und bedeutet, dass ein Rechner über einen reduzierten Befehlssatz verfügt, während CISC (Complex Instruction Set Computer) für einen Rechner mit einem komplexen Befehlssatz steht. 

Was ist das Mooresche Gesetz?

Das Mooresche Gesetz geht davon aus, dass ca. alle 18 Monate eine Verdoppelung der aktiven Komponenten eines Chips stattfindet.

Welche Voraussetzungen und Konzepte braucht es, damit ein Computer "arbeitet"?

Welche "Komponenten" (Hard- und Software) sind notwendig damit eine CPU sinnvolle Aufgaben erledigen kann?

Sämtliche, direkt der Architektur angelehnte Komponenten wie Speicherwerk, Ein-/Ausgabegeräte, Bus-System und natürlich das Betriebssystem, welches die Verwaltung übernimmt.

Was sind die wesentlichen Komponenten einer CPU-Architektur nach "von-Neumann" und wie arbeiten diese zusammen?

Sämtliche, direkt der Architektur angelehnte Komponenten wie Speicherwerk, Ein-/Ausgabegeräte, Bus-System und natürlich das Betriebssystem, welches die Verwaltung Die CPU-Architektur nach von-Neumann setzt sich aus folgenden Komponenten zusammen:·       Steuerwerk·       Rechenwerk·       Ein-/Ausgabe·       SpeicherwerkDie Komponenten sind über ein Bus-System miteinander verbunden. Wesentliches Merkmal ist, dass der von-Neumann-Rechner sequentiell arbeitet und somit Befehl um Befehl abarbeitet. Das Steuerwerk ist koordiniert die Komponenten und interpretiert die Befehle. Vom Speicherwerk werden die Befehle ins Steuerwerk geladen und anschliessend dem Rechenwerk für die Berechnung übergeben.

Was ist ein Programm?

Definition: Ein Programm bezeichnet eine Abfolge von Befehlen, die gesamthaft die Umsetzung einer oder mehreren Aufgaben ist.

Ein Programm wird in einer Programmiersprache wie u.a. C, Java, Python, Assembler erfasst und normalerweise in einer Datei abgelegt. Je nach Quellcode-Sprache, z.B. C, kann ein Programm dann mittels CCompiler, kompiliert und mit von ihm referenzierten Libraries gelinkt werden, damit es in der TargetMaschinensprache als ausführbare Datei vorhanden ist.

Ein Programm kann auch in einer Programmiersprache erfasst werden, die von einem Interpreter verstanden wird und dann so ausgeführt werden1 . Ein Programm ist also die statische Repräsentation der zu ausführende Aufgabe, die in der Quellcode implementiert ist.

Was ist ein Prozess?

Ein Prozess umfasst ist die Instanziierung eines Programms, ist also eine dynamische Repräsentation einer Aufgabe, das vom Betriebssystem verwaltet wird. Ein Prozess wird zuerst vom Betriebssystem erzeugt, sobald ein Programm gestartet wird. Der Prozess stellt einem Programm eine Ablaufumgebung (ein Kontext) bereit. Ein Prozess umfasst den ganzen Zustandsinformation eines laufenden Programms. Jeder Prozess hat seine eigene Hardwareregister-Werte wie z.B. für Befehlszähler, PSW (Prozess Status Word), Stapelzeiger (Stack pointer). Die Registerinhalte werden als Prozess Hardware Kontext bezeichnet. Ein Prozess hat seinen eigenen Datenbereich. Ein aktiver Prozess befindet sich im Hauptspeicher des Rechners. Ein Prozess hat mehreren Zuständen (bereit, aktiv, wartend, terminiert). 

Was ist der Zusammenhang zwischen Prozess und Programm?

Der Prozess kann als eine dynamische Instanziierung eines Programms betrachtet werden. Wenn ein Programm gestartet wird, erstellt das Betriebssystem ein Prozess als Laufumgebung für das Programm und das Programm-Code (Maschinencode) wird innerhalb des Prozesses (d.h. im Kontext des Prozesses) ausgeführt.

Was ist der Unterschied zwischen einem Prozess und einem Programm?

Ein Programm ist statisch. Es wird normalerweise in einer Datei auf einer Festplatte direkt angeschlossen oder im Netz gespeichert. Als statische Datei, aber es kann es nicht direkt vom System ausgeführt werden.

Ein Prozess hingegen ist dynamisch und wird für ein Programm durch das Betriebssystem erzeugt sobald das Programm gestartet wird (z.B. mittels eines «run»-Befehls auf ein Windows Kommandozeile, oder Doppelklick im GUI). Dadurch erzeugt das Betriebssystem einen Prozess (eine Laufumgebung/einen Programmkontext für das Programm) für das zu laufendem Programm und lädt das Programm im Hauptspeicher, damit es ausgeführt werden kann. In einem «Multiprocessing» Betriebssystem könnte das gleiche Programm mehrmals gestartet werden. Es könnte also zu einer bestimmten Zeit für ein Programm mehrere Prozesse geben.

Ein Programm kann auch dazu führen, dass mehrere Prozesse ausgelöst werden, z.B. das Betriebssystem ist ein Programm, dass mehrere Prozesse erzeugt. Beim Starten eines Programms wird immer zuerst ein Hauptprozess für das Programm erzeugt. 

Welche Bedeutung hat der Process control block bei der Prozessverwaltung? 

Das Betriebssystem verwaltet eine Prozesstabelle. Für jeden erzeugten Prozess wird einen PCBEintrag in der Prozesstabelle erstellt. Somit ist der Prozessverwaltung des Betriebssystems in der Lage die laufenden Prozesse verwalten. Das ist der Basis eines «Multiprocessing Betriebssystems». In der Prozesstabelle ist der Status allen Prozessen bekannt. Jeder Prozess ist mit einer numerischen, eindeutigen Identifikation (PID) versehen.

Was sind Prozessstatusdaten, welche im PCB abgespeichert werden?

Prozessstatusdaten definieren den Status eines Prozesses, wenn dieser angehalten wird, sodass das Betriebssystem ihn später neu starten kann. Dies umfasst immer den Inhalt von CPU-Registern, das CPU-Prozessstatuswort, Stapel- und Frame-zeiger usw. Während des Kontextwechsels wird der laufende Prozess gestoppt und ein anderer Prozess ausgeführt. Das Kernel muss die Ausführung des laufenden Prozesses stoppen, die Werte in Hardwareregistern auf seine PCB kopieren und die Hardwareregister mit den Werten von der PCB des neuen Prozesses aktualisieren.

Welche Angaben werden vom Betriebssystem im Bezug auf den

Prozess-Scheduling-Status gespeichert?

• Der Status des Prozesses in Bezug auf "Bereit", "Angehalten" usw. sowie andere Schedulinginformationen, wie z. B. der Prioritätswert, die Zeit, die vergangen ist, seit der Prozess die Kontrolle über die CPU erlangt hat oder seitdem es wurde ausgesetzt. Im Falle eines angehaltenen Prozesses müssen Ereignisidentifikationsdaten für das Ereignis aufgezeichnet werden, auf das der Prozess wartet.

• Informationen zur Prozessstrukturierung - die untergeordneten IDs des Prozesses oder die IDs anderer Prozesse, die auf funktionale Weise mit dem aktuellen Prozess in Beziehung stehen und als Warteschlange, Ring oder andere Datenstrukturen dargestellt werden können

• Interprozess-Kommunikationsinformationen - Flags, Signale und Nachrichten, die mit der Kommunikation zwischen unabhängigen Prozessen verbunden sind

• Prozessberechtigungen - Erlaubter / unzulässiger Zugriff auf Systemressourcen

• Prozessstatus - neu, bereit, laufend, wartend, tot

• Informationen zur CPU-Scheduling - Informationen zur Scheduling der CPU-Zeit

• Speicherverwaltungsinformationen - Seitentabelle, Speicherbeschränkungen, Segmenttabelle

• Buchhaltungsinformationen - Menge der für die Prozessausführung verwendeten CPU, Zeitlimits, Ausführungs-ID usw.

• E / A-Statusinformationen - Liste der dem Prozess zugewiesenen E / A-Geräte. 

Der Scheduler ist mit eines der wichtigsten Komponenten eines modernen Betriebssystems Was sind die Aufgaben des Schedulers?

Der Scheduler ist eine Komponente eines Prozessmanager, die dafür sorgt, dass alle Prozesse in der Prozesstabelle den Ressource CPU Rechenzeit immer wieder zugeteilt werden, damit mehrere Prozesse quasi parallel ausgeführt werden können.