Wissenstest freiberuflichkeit Informatik

Vorbereitung zum Wissenstest für die Anerkennung der freiberuflichen Tätigkeit.

Vorbereitung zum Wissenstest für die Anerkennung der freiberuflichen Tätigkeit.


M. S.
Diese Lernkarten bieten einen umfassenden Überblick über die Grundlagen der Informatik auf Universitätsniveau, mit Fokus auf Betriebssysteme, Prozesse, Programme und Systemarchitekturen. Sie decken Themen wie die OSI-Schichten, Datenbanken, objektorientierte Programmierung und Netzwerkprotokolle ab. Ideal für Studierende und IT-Profis, die ihr Wissen in diesen Bereichen vertiefen möchten.
Karten
77
Lernende
1
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
17.11.2014 / 29.11.2014

Lernkarten

Was sind Quantengatter

Beim klassischen Computer werden durch Logikgatter (engl. Gates) elementare Operationen auf den Bits durchgeführt. Mehrere Gatter werden zu einem Schaltnetz verbunden, das dann komplexe Operationen wie das Addieren zweier Binärzahlen durchführen kann. Die Gatter werden dabei durch physikalische Bauelemente wie Transistoren realisiert und die Information als elektrisches Signal durch diese Bauelemente geleitet.

Berechnungen auf einem Quantencomputer laufen grundsätzlich anders ab: Ein Quantengatter (engl. Quantum Gate) ist kein technischer Baustein, sondern stellt eine elementare physikalische Manipulation eines oder mehrerer Qubits dar.

Formal gesprochen ist ein Quantengatter eine unitäre Operation , die auf den Zustand des Quanten-Registers wirkt:

Mathematisch ist auch ein Quanten-Schaltkreis eine unitäre Transformation, deren Matrix einfach das Produkt der Matrizen der einzelnen Quantengatter ist.

Logikgatter

 

Ein Logikgatter, oder auch nur Gatter (engl. gate), ist ein elektronisches Bauelement für die Realisierung einer Booleschen Funktion, das Eingangssignale zu Ausgangssignalen verarbeiten kann.

Die Eingangssignale werden durch Implementierung logischer Operatoren, wie UND, ODER oder NICHT, zu einem einzigen logischen Ergebnis umgewandelt und durch die Ausgabesignale abgebildet. Für die Implementierung gibt es jedoch unterschiedliche Möglichkeiten

 

Gatter-Typen

 

 

NOT, NICHT-Gatter

AND, UND-Gatter und wird auch als Konjunktion bezeichnet.

NAND, NAND-Gatter (NICHT UND)

OR, ODER-Gatter

NOR, NOR-Gatter (NICHT ODER)

XOR, XOR-Gatter (Exklusiv-ODER, Antivalenz)

XNOR XNOR-Gatter (Nicht-Exklusiv-ODER, Äquivalenz)

 

 

Aufgaben eines Betriebssystems

Betriebssysteme erfüllen eine oder mehrere der folgenden Aufgaben:

Abstraktion: Technische Einzelheiten der Rechner-Hardware werden vom Betriebssystem so gekapselt, daß sie weder dem Bediener noch dem Anwendungsprogrammierer sichtbar sind

