Technische Informatik 2 Software Prof. Dr. Miroslaw Malek Sommersemester 2005 www.informatik.hu-berlin.de/rok/ca
Thema heute Evolution der Software Schichten Lader (Manuell, Bootstrap, Programm im ROM) Linker Übersetzer Assembler AL ML Compiler HLL ML Multiprogrammierung Spooling Betriebssystem - nächster Vortrag TI2 Software - 2
Allgemeiner Überblick Anwendungs Software: Textverarbeitung Flugzeugreservierungssystem Computerspiele Betriebssystem Hardware TI2 Software - 3
Software Software bezieht sich auf alle Programme, die auf Computern egal welcher Größe ausgeführt werden; sowohl auf großen als auch auf kleinen Systemen. Systemsoftware Compiler (Sprachprozessoren) Betriebssysteme Residente Subroutinen Bibliotheken Benutzerprogramme Linker Lader Anwendungssysteme (Sky is the limit). TI2 Software - 4
Evolution von Software Hardware Software Hardware Software Anwendungen Betriebs- Systeme Hardware Software Assembler Compiler Betriebssystem Utilities Debugging Programme Dateiverarbeitende Programme Firmware Mikroprogrammierung & Mikroprogrammierte Systeme Liveware System Designer System Analytiker Entwickler Operatoren Wartungspersonal Benutzer Hardware CPUs E/A Geräte Speicher Verbindende Netze TI2 Software - 5
Lebenszyklus von Hard- und Software Liveware Vorbereitung Nützliche Arbeit teilweise nützliche Arbeit Hardware/ Software Faultservice Idle TI2 Software - 6
Sprachen und Übersetzer Maschinensprache (binär, oktal, hexadezimal) Assembler (Directiven, Assembler) Hochsprache (HLL High-Level Language) Betriebssteuerangaben Compiler bilden ein Quellprogramm (Syntax der Sprache) und erzeugen das Objektprogramm o Zwischensprache (Interpreter) o Maschinenprogramm Eine Hochsprachenanweisung entspricht 5-20 Maschinencodeanweisungen. Eine Assembleranweisung entspricht 1-5 Maschinencodeanweisungen TI2 Software - 7
Sprachen und Übersetzer (2) Hochsprachen Assemblersprache Kompilation Assemblierung Maschinencode Hardware TI2 Software - 8
Lader Wie laden wir ein Maschinenspracheprogramm in den Speicher? Wie veranlassen wir einen Computer, ein Programm auszuführen? I. Rechner einschalten: 1) Manuelles Laden eines Programms durch eine Konsole und Schalter. a. Bootstrap (einfacher Lader) b. Komplexere Lader (Paritätsprüfung, usw.) 2) Nach Reset arbeitet der Computer ein ROM-Programm ab. TI2 Software - 9
Lader (2) II. Programmabschnitte (Segmente) 1) Header oder Identifizierungsabschnitt (Typ 00) a. Typ "00" b. Name c. Abschnitts- und/oder Blockzahl (Record and/or Block Count) d. Prüfsumme 2) Maschinenspracheabschnitt a. Typ "01" b. Byte- oder Wort-Zahl c. Startadresse d. Maschinensprachebefehle e. Prüfsumme TI2 Software - 10
Typen von Lader 1. Absoluter binärer Lader: Lädt Programme, basierend auf den oben beschriebenen Informationen. Die Startadresse ist die absolute Adresse, an die das Maschinenprogramm geladen wird. 2. Verschiebungsfähiger Lader (Relocatable Loader): Können entsprechend formatierte Maschinensprachabschnitte von Programmen in variable Adressbereiche laden. a) Verschiebbare Objektprogramme o Identifizierung von Adreßkonstanten, d.h. jene Adressen, die sich mit der Verschiebung nicht verändern. o Addieren eines Offset auf alle Adressen, außer den Adreßkonstanten. Das Basisregister ist ein Beispiel. b) Der Einfluß auf das Rechnerdesign ist signifikant. TI2 Software - 11
Linker 1. Große Programme können aus einer Anzahl von Routinen bestehen, die getrennt voneinander programmiert und oft unabhängig assembliert wurden. a) Der Linker ist ein Programm, das mehrere Objektmodule in ein einzelnes Maschinenspracheprogramm zu einem Lademodul verbinden kann. b) Objektmodule sind assemblierte (Maschinensprache-) Versionen von verschiedenen Routinen, die miteinander in einem einzelnen Programmsystem verbunden werden. c) Externe Symbole müssen vom Programmierer zur Zeit der Programmcompilierung definiert sein. Externe Symbole sind jene, die Variablen und Label repräsentieren, die von mehr als einem der verschiedenen assemblierten Programme oder Unterprogramme referenziert werden. Ein kombinierter Linker-Lader wird oft implementiert. TI2 Software - 12
Linker (2) 2. Kompromiss Assemblieren aller Programme und Unterprogramme in einer einzelnen Übersetzung, die ein Lademodul erzeugen würde, oder einzeln. 3. Formatierung a) Verzeichnis externer Symbole (ESD - External Symbol Directory) b) Maschinenspracheprogramm c) Verschiebungsverzeichnis (RD Reallocation Directory) d) Ort der Adresskonstanten. TI2 Software - 13
Abarbeitung Ein Job hängt mit einem gegebenen Benutzerprogramm zusammen. Ein Schritt identifiziert eine Eingabe-, Berechnungs- oder Ausgabephase eines Jobs. Stapelverarbeitung: Jobs werden nacheinander in sequentieller Abarbeitung ausgeführt. Wenn wir uns mehrere Jobs ansehen und die Anfragen dieser bearbeiten können, besteht die Möglichkeit, eine effektivere Nutzung der Ressourcen zu realisieren. Überlappung kann in einigen Fällen erreicht werden. Das Lesen der Eingabe und das Schreiben der Ausgabe können als dauerhafte Prozesse, wenn möglich, auftreten. TI2 Software - 14
Spooling 1. Es gibt typischerweise E/A-Puffer im Hauptspeicher. Für gewöhnlich wird der Pufferplatz durch Anforderung minimalen Hauptspeichers, der dennoch die E/A-Effizienz gewährleistet, optimiert. Der Rest der E/A, der nicht in den Puffern gehalten wird, wird für gewöhnlich auf einer Festplatte gespeichert. Die E/A wird dann durch fortwährendes Lesen von Jobs in den Speicher und das Puffern dieser auf einer Festplatte, bis sie gebraucht werden, gehandhabt. Dies nennt man Eingabe-Spooling. Sehr oft wird das Laden von der Festplatte durch einen anderen Prozessor ausgeführt. Das Puffern von Ausgabedaten auf der Festplatte und das darauffolgende Transferieren der Daten zu einem Ausgabegerät, wie z.b. ein Drucker, nennt man Ausgabe-Spooling. 2. Spooling glättet unter Umständen den Eingabe-/ Ausgabefluß. TI2 Software - 15
Spooling (2) Ziele: 1) Brücken des Geschwindigkeitsunterschiedes von Hauptspeicher und Festplatte 2) Erhöhung der Geschwindigkeit und Glätten von E/A-Operationen Hauptspeicher E/A Puffer Geschwindigkeitsbrücke TI2 Software - 16 Festplatte Oft besitzt das Disk- Speicher-Interface eigene Speicher und Prozessoren
Multiprogramming Das Konzept der Multiprogrammierung ist es, mehrere Programme im Hauptspeicher zu haben. Wenn die Ausführung eines Programms für E/A-Operationen ausgesetzt werden muß, wird die CPU veranlasst, eines der anderen Programme im Speicher auszuführen. 1. Wahrscheinlich ist, dass die CPU besser genutzt werden kann, jedoch kann ein zu komplexes Betriebssystem selbst mehr CPU-Zeit benötigen als es einsparen kann. 2. In der Praxis haben sich Multiprogrammsysteme als nützlich und effizient erwiesen. TI2 Software - 17
Multiprogramming (2) Beispiel: Die Jobs X, Y und Z werden in einer Multiprogrammingumgebung angeführt: Führe X(C1) aus Suspendiere X(R2) Führe Y(C1) aus Suspendiere Y(R2) Führe Z(C1) aus Suspendiere Z(R2) Führe Y(C2) aus X(R2) fertig Führe X(C2) aus Suspendiere X(R3) Führe Z(C2) aus Führe X(C3) aus TI2 Software - 18
Vergleich: Mit und ohne Multiprogrammierung Keine Multiprogrammierung JOB1 IDLE JOB1 IDL JOB1 JOB2 IDL JOB2 Mit Multiprogrammierung JOB1 JOB2 JOB1 JOB2 JOB1 T M T N ZEIT TI2 Software - 19
Software Zusammenfassung Anwendungen Middleware Betriebssystem werden immer größer beeinflussen die Performance, Zuverlässigkeit und Einfachheit der Benutzung eines Systems Komplexität und Funktionalität sind fast außer Kontrolle und sehr häufig weit von der Verständlichkeit entfernt. Computersysteme gehören einer Klasse der komplexesten und komplizierten Geräte an, die jemals von der Menschheit erschaffen wurden. Die Entwicklung von Windows/NT dauerte acht Jahre und über ein tausend Programmierer waren beschäftigt. Windows/NT besteht aus über 50 Millionen Codezeilen (MLOC s). TI2 Software - 20