Einf. in die Betriebssysteme I Kapitel 1 Seite 1 Softwarestrukturen Anwendungssoftware: Löst ein spezielles Problem. Systemsoftware: Unterstützt die Erstellung von Anwendungssoftware. Betriebssystem: Der hardwarenahe Teil der Systemsoftware. Das Betriebssystem stellt die unabdingbaren Funktionen zur Verfügung, die für einen sinnvollen Betrieb des Rechnersystems erforderlich sind. Es ist schwierig das Betriebssystem innerhalb der Systemsoftware abzugrenzen. Allgemeine Systemsoftware Die Systemsoftware besitzt eine große Funktionalität. Laufzeitunterstützung der Programmentwicklungssysteme - Bibliotheken für Ein-/Ausgabefunktionen - Bibliotheken für mathematische Funktionen Graphische Benutzeroberflächen - Windows-Systeme - Virtuelle Terminals Datenbanksysteme Das Betriebssystem verwaltet alle Hardwarekomponenten und stellt sie den Anwendungen zur Verfügung. Hardwarekomponenten gehören zu den Betriebsmitteln, die eine Anwendung zu ihrem Ablauf benötigt. Begriff: Ablauf einer Anwendung: Prozess. Betriebsmittel: Resource Ein Betriebssystem teilt einem Prozess die benötigten Betriebsmittel zu, entzieht die Betriebsmittel, regelt eine gleichzeitige Nutzung eines Betriebsmittels durch mehrere Prozesse. Abstraktion der Betriebsmittel Analog zu der allgemeinen Softwareentwicklung: Man stellt für die Nutzung des Betriebsmittels eine Menge von Funktionen zur Verfügung. Diese Funktionen sollten alle Details, die zur gewünschten Nutzung nicht benötigt werden, verbergen. Beispiel: Adressierung eines Speicherfeldes auf einem Platten-(Disk-)Speicher Ein Feld wird über einen dreidimensionalen Wert adressiert: Zylinder, Spur, Sektor Eine Funktion zum Scheiben von Daten könnte so aussehen: out (Daten, Zyl, Spur, Sekt); Einfacher wäre: Man numeriert alle Sektoren durch und hat als Funktion out (Daten, Sekt); Das Betriebssystem rechnet im zweiten Fall aufgrund der Plattengeometrie aus der Sektornummer die dreidimensionale Adesse aus. Der nächste Schritt wäre, nicht die Sektoren zu numerieren, sondern die Bytes (Byte-Strom, Byte- Stream). Ein zweiter Aspekt der Abstraktion: Man fasst Betriebsmittel, die sich ähnlich sind, zu Betriebsmittelklassen zusammen und versucht, für die ganze Klasse einheitliche Funktionen zur Verfügung zu stellen. Vorteil: In den Programmen muß man sich z.b. nicht vorab auf ein spezielles Gerät festlegen.
Einf. in die Betriebssysteme I Kapitel 1 Seite 2 Anwendung Schnittstelle Anwendungsprogrammierung (API) Resource- Abstraktion andere Sytemsoftware Betriebssystemschnittstelle Resource- Betriebssystem Sharing Software-Hardwareschnittstelle Hardware Geteilte Nutzung von Betriebsmitteln (Resource Sharing) Ein abstraktes oder physikalisches Betriebsmittel kann von mehreren gleichzeitig laufenden Prozessen genutzt werden. Wir sprechen dann von einer geteilten Nutzung. Zwei Möglichkeiten: Raummultiplex Zeitmultiplex Raummultiplex: Das Betriebsmittel läßt sich in mehrere Einheiten aufteilen. Ein Prozeß bekommt eine solche Einheit zugewiesen. Beispiel: Speicherplatz Zeitmultiplex: Zuweisung des kompletten Betriebsmittels für kurze Zeitintervalle. Beispiel: CPU Mehrprogrammbetrieb Mehrere Programme sind ausführbar im Speicher vorhanden. In unserer Sprechweise sind dies mehrere Prozesse. Ein Prozess ist bereit, wenn er nicht auf die Zuteilung einer Resource oder auf das Ende einer Ein- /Ausgabe wartet. Während ein Prozess wartet, kann ein anderer Prozess die CPU haben.! Bessere Auslastung des Systems! Zeitmultiplex der CPU und Raummultiplex des Speichers Verschiedene Ausprägungen von Betriebssystemen Historische gesteuerte Entwicklung, vorgegeben durch die zur Verfügung stehende Hardware. Betriebssystem besitzen ein großes "Beharrungsvermögen".
Einf. in die Betriebssysteme I Kapitel 1 Seite 3 Frühe Systeme Die ersten Rechner waren große teure Geräte mit einfachen I/O-Geräten. Der Ablauf der Programme wurde per Schalter über eine Bedienkonsole gesteuert. Für die Programmierung waren umfangreiche Kenntnisse der Hardware erforderlich. In der Folgezeit versuchte man durch Entwicklung von wiederverwendbaren Gerätetreibern und der Entwicklung von Compilern die Produktivität der Computer zu erhöhen. Ein Handicap für diese Bestrebungen war der teure Hauptspeicher und oft nicht vorhandene externe Speichermedien, abgesehen von Lochkarten und Lochstreifen. Einfache Batchsysteme Eine erste stabile Phase in der Entwicklung stellten die Batchsysteme dar. Das sind Systeme, bei denen die zu bearbeitenden Jobs außerhalb des Rechners erstellt und vorbereitet wurden. Diese Jobs wurden dann nacheinander, auch als Job-Stapel zusammengefasst, eingelesen und abgearbeitet. Residenter Monitor Die Jobs wurden mit einer Job-Steuersprache (JCL) beschrieben und i.a. auf Lochkarten abgefaßt. Folge der Karten: Jobanfang Kommando für den Compileraufruf Quellprogramm Anweisung für das Laden des übersetzten Programms Anweisung für die Ausführung des geladenen Programms Daten für die Standardeingabe des Programms Jobende Zur Steuerung der Jobverarbeitung wurde ein Monitorprogramm erstellt. Dieser Monitor bestand aus den Teilen: Lader (zum Laden der Programme), Bearbeiter der Jobfolge (job sequencing, zur automatisierten Bearbeitung der Jobfolge) und dem Interpreter für die Kommando-Anweisungen. Zur Veranschaulichung hier die Speicheraufteilung dieser Systeme: Lader Monitor Job sequencing Interpreter Anwendungsprogramm
Einf. in die Betriebssysteme I Kapitel 1 Seite 4 Überlappung von CPU und I/O Operationen Bei diesen Batchsystemen bestand immer eine Diskrepanz in der Geschwindigkeit der CPU- Verarbeitung und der Geschwindigkeit der I/O-Vorgänge, die um mehrere Größenordnungen langsamer waren. Das Bestreben war daher, hier zu einer zeitlichen Überlappung zu kommen. Off-line Verarbeitung Bei der Off-line Verarbeitung wurden die Lochkartenstapel außerhalb des Computers auf ein Magnetband kopiert. Der CPU stand dann als Eingabemedium das schnellere Magnetband zur Verfügung. Ähnlich wurde mit der Ausgabe verfahren: Sie wurde auf ein Magnetband geschrieben und dann extern auf den Drucker kopiert. On-line: Kartenleser CPU Drucker Off-line: Karten- Band- Band- CPU Band- Band- Drucker leser gerät gerät gerät gerät Bandaustausch Bandaustausch Spooling Mehrprozessbetrieb ist erforderlich! Kartenleser und Bandgeräte lassen nur einen sequentiellen Zugriff auf die Daten zu. Mit der Entwicklung von Trommel- und Plattenspeichern kamen schnelle Massenspeicher mit direktem Zugriff auf den Markt. Sie werden als "random-access devices" bezeichnet. Die Daten sind in auf einer Folge von Sektoren gespeichert. Die Sektoren sind adressierbar. Da die Standard-I/O jetzt als Datei zwischengespeichert werden wurde, konnte dann auf die Bandgeräte bei der Standard-I/O verzichtet werden. Der Mechanismus wird SPOOLING (simultaneous peripheral operation on-line) genannt. Platte Kartenleser CPU Drucker Spooling Werden JOB1, JOB2 und JOB3 in dieser Reihenfolge ausgeführt, so kann während der Ausführung von JOB2 die Ausgabe von JOB1 gedruckt werden und der JOB3 gelesen werden. Damit ein Rechner parallel mehrere Aufgaben durchführen kann, benötigt man besondere Hardware- und Betriebssystemstrukturen. Batchsysteme mit Mehrprogrammbetrieb Das System der seriellen Jobverarbeitung kann so veranschaulicht werden: Ein Handwerker veredelt ein Vorprodukt. Er hat einen Eingangstisch, auf dem ein Vorprodukt Platz findet. Von dort nimmt er das Produkt, bearbeitet es und stellt es auf den Ausgabetisch, auf dem auch nur ein Produkt Platz findet. Bei der Bearbeitung müssen oft Pausen eingelegt werden, da z.b. Farbe oder Kleber trocknen muß.
Einf. in die Betriebssysteme I Kapitel 1 Seite 5 Folgende Gründe führen zu einem Warten des Handwerkers: 1) Der Eingangstisch ist leer. 2) Der Ausgangstisch ist noch belegt. 3) Bearbeitungspausen. Setzt man nun den Handwerker mit dem Rechner gleich, so ergibt sich eine sehr schlechte Auslastung. Diese Auslastung kann man mit einfachen Mitteln verbessern. 1) Vergrößern des Eingangstisches - zur Aufnahme von mehreren Vorprodukten 2) Erweiterung der Bearbeitungsplätze - mehrere Produkte können gleichzeitig bearbeitet werden 3) Vergrößern des Ausgabetisches Prinzipien: Bei 1) und 3) spricht man von einer Pufferung. Damit können momentane Geschwindigkeitsunterschiede in der Bearbeitungskette ausgeglichen werden. 2) kann als Parallelbearbeitung gekennzeichnet werden. Hier können Wartezeiten bei einem Produkt überbrückt werden. Diese Prinzipien werden intensiv innerhalb der Betriebssysteme angewandt. Beispielsweise kann damit ein Batchsystem mit Mehrprogrammbetrieb charakterisiert werden: 1) entspricht SPOOLING am Eingang, es werden Jobs angesammelt. 2) entspricht dem Mehrprogrammbetrieb 3) entspricht SPOOLING der Druckausgaben Der Mehrprogrammbetrieb ermöglicht die (quasi-)parallele Ausführung von mehreren Programmen, die sich gleichzeitig im Hauptspeicher befinden. Wenn ein Programm wegen einer I/O warten muß, führt die CPU mittlerweile ein anderes Programm aus. Die CPU springt zur Ausführung von einem Programm zum nächsten. Monitor Job 1 Job 2 Job 3 Speicheraufteilung für ein Mehrprogrammsystem Job 4 Da die Eingangsjobs unterschiedliche Anforderungen bei der Ausführung haben, kann die richtige Reihenfolge bei der Ausführung ein wesentlicher Aspekt sein (job scheduling, Jobplanung). Ebenso ist eine Strategie festzulegen, in welcher Reihenfolge die Jobs von der CPU bearbeitet werden (CPU scheduling, CPU-Planung). Beim SPOOLING gibt es zusätzlich zwei fest installierte Systemjobs: Ein Job liest die Eingangsjobs in den SPOOL-Bereich des Plattenspeichers, ein anderer gibt die Druckausgaben an den Drucker weiter. Plattenspeicher SPOOL/Jobs Kartenleser Monitor SPOOL-Ein SPOOL-Aus Drucker Job1... Job n
Einf. in die Betriebssysteme I Kapitel 1 Seite 6 Time-Sharing Systeme Während beim Batch der Jobablauf programmgesteuert abläuft, geschieht dies beim Time-Sharing- Betrieb interaktiv. Ein Time-Sharing-Betrieb setzt einen Mehrprogrammbetrieb voraus. Monitor Nutzer 1 Terminal 1 Nutzer 2 Nutzer 3 Terminal 2 Nutzer 4 Terminal 3 Terminal 4 Die Terminals stellen die Standard-I/O dar. Eine Druckausgabe wird über SPOOLING auf den Drucker geleitet. Jeder Nutzer hat über sein Terminal das Gefühl, über einen eingenen Rechner zu verfügen. Der Begriff "Time-Sharing" kommt daher, daß die CPU-Zeit reihum auf die einezelnen Nutzer verteilt wird. Um einen entprechenden Durchsatz zu erreichen, mußte eine große Zahl an Terminals installiert werden. Damit bekam man schnell Schwierigkeiten mit dem Speicherplatz. Durch Einführung neuer Speichertechniken unter Einbeziehung der Direktzugriffspeicher konnte man diese Schwierigkeit überwinden. Zu erwähnen sind in diesem Zusammenhang das Swapping und die virtuelle Speicherverwaltung. Beim Swapping wird ein Nutzeradressraum kurzzeitig auf den Plattenspeicher ausgelagert. Die virtuelle Speicherung verfährt ähnlich, jedoch werden hier nur Teile des Adressraum ausgelagert. Bei großen Systemen wurde ein Batchbetriebssystem mit einem Time-Sharing-Subsystem erweitert. IBM's OS/360 ist ein Beispiel dafür. OS/360 Swap TS-Nutzer 1 TS-Nutzer 2 Time-Sharing Job 1... Job n Swap-Bereich auf dem Plattenspeicher Der Time-Sharing-Bereich teilt sich die CPU-Zeit mit den n Batchjobs. Diese TS-Zeiten werden reihum an die TS-Nutzer vergeben. Dabei muß vorher jeweils der Adreßraum des Vorgängers ausgelagert und der eigene Adreßraum eingelagert werden. Mehrprogrammbetrieb und Time-Sharing sind zentrale Themen der modernen Betriebssysteme. Im Laufe der Vorlesung wird diese Thematik noch ausführlich zu behandeln sein. Ab Mitte der 60er Jahre wurden Time-Sharing-Systeme entwickelt. 1970 wurde UNIX als Time-Sharing- System für kleinere Rechner entwickelt. Wegen seiner Flexibilität, Anpassungsfähigkeit und Einfachheit hat es sich bis heute erhalten. Als klassisches Time-Sharing-System wird es heute eher selten eingesetzt. Sein Einsatz ist heute mehr als Netzwerkbetriebssystem. Der TCP/IP-Dienst TELNET realisiert dabei das Time-Sharing-System. Personal-Computer Systeme Wegen der hohen Kosten der Großrechner (Mainframes) kamen Anfang der 60'er Jahre die Minirechner auf den Markt. Sie fanden in den 70'er Jahren ein großes Marktsegment vor. Dies zeigte sich an der Entwicklung der Firma DEC, die sich mit enormen Steigerungsraten zum zweitgrößten Rechnerherteller nach IBM etablierte.
Einf. in die Betriebssysteme I Kapitel 1 Seite 7 Bedingt durch die Fortschritte bei der Entwicklung integrierter Schaltungen (Chips) wurden in den 70'er Jahren die Mikrocomputer entwickelt. Als nachträglich entscheidender Schritt stellte sich heraus, daß IBM sich entschloß, einen Mikrocomputer unter den Namen Personal Computer (PC) zu entwickeln und die Spezifikationen für diesen Rechner komplett offen zu legen. Das Betriebssystem entwickelte IBM nicht selbst, sondern beauftragte damit die Firma Microsoft. Dabei entstand das System MS-DOS bzw. PC-DOS und Microsoft wurde auf diesem Gebiet Marktführer. Mit den PC's wurden die Computer zum Massengeschäft. Dies schlug sich in den Preisen und in der Zahl der Softwareentwicklungen nieder. Das Kaufverhalten am Markt führte zu Standards, sowohl bei der Softweare als auch bei der Hardware. Zu diesen Standards gehörte Mitte der 80'er Jahre der PC-XT mit der Austattung 640kB Hauptspeicher, 20 MB Platte, Monochrombildschirm, 1 Diskettenlaufwerk, MS-DOS zum Preis von ca. 2500,- DM. 1994 war hierfür Standard ein PC 486DX2-66Mhz mit 4 MB Speicher, 420 MB Platte, 1 Diskettenlaufwerk, MS-DOS, Windows zum Preis von ca. 2000,-DM. Der Preis blieb fast gleich, der Preisverfall bei der Hardware wurde durch eine umfangreichere Austattung kompensiert. Diese zusätzlichen Hardwareresourcen wurden jeweils durch umfangreichere Software aufgebraucht. Seitens der Betriebssysteme wurde in zweierlei Richtungen erweitert: viele Funktionen aus dem Großrechnerbereich wurden zusätzlich in die PC-Systeme integriert (z.b. virtuelle Speicherverwaltung, Multitasking, Datenbanktechniken u.a.) und die graphischen Oberflächen (GUI, Graphical User Interface). Parallele Systeme Dile meisten Systeme sind Einprozessor-Systeme. Besitzt ein System mehrere Prozessoren, die zusammen mit den sonstigen Einheiten sich einen Systembus teilen, so spricht man von eng gekoppelten Systemen. Die Hardware folgt hier der Prozeß- bzw. Taskstruktur der Software. Hier kann jetzt einem Prozeß ein eigener Prozessor zur Verfügung gestellt werden. Sonst müssen sich die Prozesse einen Prozessor teilen, d.h. jeder Prozeß erhält nur jeweils Zeitintervalle zur Ausführung. CPU 1 CPU 2 CPU 3 weitere Komponenten Verteilte Systeme Im Gegensatz zu den parallelen Systemen spricht man hier von lose gkoppelten Systemen. Hier sind die verschiedenen Prozessoren über Rechnernetze miteinander gekoppelt. Gegenüber einem Bus haben die Netzverbindungen eine niedrigere Übertragungsrate. Daher wird man z.b. Hauptspeicherzugriffe nicht über eine Netzverbindung realisieren. Bei den verteilten Systemen ergibt sich ein Netz von relativ eigenständigen Rechnern, die sich über das Netz eine Reihe von Betriebsmitteln teilen, zb Drucker, Datenbanken, Spezial-IO. Die einzelnen Rechner können soft- und hardwaremäßig bezogen auf ihre jeweiligen Aufgaben konfiguriert werden. Weiterhin geben die Netze eine ideale Infrastruktur für die Kommunikation zwischen den Nutzern ab. Sowohl parallele als auch verteilte System müssen von speziellen Betriebssystemen unterstützt werden. Dies kann in einfachen Fällen durch einen Betriebssystemaufsatz geschehen. Für den Nutzer stellen sich diese Systeme wie das unterliegende "normale" System dar, jedoch mit einer zusätzlichen Funktionalität. Echtzeit-Systeme Diese Systeme müssen innerhalb einer festgelegten Zeit auf ein bestimmtes Ereignis reagieren. Sie werden i.a. innerhalb technischer Prozesse eingestzt, zb bei einer Robotersteuerung oder bei Regelungen. Erreicht wird diese Echtzeitfähigkeit i.a. über eine spezielle Hardwarestruktur und eine Modifikation vorhandener Betriebssysteme. Ein Multiuser-Betrieb - mit entsprechenden Speichertechniken wie virtueller Speicherung, Swap - ist für Echtzeitaufgaben wenig geeignet.
Einf. in die Betriebssysteme I Kapitel 1 Seite 8 Beitrag der verschiedenen Betriebssystemtypen zu neuen Betriebssystemen Batch- Mehrprogrammsysteme TimesharingSysteme PC s und Workstations Netzwerksysteme Speicherverwaltung Speicherverwaltung Systemsoftware Client-Server- Kommunikation Schutzmechanismedienoberfläche Scheduling Graphische Be- Protokolle Scheduling Schutzmechanismen Dateien Geräteunterstützung Echtzeitsysteme CPU-Planung (Scheduling)