Wohldefinierte Schnittstelle fiir Anwndungsprogramme: Diese Schnittstelle erlaubt es Anwendungsprogrammierern, die Dienste des Betriebssystems zu nutzen. Dafür hat sich die Bezeichnung API (application programming interf'ace) eingebürgert

Koordination und Zuteilung von Betriebsmitteln bei konkurrierend ablaufenden Programmen: Dies ist die Kernaufgabe eines Betriebssystems mit Mehrprozessbetrieb. Wichtigste Betriebsmittel sind Prozessorkapazität. Hauptspeicher, Hintergrundspeicher und das Zugriffsrecht auf die E/A-Einheiten.

Schutz mehrerer gleichzeitig oder nacheinander aktiver Benutzer: Betriebsysteme. die für Mehrbenutzerbetrieb ausgelegt sind. müssen vor allem sicherstellen. daß Anwendungsprogramme die Systemintegrität nicht verletzen können.

Bedienschnillstelle für Systemverwalter und Benutzer: Diese Schnittstelle kann in Form eines Kommando-Interpretierers oder auch als grafische Bedienschnittstelle ( .. Oberflüche'") realisiert sein. Da die Bedienschnittstelle nicht dem Betriebssystemkern zugerechnet wird. bezeichnet man sie auch als Shell. Für grafische Bedienschnittstellen hat sich die Abkürzung GUI (graphimluser inteJface) eingebürgert.

Prozesse

Ein Pro:eß ist der Ablauf eines sequentiellen Programms in einer Rechenanlage. Der Unterschied zum Begriff des Programms liegt dabei in der zeitlichen Dimension: Während ein Programm eine statische Handlungsvorschrift darstellt, ist der Prozeß durch seinen zeitlich veränderlichen Zustand gekennzeichnet. Der Gedanke eines zeitlichen Ablaufs wird durch den ebenfalls üblichen Begriff Faden bzw. Handlungsfaden (thread. thread of control) betont.

Aus der Sicht des Anwendcrs sind Prozesse die "Handlungsträger" in einer Rechenan) a!!e: aus der Sicht des Betriebssystems sind es die Objekte, denen die Prozessorkapazität verteilt wird. Alle modernen Betriebssysteme sind in der Lage, zu einem Zeitpunkt mehrere Prozesse zu verwalten; dies wird als Mehrprozeßbetrieb (multiprogramming. multirasfing) bezeichnet. Dabei ist es unerheblich, ob die Rechenanlage über mehrere Verarbeitungseinheiten verfügt, ob es sich also um einen Multiprozessor handelt, oder ob die Bearbeitung der Prozesse sequentialisiert wird. Dieser Fall heißt Nebenläufigkeit (concurrency).

Bild I zeigt mögliche Bearbeitungssequenzendreier nebenläufiger Prozess

Prozeßverwaltung

1 Start: Der Prozeß wird im Betriebssystem aktiv. Er ist zunächst bereit und konkurriert um den Prozessor.

2 Zuteilung: Der Prozessor wird dem Prozeß zugeteilt. Der Prozeß wird nun bearbeitet.

3 Verdrängung: Das Betriebssystem entzieht dem Prozeß den Prozessor, weil ein anderer Prozeß bearbeitet werden soll. Zuteilungsstrategien. die diese Maßnahme realisieren, heißen

verdrängend oder präemptil·. In einigen. eher einfachen, Betriebssystemen mußdiese Maßnahme explizit im Programm des Prozesses vorgesehen werden; diese Strategie wird als kooperativ bezeichnet. Bei verdrängenden Strategien kann dagegen jede Aktivierung des Betriebssystems. etwa eine Unterbrechung durch den Systemzeitgeber eine Verdrängung ermöglichen. Bei einfachen Systemen existiert dieser Überganggar nicht (nichtpräemptiv).

4 Wartebedingung: Der Prozeß erklärt dem Betriebssystem, daß er auf ein Ereignis wartet;er gibt damit den Prozessor auf. Das Ereignis kann zum Beispiel die Verfügbarkeit eines Eingabewertes aus einer Eingabe-Operation oder der Ablauf einer Wartezeit sein. Eine Fortsetzung der Verarbeitung ist nicht möglich, bevor das Ereignis eingetreten ist.

5 Wartebedingung erfüllt: Das Ereignis ist eingetreten, der Prozeß kann weiterlaufen. Damit wird er aber nicht unmittelbar rechnend. sondern zunächst nur rechenbereit.

6 Beendigung: Der Prozeß hat die Ausführung seines Programms beendet; er meldet sich beim Betriebssystem ab. Daneben ist auch der zwangsweise Abbruch der Bearbeitung durch das Betriebssystem oder einen anderen Prozeß möglich; ein solcher Abbruch kann auch aus dem Bereit-Zustand heraus eintreten.

Prozeßleitblock (process control block. PCB)

Das Betriebssystem faßt diese Information bzw. Referenzen darauf in einer prozeßspezifischen Datenstruktur  zusammen,  die gewöhnlich  als Prozeßleitblock (process control block. PCB) bezeichnet wird. Dieser Prozeßleitblock repräsentiert den Prozeß im System und ist  eine der wichtigsten  Datenstrukturen  im Betriebssystem.  Die Prozeßleitblöcke rechenbereiter Prozesse werden in einer oder in mehreren Warteschlangen (ready queue) verwaltet: andere Warteschlangen enthalten wartende Prozesse. Pro Prozessor existiert ein Zeiger. der auf den Prozeßleitblock des rechnenden Prozesses verweist.

Leichtgewichtige Prozesse (threads)

Leicht!!ewichtige Prozesse bieten den Vorteil, daß nebenläufige Vorgänge innerhalb eines Anwendungsprogramms elegant darstellbar sind. Beispiel ist ein Dienstprogramm, das nebenläufig mehrere Anfragen bearbeitet. Leichtgewichtige Prozesse können andere , weniger klar definierte Konstrukte für Nebenläufigkeit wie Signale oder asynchrone E/ A Operationen ersetzen und damit den korrekten Entwurf nebenläufiger Programme erleichtern.

Gegenseitiger Ausschluß (mutual exclusion).

Dies ist die Forderung nach gegenseitigem Ausschluß:

Befehlsfolgen, die unter gegenseitigem Ausschluß ausgeführt werden müssen, heißen kritische Bereiche. Zweckmäßige Implementierungen von gegenseitigem Ausschluß variieren mit der Situation:

Unterbrechungssperre ( interrupf disable ). In einer Monoprozessor-Umgebung genügt das Sperren gegen Unterbrechungen (interrupts), um überlappende Ausführung nebenläufiger Prozesse auszuschließen. Dabei werden Konflikte zwischen einem Prozeß und einer Unterbrechungsbehandlung vermieden, aber auch Konflikte zwischen Prozessen: denn ohne Unterbrechung kann es im Monoprozessor nicht zu einem asynchronen Prozeßwechsel kommen. Solche Sperren werden gewöhnlich für kurze kritische Bereiche innerhalb von Betriebssystemen oder in maschinennahen Programmen verwendet. Für Benutzerprozesse in Universalbetriebssytemen sind sie nicht geeignet.

Verdrängungssperren (preemption locks). Diese arbeiten analog zur Unterbrechungssperre, wirken jedoch nicht auf Unterbrechungen, sondern lediglich auf andere Prozesse wobei die Sperrfunktion vom Betriebssystem realisiert wird. Ihr Effekt besteht darin,einen Prozeßwechsel zu verhindern.

Verklemmung (deadlock).

 

Unter die sem Begriff versteht man eine Blockade. die durch eine zyklische Abhängigkeit hervorgerufen wird. Sie führt dazu, daß alle beteiligten in ihrem Wartezustand verharren. Solche Verklemmungen treten leicht auf, wenn Prozesse mehrere Betriebsmittel belegen müssen und die Belegung nacheinander ausführen.

Angenommen. Prozeß P1 besitzt ein Semaphor S1 und benötigt Semaphor S2• Prozeß P2 besitzt dagegen S2 und benötigt S1 so ist eine Verklemmung eingetreten: beide Prozesse können nicht weiterlaufen. Wenn eine solche Verklemmung eingetreten ist, so ist sie nur dadurch aufzulösen. daß ein Prozeß seine Betriebsmittel von sich aus wieder aufgibt dazu ist eine Erkennung der Verklemmung notwendig .

 

Speicherverwaltung

Systeme mit Mehrprozeßbetrieb konfrontieren den Systementwickler mit dem Problem, den Vorhandenen Speicher unter den Prozessen aufzuteilen. Dabei ergeben sich mehrere Schwierigkeiten:

Dynamische Freispeicherenmltung

Adressierung

Heute üblich ist die Adreßübersetzung mit Hardware-Unterstützung durch eine Adreßiibersetzungseinheit (memory managemellf unit, MMU). Dabei wird die im Programm sichtbare Virtuelle Adresse in eine reale Adresse transformiert

Auf Compiler-Ebene ist es möglich, Maschinencode so zu erzeugen. daß Adreßreferenzen immer relativ zum Stand des Befehlszählers angegeben werden

In modernen Systemen findet sich grundsätzlich ein Konzept, das alle genannten Schwierigkeiten recht elegant löst: Virtueller Speicher. Andere Ansätze haben praktisch kaum noch Bedeutung. so daß sie hier nicht ausgeführt werden.

Virtueller Speicher

Der reale Speicher wird in eine große Anzahl von (meist gleich großen) Seiten unterteilt. Die Größe der Seite ist eine Entscheidung der Systementwickler;  typische Werte liegen zwischen 4 KByte und32 KByte

Die Adressierung erfolgt mit rirfllellen Adressen, die von der Adreßübersetzungseinheit (memory management unit, MMU) in reale Adressen (real adclress, physical address) umgesetzt werden

Schutzmechanismen lassen sich ebenfalls leicht mit diesem Schema realisieren. Dies kann dadurch eneicht werden, daß eine Adreßübersetzungstabelle nur für einen bestimmten Prozeß gilt und vor dem Zugriff des Anwenderprogramms geschützt ist; sie ist ausschließlich dem Betriebssystem zugänglich. Da ein Zugriff auf reale Adressen nur über eine solche Tabelle erreicht werden kann, entscheidet allein das Betriebssystem über die Zugriffsrechte von Prozessen auf reale Speicherseiten.

Die Zuteilung von realen Speicherseiten erfolgt at({Allf'orderung durch einen Zugriff auf eine virtuelle Adresse; dieses Verfahren wird als Demand Paging (engl. to page: aufrufen,

anfordern) bezeichnet.

Seitenverwaltung in Systemen mit virtuellem Speicher

Verfahren, die die Prozeßzugehörigkeit berücksichtigen, bezeichnet man auch als lokale Ersetzungsstrategien. Die Alternative sind globale Strategien, die die zu ersetzende Seite aus der Gesamtmenge der eingelagerten Seiten auswählen. Für die Auswahl selbst wird dann eines der ersten beiden Kriterien herangezogen. Einige bekannte Verfahren sind:

• FIFO (jirst in.first out): Die eingelagerten Seiten werden in einer verketteten Liste in der Reihenfolge ihrer Einlagerung verwaltet; die erste Seite in dieser Liste wird ausgelagert. Das Verfahren ist einfach, führt aber offensichtlich zu einigen Fehlentscheidungen mit der Folge einer hohen Fehlerrate

• LRU (least recently used): Die eingelagerten Seiten werden in einer verketteten Liste in der Reihenfolge des letzten Zugriffs verwaltet; die erste Seite in dieser Liste wird ausgelagert. Dieser Ansatz führt zu einer sehr geringen Fehlerrate, da nicht benötigte Seiten bevorzugt ausgelagert werden. Die Liste muß jedoch bei jedem Speicherzugriff aktualisiert werden; der Aufwand dafür ist so hoch, daß das Verfahren in der beschriebenen Form nicht brauchbar ist. In einigen wenigen Systemen wird LRU durch die Hardware unterstützt.

• NRU (not recently used): Das Verfahren durchläuft zyklisch mit vorgegebenem zeitlichen Abstand die verkettete Liste der Seiten und prüft an Hand der Seitentabelle, ob die Seite seit dem vorigen Durchlauf benutzt wurde. Falls nicht, ist die Seite Kandidat für eine Ersetzung. Dies ist eine grobe Approximation von LRU, die zu akzeptablen Ergebnissen führt. Die verwendete Zugriffsinformation wird von der Adreßübersetzungseinheit bei jedem Zugriff bereitgestellt. Es existieren einige Varianten dieses Ansatzes, z.B. die Algorithmen Secrmd Chane(! oder Clock [Tanenbaum 01].

• NFU (not.frequently used): Eine Erweiterung von NRU, die eine bessere Annäherung an LRU ergibt. Bei jedem Durchlauf der Liste wird die Wertigkeit einer Seite abgeschützt. indem aus den Zugriffen in den vergangenen Perioden eine skalare Größe ermittelt wird. Dabei werden jüngere Zugriffe höher bewertet als ältere Zugriffe (oging). Die Seite mit der geringsten Wertigkeit wird ersetzt.

Seitenauslagerung.

Wenn Seiten, die vom Programm modifiziert wurden. ausgelagert werden, so müssen diese Daten auf einem Hintergrundspeicher gehalten werden. Dieser Auslagerungsbereich ist für die Leistung des Systems kritisch und muß vom Betriebssystemeffizient verwaltet werden. Es ist daher üblich. eine eigene Partition auf einer Festplatte zu reservieren. in der die Auslagerung unter Umgehung des Dateisystems erfolgen kann. Für diesen Zweck sollte die schnellste Festplatte eines Rechnersystems eingesetzt werden: unter Umständen ist auch die Plazierung der Partition auf der Festplatte für die Leistung wichtig

Segmentierter Speicher.

Segmentierung ist eine weitere Technik, um den Hauptspeicher zu strukturieren: sie ist unabhängig von der Nutzung eines virtuellen Speichers, kann also ohne diesen oder zusätzlich zu diesem realisiert sein. Segmente sind Adreßbereiche variabler Länge, die für das Programm. anders als der virtuelle Speicher. sichtbar sind.

Die heute verbreiteten Mikroprozessoren besitzen meist keine Unterstützung flir Segmente. mit Ausnahme der Intel-x86-Familie. Portierbare Betriebssysteme machen daher von Segmenten keinen Gebrauch.

Dateisystem

 

Eine Datei ist eine Sammlung von Daten, die auf einem Permanentspeicher gehalten wird. Das Dateisystem stellt einen Abstraktionsmechanismus dar, um Daten auf einem Speichermedium in geeigneter Form zugänglich zu machen ohne daß der Benutzer mit den Details der Datenablage befaßt ist. Gleichzeitig bietet es einen Schutzmechanismus, der sicherstellt, daß Daten nur von Anwendern gelesen oder geändert werden dürfen, die dazu berechtigt sind.

Logische Struktur von Dateisystemen -> Verzeichnisbaum

Die Hicrarchie der Verzeichnisse in einem solchen Dateisystem heißt Verzeichnisbaum

Treiberschnittstelle (DDI. device driver interface)

jedes Betriebssystem definiert seine eigene Treiberschnittstelle (DDI. device driver interface) die zusätzlich vom Versionsstand des Systems abhängig sein kann, was die Bereitstellung von Treibersoftware erschwert.

Für Systeme auf der Grundlage von Unix SVR+ wurde diese Schnittstelle unter der Bezeichnung DDI/DKI (device driver interface/drver kernel interface dokumentiert und veröffentlicht [Pajari 91]. Die Treiberschnittstelle von Linux Version 2.-t. ist in Rubini 05 beschrieben.

Deutlich anders ist das DDI-Modell von Microsoft Windows (WDM. Window's driver model), das durch ein besser strukturiertes WDF-Framework (Windows Driver foundation) abgelöst wird. WDF ermöglicht auch die Anhindung von Treibern, die im nichtprivilegierten Modus ablaufen können. 

Dateisysteme

 

FAT,  Bei der extemen Verkettung wird eine Hilfstabelle (FAT.file allocation table) benutzt

NTFS. (New Technology File System) dem Dateisystem von Microsoft Windows. wird jede Datei eines Datenträgersdurch einen Datensatz (Länge 1 kByte) beschrieben: die Datensätze für alle Dateien sind in einer zentralen Metadatei (MFT. master .file table) zusammengefaßt.

Die Hauptdatei ist die Master File Table, kurz MFT. In dieser Datei befinden sich die Einträge, welche Blöcke zu welcher Datei gehören, die Zugriffsberechtigungen und die Attribute. Zu den Eigenschaften (Attributen) einer Datei gehören unter NTFS Dateigröße, Datum der Dateierstellung, Datum der letzten Änderung, Freigabe, Dateityp und auch der eigentliche Dateiinhalt.

HFS+ Apple Dateisystem / Unix 

 

Schutzmechanismen

Schutzmechanismen sind notwendig, um die Sicherheit der Daten vor unbefugtem Zugriff. die Integrität der Daten und Programme, sowie die Verfügbarkeit der Rechenanlage zu gewährleisten.

Die Entwurfsprinzipien für Sicherheitsmaßnahmen sind:

• Das Sicherheitskonzept muß einfach und übersichtlich sein, um es nachvoll ziehbar oder, besser, beweisbar zu machen.

• Das. Sicherheitskonzept muß geschlossen sein, das heißt, es darf nicht durch Maßnahmen. die außerhalb des Konzeptes liegen, umgangen werden können.

• Das. Konzept darf nicht darauf beruhen, daß seine Arbeitsweise geheimgehalten wird.
• Die Rechte eines Programnu, oder Benutzers zum Zugriff auf Betriebsmittel sollen minimal sein (Need-to-know-Prinzip).

• Die Sicherheitsmechanismen dürfen die Benutzbarkeit des Systems nicht unzumutbar einschränken.

Sicherheitskonzepte

Die klassischen Sicherheitskonzepte in Betriebssystemen unterscheiden Subjekte (Benutzer. Prozesse, ... ). Objekte (Speicherbereiche. Dateien, ... ) und Operationen (Lesen, Schreiben .... ). Subjekte dürfen bestimmte Operationen auf eine begrenzte Menge von Objekten ausführen . Die Menge dieser Operationen. bezogen auf die Objekte. heißt Schutzbereich (protection dnmain).

Sind diese Bedingungen erfüllt , so wird ein Schema benötigt. um die Berechtigungen zu verwalten. Dies kann auf der Basis der Objekte oder der Subjekte erfolgen:

• ACLs (access controllists) sind Listen. die für ein gegebenes Objekt spezifizieren. welches Subjekt welche Operation ausführen darf. Die Liste kann beliebig viele Einträge haben: damit ist eine genaue und feingranulare Kontrolle möglich. Windows ist ein Beispiel für ein System. das ACLs einsetzt.

Eine vereinfachte und wesentlich weniger präzise Form der objektbasierten Berechtigung findet sich im Dateisystem von Unix:

Hier kann nur für den Eigentümer der Datei. die Mitglieder einer Benutzergruppe und die Menge der restlichen Benutzer des Rechensystems spezifiziert werden. welche Operationen sie auf dieser Datei au sführen dürfen.

• Capabilities spezifizieren dagegen die Berechtigung eines Subjekts, auf ein bestimmtes  Objekt zu zugreifen. Auch diese werden gewöhnlich in einer Liste verwaltet. wobei jeder Eintrag eine Referenz auf das Objekt und die Menge der zugelassenen Operationen angibt. Hier muß natürlich sichergestellt werden, daß das Subjekt die Liste nicht in unzulüssiger Weise manipuliert. Sie wird daher entweder vom Betriebssystem geschützt. wie die Paßwort-Datei von Unix, oder die Capabilities werden verschlüsselt. VerschiLisseite Capabilities eignen sich gut für verteilte Betriebssysteme. da die Instanzen eines verteilten Programms die selbst verwalten können. Paßwörter können als ein Sonderfall solcher Capabilities angesehen werden

Sicherheitslücken (Vulnerabilities)

• Auslesen von Informationen aus Speicherbereichen, die freigegeben. aber nicht wirklich gelöscht wurden.
• Unterbrechen der Identifizierungagsprozedur; dies kann dazu führen, daß die Anmeldung fälschlicherweise als erfolgreich akzeptiert wird.
• Das Betriebssystem wird durch ein unerwartetes Verhalten, etwa falsche Eingaben, in einen inkonsistenten Zustand versetzt. Prominentes Beispiel ist das Erzwingen eines Pufferüberlaufs in einigen privilegierten Unix-Programmen; das kann dazu führen, daß der Kellerspeicher überschrieben wird. Durch definiertes Ändern des Kellers können dort abgelegte Rücksprungadressen geändert und so beliebige Befehlsfolgen unter Umgehung jeglicher Schutzmaßnahmen ausgeführt werden.
• Einige Systemprogramme weisen Schlupflöcher auf, die für spezielle Zwecke eingebaut und vermeintlich geschützt sind. Dieser Schutz basiert oft lediglich auf dem Geheimnisprinzip: Wenn der Mechanismus bekannt wird, ist er wirkungslos.

• Trojanische Pferde sind Programme, die das Verhalten eines bekannten, vertrauenswürdigen Programms imitieren, dann aber als Angreifer auftreten. Teilweise kommen auch unerwünschte Programme im Schatten eines erwünschten Programms mit. werden also von der Installationsroutine gemeinsam mit diesem installiert.

Sicherheitslücken

Solche Sicherheitslücken ermöglichen dann unterschiedliche Angriffsszenarien:

• Spionage-Software (spyWare) sammelt unautorisiert Daten in ihrem Wirtssystem und sendet diese unbemerkt über eine bestehende Internet-Verbindung an ihren Urheber. In gravierenden Fällen kann es sich um sensible Zugangsinformationen handeln, mit denen materieller Schaden angerichtet wird. Sehr verbreitet ist die Nutzung von Spionage zur Sammlung von Daten, die etwa zur Erstellung von Nutzungsprofilen und für Werbezwecke verwendet werden.

• Ein Wurm ist ein Programm, das sich unautorisiert von Rechner zu Rechner fortpflanzt. Kann Schaden anrichten, z.B. Daten löschen, oder Spionage-Software enthalten.

Auch ohne solch eine Komponente ist ein Wurm schädlich, weil unkontrolliert Ressourcen verwendet werden.

• Bei Viren besteht die Besonderheit darin, daß sie nach dem Eindringen in die Anlage andere Programme verändern, um sich so fortzupflanzen. Das Eindringen basiert darauf. daß ein mit einem Virus versehenes Programm aufgerufen wird. Viren haben Ieichtes Spiel in Betriebssystemen, in denen Dateien, speziell solche mit Programmcocle, ungeschützt sind.

• Angriffe auf die Verfügbarkeit (denial of Service attacks) zielen darauf ab, ein System durch Überlastung lahmzulegen. Sie sind bei vernetzten Systemen nicht leicht zu verhindern, da ein eigentliches Eindringen in das Zielsystem nicht erforderlich ist. Vielmehr wird der Netzanschluß des Zielsystems mit Datenpaketen überflutet. Dies wird teilweise durch Würmer oder Viren erreicht, die zum Ziel haben, die befallenen Wirtssysteme zum Angreifer zu machen.

Bedienschnittstelle

Der Begriff "Bedienschnittstelle" bezieht sich hier auf zwei Funktionalitäten:

• Gralische Oberflächen, die es ermöglichen. bei der Bedienung des Rechners mit grafischen Abstraktionen zu arbeiten, also etwa mit Fenstern. Diese Funktionen werden als Teil des Betriebssystems oder systemnahe Software-Komponente realisiert; ihre Funtionen werden jedoch auch von Anwendungsprogrammen genutzt. Sie werden auch als GUI. graphicaluser intelface. bezeichnet. 

• Systemprogramme. die die interaktive Ausführung von Systemfunktionen gestatten; in Anlehnung an Unix

werden diese meist als Shell bezeichnet. Solche Kommando-lnterpretierer können auf der Basis von Texteingaben bedient werden. oder sie nutzen grafische Abstraktionen und benutzen die entsprechenden Systemfunktionen

Grafische Oberflächen

Anwendungsprogramme, die eine grafische Oberfläche nutzen. kommunizieren mit dem Grafiksubsystem über eine bidirektionale Schnittstelle. Das heißt, Aktionen können sowohl vom Programm als auch vom Bediener ausgelöst werden. wenn dieser etwa mit der Maus ein Fenster anklickt. Der erste Fall ist eine Anforderung (request), wie eingewöhnlicher Prozedur- oder Betriebssystemaufruf; der zweite Fall wird als Ereignis (elvent) bezeichnet. Bei Auftreten solcher Ereignisse muß über einen geeigneten Mechanismus eine diesem zugeordnete Routine (event handler) ausgeführt werden.

Kommando-Interpretierer (shell)

Kommando-Interpretierer dienen der eigentlichen Bedienung der Rechenanlage; sie erst ermöglichen die Arbeit mit dem Rechner und den Start von Programmen. Als Bedienparadigmen kommen in Frage:

Kommandosprachen: Hier werden Kommandos in Form von Programmnamen und Parametern textuell eingegeben.

Textuelle Menüs, Masken: Die Freiheit des Bediencrs wird hier bewußt eingeschränkt, indem ihm nur wenige Möglichkeiten angeboten werden.

Grafische Oberfläche mit Zeigegerät (Maus) und Schreibtisch-Funktion: Dieses Paradigma setzt ein fensterbasiertes Grafik-Subsystem voraus.

Echtzeitbetriebssysteme

Dies sind Betriebssysteme zum Einsatz in Echtzeitsystemen, oft auch verallgemeinert solche zum Einsatz in technischen Systemen (embedded systems). Besondere Anforderungen sind:

• Das Betriebssystem muß Anwendungen ermöglichen, die mit einem technischen System kommunizieren. Insbesondere muß die Anwendung Geräte ansteuern und auf Unterbrechungsanforderungen reagieren können.

• Die Reaktionszeiten des Computers müssen bekannt und nach oben begrenzt sein:
Operationen dürfen also durch das Betriebssystem nicht oder nicht wesentlich verzögert werden. Wichtige Kenngröße ist hier die Interrupt-Latenz, also der Verzögerung nach der Unterbrechungsanforderung bis zur Ausführung der entsprechenden Software-Routine. Mindestanforderung ist fast immer ein präemptiver Kern, d. h. die
Fähigkeit des Systems, Prozesse während der Ausführung von Betriebssystemfunktionen verdrängen zu können.

• Die für zeitgesteuerten Betrieb notwendigen Betriebssystemfunktionen müssen vorhanden sein.

Betriebssysteme für verteilte Rechensysteme

Ein verteiltes System ist ein Rechensystem. das aus mehreren kooperierenden Computern besteht. Beispiele für verteilt organisierte Funktionen sind:

• Verteilte Synchronisationsmechanismen
• Ortstransparente Kommunikationsmechanismen
• Verteiltes Dateisystem
• Verteilte Benutzerverwaltung
• Verteilte gemeinsame Daten

Verteilte Systeme können aus gleichartigen. autonomen Rechnern bestehen oder aus unterschiedlichen Systemen mit speziellen Funktionen. Unabhängig davon wird bei der Realisierung einer Funktion meist das Client-Server-Paradigma benutzt. Der Server erbringt einen Dienst. der vom Client benutzt wird. Man beachte, daß sich dies auf einzelne Funktionen bezieht: ein Computer kann für eine bestimmte Funktion ein Client. für eine andere Funktion ein Server sein .

Systemaufrufe

Systemaufrufe entsprechen konzeptionell gewöhnlichen Prozeduraufrufen; sie unterscheiden
sich von diesen dadurch, daß mit dem Systemaufruf ein Eintritt in den privilegierten
Systemkern einhergeht, sofern ein solcher Kern existiert. Dafür muß ein besonderer
Mechanismus verwendet werden, der nicht nur das Auflösen von Adreßreferenzen
ersetzt. sondern auch eine Umschaltung des Prozessorzustandes in den privilegierten
Modus ermöglicht.

Konfiguration

Durch die Standardisierung der PC-Architektur und die Vielzahl der angebotenen Hardware-

Komponenten sind so extrem viele Varianten möglich . Außerdem besteht hier die

Marktanforderung, daß die Systemkonfiguration möglichst ohne Fachwissen durchgeführt

werden kann . Daher entwickelte Microsoft für die PC-Architektur ein Konzept für

die automatische Systemkonfiguration. das nicht nur bei der Installation automati sch die

Systemkonfiguration automatisch durchführt, sonelern diese auch bei jedem Neustart

sowie im Iaufenden Betrieb anpaßt. wenn sich die Hardware-Konfiguration ändert. Dieses

Konzept ist unter der Bezeichnung PIug and Play bekannt.

Echtzeitsystem

Ein Echtzeitsystem ist ein Computersystem, das ein beabsichtigtes Resultat innerhalb
eines spezifizierten Zeitintervalls produzieren muß. Die Richtigkeit der Funktion eines
Echtfeitsystems hängt also von seinem Verhalten im Wertebereich und im Zeitbereich ab.

Echtzeitsysteme sind immer in eine Umgebung eingebettet, deren Dynamik das geforderte
Zeitverhalten des Computers bestimmt. Man unterscheidet zwischen harten und
weichen Echtzeitsystemen.


 

 

Harte Echtzeitsysteme

Harte Echtzeitsysteme (Hard real-time systems) sind solche, bei denen ein Fehler im
Zeitbereich zu katastrophalen Folgen führen kann. Bei harten Echtzeitsystemen ist ein
Fehler im Zeitbereich genauso kritisch wie ein Fehler im Wertebereich. Ein Beispiel
für ein hartes Echtzeitsystem ist ein computergesteuerter Herzschrittmacher. Nur wenn
da.s Binärsignal Herzschlag stimulieren zum richtigen Zeitpunkt ausgegeben wird, ist
die Funktion des Computersystems korrekt.

Weiche Echtzeitsysteme

Weiche Echtzeitsysteme (soft real-time systems) sind solche, bei denen die potentiellen
Kosten eines Fehlers in der gleichen Größenordnung sind wie der Nutzen des Systems
im Normalbetrieb. Ein Beispiel für ein weiches Echtzeitsystem ist eine Anlage zum
Sortieren von Briefen. Wenn ein Brief auf Grund eines Zeitfehlers des Computers in
einem fabchen Behälter landet, so hält sich der Schaden in Grenzen

Anforderungen an Echtzeitsysteme

Rechtzeitigkeit

Antwortzeitverhalten. Die Antwortzeit einer Aktion ist das Zeitintervall zwischen dem
Stimulus, der die Aktion auslöst (kommt oft vom Prozeßobjekt), und der Bereitstellung
des Resultats durch den Rechner. Von besonderer Bedeutung sind die maximale Antwortzeit:
der Jitter der Antwortzeit und die Latenz der Fehlererkennung

Verläßlichkeit

Viele Echtzeitsysteme werden in sicherheitskritischen Anwendungen eingesetzt. z.B. zur
Steuerung von Kernreaktoren. Signalanlagen der Eisenbahn oder Flugzeugen. In diesen
Anwendungen wird eine Zuverlässigkeit von maximal einem sicherheitsrelevanten Ausfall
in 109 Stunden gefordert

Echtzeitkommunikation

ausgewählte echtzeichtprotkolle Protokolle

CAN (Control Area Network). CAN ist ein ereignisgesteuertes Echtzeitprotokoll, das
den Zugriff auf das gemeinsame Medium (Bus) nach dem Prinzip des CSMA/CA-Verfahrens
(Carrier Sense Multiple Access I Collision Avoidance) vornimmt

ARINC 629. Das ist ein ereignisgesteuertes Protokoll, das von der Flugzeugindustrie für
die Echtzeitkommunikation innerhalb eines Flugzeuges entwickelt wurde.
Dieses Protokoll ist im Verkehrsflugzeug Boeing 777 im Einsatz

TTP (Time-Triggered Protocol). Das ist ein zeitgesteuertes Protokoll, das nach dem
Prinzip des Zeitscheibenverfahrens (Time Division Multiple Access- TDMA) funktioniert
Das Protokoll baut eine fehlertolerante globale Zeitbasis aufund entscheidet
auf Grund der statisch vorgegebenen Eintragungen in der im Controller abgelegten Nachrichtenliste
zu welchem Zeitpunkt ein Knoten eine bestimmte Nachricht senden darf

ECHTZEITDATENVERARBEITUNG

DiE Echtzeitdatenverarbeitung ist ein dynamisches Teilgebiet der Informatik. das durch
die schnellen Fortschritte der Halbleitertechnik besondere Impulse erfährt. Mit dem Vordringen
der Echtzeitsysteme in sicherheitskritische Anwendungen, wie z.B. in die Flugzeugsteuerungen
und in die Automobilelektronik, rückt die Problematik der Verläßlichkeit
von Echtzeitsystemen in das Zentrum des technischen und öffentlichen Interesses.
Computerausfälle, die durch physische Fehler der Hardware hervorgerufen werden, können
durch den Einsatz von redundanter Hardware, wie in diesem Kapitel skizziert, weitgehend beherrscht werden.
iele der spektakulären Ausfälle der letzten Jahre - wie z. B.
der Absturz der Rakete Ariane 5 im Juni 1996 haben ihre Ursache jedoch
nicht in einem Versagen der Hardware, sondern in Entwurfsfehlern, die auf Fehler in der
Spezifikation, der Programmierung oder des Konfigurationsmanagements zurückzuführen
sind . Die letzte Ursache dieser Fehler liegt in der Komplexität der Systeme und des
Entwurfs. Die Hoffnung, daß mit formalen Verifikationsverfahren diese Fehler rechtzeitig
erkannt und eliminiert werden können, hat sich bisher nicht erfüllt.

Compiler / Übersetzer und Interpretierer.

Übersetzer

dieser Art transformieren Quellprogramme in Zielprogramme. Quellprogramme sind in
einer maschinenunabhängigen Sprache formuliert, Zielprogramme meist in einer maschinenabhängigen
Sprache, d.h. sie bestehen aus Maschinenbefehlen und werden daher auch
Maschinenprogramme oder Objektprogramme genannt.

Übersetzer und Interpretierer.

Ein Übersetzer (compiler) erzeugt aus einem Quellprogramm
ein Maschinenprogramm.
Teilaufgaben sind:

• Prüfung der Syntax und (statischen) Semantik des Quellprogramms;
• Erzeugung des Maschinenprogramms;
• Erzeugung von Informationen für Binder und Debugger 

Ein Interpretierer liest ein Quellprogramm und führt es - nach Prüfung von Syntax und
Semantik - sofort aus, ohne ein Maschinenprogramm zu erzeugen . Das beschleunigt die
Programmentwicklung (Übersetzungs-, Binde- und Ladezeiten entfallen), führt aber zu
längeren Laufzeiten des Programms

Übersetzungsphasen

Die Übersetzungsphasen können entweder hintereinander (Mehrpaß-Übersetzer) oder
ineinander verzahnt (Einpaß-Übersetzer) ablaufen
Lexikalische Analyse: 

Zerlegung des Quellprogramms in eine Folge von Symbolen
Überlesen bedeutungsloser Zeichen und Kommentare;

Syntaxanalyse:

Prüfung der syntaktischen Korrektheit des Quellprogramms
Zerlegung der vom lexikalischen Analysator gelieferten Symbolfolge in syntaktische
Einheiten

Top-down-Analyse
Bottom-up-Analyse

v.Neumann-Prinzipien der Rechnerorganisation

1 Der Rechner besteht aus 4 Werken:

• Haupt- bzw. Arbeitsspeicher für Programme und Daten;

• Leitwerk, das das Programm interpretiert;

• Rechenwerk, das die arithmetischen Operationen ausführt;

• Ein-/Ausgabewerk, das mit der Umwelt kommuniziert, und Sekundärspeicher, der als Langzeitspeicher fungiert.

2 Die Struktur des Rechners ist unabhängig vom bearbeiteten Problem: die Anpassung erfolgt durch Programmsteuerung.

3 Programm und Daten stehen in demselben Speicher, dem Hauptspeicher, und können durch die Maschine verändert werden.

4 Der Hauptspeicher ist in Zellen gleicher Größe geteilt, die durch fortlaufende Nummem (Adressen) bezeichnet werden.

5 Das Programm besteht aus einer Folge von Befehlen, die im allgemeinen nacheinander ausgeführt werden (Prinzip der Sequentialität als implizite Fortschaltungsregel).

6 Von der sequentiellen Abfolge der Ausführung der Maschinenbefehle kann durch bedingte oder unbedingte explizite Sprungbefehle abgewichen werden, die die Programmfortsetzung aus einer anderen Zelle des Hauptspeichers bewirken. BedingteSprünge sind von gespeicherten Werten abhängig.

7 Die Maschine benutzt Binärcodes, Zahlen werden dual dargestellt.

Technologie - Generationen

Generationen Technologie    Rechenleistung       Programmierung       Befehleis

I bis 1960  Röhren I 000 Maschinensprache 

2 bis 1970 Transistoren 10 000 Erste höhere Programmiersprachen FORTRAN, COBOL

3 bis 1980 Halbleitertechnologie 500 000 Höhere Programmiersprachen,  Datenbanken, Programmiersysteme

4 bis heute Halbleitertechnologie >I 000 000 wie 3. Generation, Entwicklungsumgebungen, parallele und verteilte Programmierung

Lernen