Systemsoftware Lehrbrief WS2024 PDF
Document Details
Uploaded by ConsideratePhotorealism
2024
Hans-Georg Eßer
Tags
Summary
This document is a lecture brief for the Master's program in Applied Artificial Intelligence, focusing on systems software and Linux. It covers fundamental concepts, installation procedures, and basic commands.
Full Transcript
Systemso ware Lehrbrief zum Modul des Master-Verbundstudiengangs „Angewandte Künstliche Intelligenz“ Hans-Georg Eßer 21. Juni 2024 ...
Systemso ware Lehrbrief zum Modul des Master-Verbundstudiengangs „Angewandte Künstliche Intelligenz“ Hans-Georg Eßer 21. Juni 2024 Inhaltsverzeichnis Inhaltsverzeichnis A Einleitung.............................................................................. 7 A.1 Au au und Gliederung................................................................. 7 A.2 Nota on............................................................................... 7 A.2.1 Allgemeines............................................................................ 7 A.3 Lernkontrollfragen, Kurswebseite........................................................ 8 A.4 Über den Autor......................................................................... 8 1 Grundlagen Rechnerau au, Betriebssysteme........................................... 9 1.1 Lernziele............................................................................... 9 1.2 Computer-Typen........................................................................ 9 1.2.1 Personal Computer (PCs)................................................................ 10 1.2.2 Server.................................................................................. 12 1.2.3 Mobilgeräte............................................................................ 13 1.2.4 Embedded Devices..................................................................... 13 1.2.5 Echtzeitsysteme........................................................................ 15 1.3 Computer-Komponenten................................................................ 15 1.3.1 Hauptpla ne........................................................................... 15 1.3.2 Busse für Erweiterungskarten: PCI und ISA............................................... 16 1.3.3 Prozessor............................................................................... 19 1.3.4 Chipsatz: North Bridge und South Bridge................................................. 19 1.4 Universalrechner (von Neumann, Harvard)............................................... 20 1.4.1 Eigenscha en des von-Neumann-Rechners.............................................. 21 1.4.2 Alterna ves Modell: Harvard............................................................ 23 1.5 CPU-Architekturen, RISC vs. CISC........................................................ 24 1.6 Aufgaben eines Betriebssystems (BS).................................................... 25 1.7 Typische Aufgaben eines Betriebssystems................................................ 27 1.8 Geschichte der Betriebssysteme......................................................... 30 1.8.1 Ein Leben ohne Betriebssysteme........................................................ 30 1.8.2 BIOS mit Funk onsbibliotheken......................................................... 30 1.8.3 Kompa bilitätsfragen................................................................... 31 1.8.4 Struktur für die Dateiablage............................................................. 32 1.8.5 Mehr Struktur für große Datenträger.................................................... 32 1.8.6 Mul tasking............................................................................ 33 1.8.7 Mehrbenutzer-Betrieb.................................................................. 33 1.9 Schichten und Abstrak on: von der Hardware zum GUI-Programm........................ 34 1.10 Lizenzmodelle: frei/proprietär, open/closed.............................................. 35 1.11 Lernkontrollfragen...................................................................... 39 1.12 Lösungshinweise zu den Lernkontrollfragen.............................................. 40 2 Linux-Installa on und erste Schri e..................................................... 41 2.1 Lernziele............................................................................... 41 3 Inhaltsverzeichnis 2.2 Beispiel Linux........................................................................... 41 2.2.1 Kernel vs. Dienstprogramme............................................................ 42 2.2.2 Linux-Distribu onen.................................................................... 44 2.3 Vorbereitung und Voraussetzungen...................................................... 45 2.4 Par onierung......................................................................... 46 2.5 Installa onsrou nen.................................................................... 49 2.6 Start und Anmeldung................................................................... 50 2.6.1 Anmeldung............................................................................. 50 2.7 Die Shell............................................................................... 51 2.7.1 Elementare Shell-Befehle............................................................... 52 2.7.2 Op onen, Argumente, Parameter....................................................... 53 2.7.3 Dateiopera onen....................................................................... 55 2.7.4 Verzeichnisopera onen................................................................. 58 2.7.5 Versteckte Dateien und Ordner.......................................................... 63 2.7.6 Shell verlassen.......................................................................... 63 2.7.7 Befehls-History......................................................................... 63 2.7.8 Als Administrator:in arbeiten............................................................ 64 2.8 Lernkontrollfragen...................................................................... 65 2.9 Lösungshinweise zu den Lernkontrollfragen.............................................. 66 3 Ausgewählte Standard-Anwendungen.................................................. 67 3.1 Editoren................................................................................ 67 3.1.1 Gnome Texteditor und Kate............................................................. 67 3.1.2 Vim.................................................................................... 69 3.2 Secure Shell............................................................................ 74 3.2.1 Login auf en erntem Rechner........................................................... 74 3.2.2 Dateitransfer........................................................................... 75 3.2.3 SSH ohne Passwort-Eingabe............................................................. 75 3.2.4 SSH-Server unter Ubuntu 24.04.......................................................... 76 3.3 So ware-Entwicklung................................................................... 76 3.3.1 Prak sches Beispiel..................................................................... 77 3.4 Eingebaute Hilfe........................................................................ 79 3.5 Reguläre Ausdrücke..................................................................... 81 3.6 Ein- und Ausgabe-Umleitung und Pipe................................................... 85 3.7 Unix-Baukasten......................................................................... 88 3.7.1 Filtern mit grep......................................................................... 88 3.7.2 Ersetzen mit sed und tr................................................................. 89 3.7.3 Sor eren mit sort...................................................................... 92 3.7.4 Spalten verarbeiten mit cut und column................................................. 92 3.8 Lernkontrollfragen...................................................................... 94 3.9 Lösungshinweise zu den Lernkontrollfragen.............................................. 97 4 Linux-Administra on................................................................... 99 4.1 Benutzer und Gruppen.................................................................. 99 4 Inhaltsverzeichnis 4.2 Zugriffsrechte.......................................................................... 99 4.3 So ware-Verwaltung................................................................... 99 4.3.1 So ware-/Paket-Verwaltung............................................................ 100 4.3.2 System-Aktualisierung.................................................................. 104 4.3.3 Snap-Pakete............................................................................ 106 4.4 Netzwerk-Basics........................................................................ 106 4.4.1 Internet Protocol (IP)................................................................... 107 4.4.2 Portnummern: TCP und UDP............................................................ 111 4.5 Lernkontrollfragen...................................................................... 113 4.6 Lösungshinweise zu den Lernkontrollfragen.............................................. 115 5 Prozesse............................................................................... 117 5.1 Lernziele............................................................................... 118 5.2 Linux: Jobs............................................................................. 118 5.2.1 Vorder- und Hintergrund................................................................ 119 5.2.2 Job-Verhalten beim Beenden der Shell................................................... 120 5.2.3 nohup und disown...................................................................... 121 5.3 Linux: Prozesse......................................................................... 122 5.3.1 Ansicht der Baumstruktur............................................................... 125 5.3.2 Aktualisierte Liste....................................................................... 127 5.4 Prozess-Eigenscha en.................................................................. 128 5.5 Interrupts.............................................................................. 130 5.6 System Calls............................................................................ 132 5.6.1 Schutz durch Syscall-Mechanismus...................................................... 133 5.7 Mul tasking und Scheduling............................................................ 135 5.7.1 Koopera ves und unterbrechendes Scheduling........................................... 136 5.7.2 Round-Robin-Scheduler................................................................. 137 5.8 Speicherverwaltung..................................................................... 141 5.8.1 Segmen erung......................................................................... 142 5.8.2 Paging................................................................................. 144 5.9 Lernkontrollfragen...................................................................... 149 5.10 Lösungshinweise zu den Lernkontrollfragen.............................................. 150 6 Dateisystem............................................................................ 151 6.1 Lernziele............................................................................... 151 6.2 Allgemeine Dateisystem-Features........................................................ 152 6.2.1 Unix-Dateisysteme...................................................................... 154 6.3 Festpla en-Verwaltung................................................................. 159 6.3.1 Par onierung mit fdisk............................................................... 159 6.3.2 Forma erung mit mkfs.................................................................. 163 6.3.3 Dateisysteme mounten................................................................. 164 6.3.4 Beliebte Mount-Op onen............................................................... 167 6.3.5 Dateisysteme warten................................................................... 169 5 Inhaltsverzeichnis 6.4 Besondere Funk onen.................................................................. 170 6.4.1 Journaling.............................................................................. 170 6.4.2 Einsatz von Image- und Swap-Dateien................................................... 171 6.4.3 Verschlüsselung........................................................................ 172 6.4.4 Dateisysteme fremder Betriebssysteme.................................................. 175 6.5 FUSE: Filesystem in Userspace........................................................... 177 6.6 Lernkontrollfragen...................................................................... 178 6.7 Lösungshinweise zu den Lernkontrollfragen.............................................. 179 7 Zusatzthemen.......................................................................... 181 7.1 Rechner-Arithme k..................................................................... 181 7.1.1 Einführung............................................................................. 181 7.1.2 Fließkommazahlen...................................................................... 181 7.2 Docker-Container....................................................................... 185 7.3 Synchronisa on und Deadlocks.......................................................... 186 7.3.1 Ein Synchronisa onsproblem............................................................ 186 7.3.2 Kri scher Bereich, gegensei ger Ausschluss.............................................. 192 7.3.3 Locking................................................................................. 193 7.3.4 Test-and-Set-Lock....................................................................... 194 7.3.5 Mutexe................................................................................ 195 7.3.6 Semaphore............................................................................. 197 7.3.7 Deadlocks.............................................................................. 202 7.4 Lernkontrollfragen...................................................................... 210 7.5 Lösungshinweise zu den Lernkontrollfragen.............................................. 211 Anhänge............................................................................................ 213 Literaturverzeichnis.................................................................................. 213 Abbildungsverzeichnis............................................................................... 214 Tabellenverzeichnis.................................................................................. 215 Lis ng-Verzeichnis................................................................................... 215 Index............................................................................................... 217 4. Auflage 2024/25 (Stand: 21. Juni 2024) 6 A Einleitung A Einleitung Herzlich willkommen im Lehrbrief Systemsoftware“. Der Studiengang ” Angewandte Künstliche Intelligenz“ setzt keine Informatik-Vorkenntnis- ” se voraus, die KI ist aber ein Zweig der Informatik, und deswegen geht es in den ersten Semestern (neben spezielleren Themen mit starkem KI- Bezug) auch um Grundlagen der Informatik. In diesem Modul stelle ich einige praxisnahe und einige theoretische Aspekte zu den Themen Be- triebssysteme und Rechnerarchitektur vor. Dabei gehen wir nicht so sehr in die Tiefe, wie das in einem Informatik-Studiengang der Fall wäre. Wenn Sie in die Modulbeschreibung geguckt haben, wissen Sie schon: Wenn das Semester zu Ende ist, haben Sie die nötigen Kenntnisse er- ” worben, um ein Linux-System einzurichten, aktuell zu halten, Software zu installieren und einfache Dateisystemaktivitäten sowie Systemver- waltungsaufgaben auszuführen. Sie können praktische Aufgabenstellun- gen am Rechner ausführen. Ergänzend dazu haben sie ein grundlegendes Verständnis für die Rolle von Linux (und anderen Betriebssystemen) als »Vermittler« zwischen Hard- und Software gewonnen und können die wichtigsten Probleme und Lösungsansätze in den Bereichen Scheduling, Speicherverwaltung, Dateisysteme und Synchronisation beschreiben und erläutern.“ Ergänzend kommen noch einige Grundlagen der Computer-Technik hinzu. A.1 Au au und Gliederung Passend zu den sieben Präsenzterminen im Semester gibt es sieben Ka- pitel in diesem Lehrbrief. Bitte lesen Sie jeweils zur Vorbereitung auf den 𝑛-ten Präsenztermin das Kapitel 𝑛: 1. Grundlagen Rechnerau bau, Betriebssysteme 2. Linux-Installation und erste Schritte 3. Ausgewählte Standard-Anwendungen 4. Linux-Administration 5. Prozesse 6. Dateisystem 7. Zusatzthemen (u. a. Rechner-Arithmetik, Docker) A.2 Nota on Der Lehrbrief verwendet einige Notationen, Auszeichnungen und Stan- dards, die wir im Folgenden kurz erklären. A.2.1 Allgemeines Wichtige Begriffe sind im Text kursiv hervorgehoben. Als Unterstützung für die Suche im Text tauchen sie zudem als Randnote am Anfang eines Absatzes auf (so wie das Wort „Randnote“ neben diesem Absatz). Randnote 7 A Einleitung Datei- und Befehlsnamen sind in nicht-proportionaler Schrift (Code- Schrift) gedruckt, z. B. ping. Wird ein Dialog in der Shell (Eingabeauffor- derung) gezeigt, sind zur besseren Unterscheidung von Ein- und Ausgabe die eingegebenen Kommandos blau und gefettet, wie im folgenden Bei- spiel: studi mbp2: ping -c2 www.fh-swf.de PI nessi.fh-swf.de (1 3.1. 8. ): 5 data bytes bytes from 1 3.1. 8. : icmp seq 0 ttl 2 time 1. 32 ms bytes from 1 3.1. 8. : icmp seq 1 ttl 2 time 1.0 3 ms --- nessi.fh-swf.de ping statistics --- 2 packets transmitted, 2 packets received, 0.0 packet loss round-trip min/avg/max/stddev 1.0 3/1.502/1. 32/0. 30 ms Fette Schrift wird im Fließtext nur sparsam verwendet, z. B. zur Au lö- sung von Abkürzungen wie etwa Prolog“ (Programmation en Logique). ” A.3 Lernkontrollfragen, Kurswebseite Am Ende jedes Kapitels inden Sie einige Lernkontrollfragen (mit Antwor- ten oder Lösungshinweisen auf der Folgeseite), mit denen Sie überprüfen können, ob Sie die Inhalte des Kapitels gut verstanden haben. Es ist emp- fehlenswert, diese Fragen zunächst ohne einen Blick in die Antworten eigenständig zu bearbeiten. Zu jedem laufenden Modul inden Sie im zugehörigen Moodle-Kurs ak- tuelle Informationen. Zusätzlich biete ich unter http://swf.hgesser.de/ eine Kursseite mit Videoaufzeichnungen der Präsenztermine (bzw. On- linetermine) an, im Wintersemester 2024/25 unter http://swf.hgesser. de/va-sy/ws202 /. A.4 Über den Autor Ich bin Professor für Betriebssysteme an der FH Südwestfalen, habe an der RWTH Aachen Informatik und Mathematik studiert (→ Dipl.-Inform., Dipl.-Math.) und wurde an der FAU Erlangen-Nürnberg im Fach Informa- tik promoviert (→ Dr.-Ing.). Für meine Dissertation [Eße15] habe ich das Betriebssystem ULIX¹ entwickelt, das für Lehrzwecke (an Hochschulen) gedacht ist und dessen vollständiger Quellcode in einem Lehrbuch doku- mentiert und erklärt ist. Vor meiner Hochschul-Lau bahn war ich über 20 Jahre lang freier Autor zu Linux-Themen (ab 1997) und Chefredakteur für zwei Linux-Zeitschrif- ten (2000–2004: LinuxUser; 2003–2018: EasyLinux²). Außer im Verbund-Master Angewandte Künstliche Intelligenz bin ich auch in den Verbund-Bachelor- und Verbund-Master-Studiengängen Ange- wandte Informatik sowie im Präsenz-Bachelor-Studiengang Informatik aktiv. Ich bin gewähltes Mitglied im Fachbereichsrat Informatik und Na- turwissenschaften der FH Südwestfalen und Mitglied mehrerer Fach- und Prüfungsausschüsse. ¹ ULIX: http://www.ulixos.org/ ² https://de.wikipedia.org/wiki/EasyLinux 8 1 Grundlagen Rechnerau au, Betriebssysteme 1 Grundlagen Rechnerau au, Betriebssysteme Mit diesem Kapitel inden Sie den Einstieg in zwei Themengebiete der In- formatik: Rechnerarchitektur und Betriebssysteme. Dieses Auftaktkapitel ist recht lang geworden, was unter anderem an den ☞ Erklärungsboxen liegt, die so aussehen: Erklärungsbox In einer Erklärungsbox finden Sie sehr grundlegende Erklärungen eines Begriffs. Wenn Sie schon wissen, worum es geht, können Sie die jeweilige Box überspringen. 1.1 Lernziele Sie lernen einige grundlegende Begriffe kennen und können anschlie- ßend wesentliche Komponenten einer Computeranlage unterscheiden. Sie können den Au bau des (theoretischen) Universalrechners nach von Neumann bzw. Harvard beschreiben. Außerdem haben Sie eine grobe Vorstellung davon, welche Aufgaben ein Betriebssystem erfüllt. 1.2 Computer-Typen Computer dominieren viele Bereiche des Alltags, in denen vor wenigen Jahrzehnten (teilweise vor wenigen Jahren) analoge Technik oder gar keine Technik eingesetzt wurde: Auf den analogen Schallplattenspieler folgte zunächst die digitale Com- pact Disc (CD), später die Musikwiedergabe durch MP3-Player, Smart- phones, Internet-Radio. Die mechanische Schreibmaschine wurde erst durch die elektrische ergänzt; beide Typen sind seit Etablierung von Textverarbeitungspro- grammen auf Personal Computern (PCs) obsolet geworden. Blutdruck, Puls, Körpertemperatur messen heute Geräte mit integrier- ten Kleincomputern; Sportarmbänder übertragen die Messergebnisse auch gleich via Bluetooth auf ein nahes Mobiltelefon, wo dann eine gra- ische Au bereitung statistischer Analysen möglich ist. Das Bestell- und Rechnungswesen läuft in vielen Betrieben computer- gestützt ab, inklusive Rechnungs- und Mahnungsversand per E-Mail. Die Kunden- und Lagerbestandsdaten verwaltet dabei ein Server, auf den die Sachbearbeiter (und auch die Kunden bei Nutzung eines On- line-Shops) zugreifen. Das sind nur einige Beispiele für die Durchdringung des täglichen Lebens mit Computertechnik. Bevor wir in die Tiefen der technischen Details absteigen, wollen wir eine kleine Kategorisierung für Computer anbieten. 9 1 Grundlagen Rechnerau au, Betriebssysteme 1.2.1 Personal Computer (PCs) Personal Computer Besonders sichtbar sind die Personal Computer (PCs), die seit der Einfüh- rung durch IBM (Abbildung 1.1) prinzipiell den gleichen Au bau haben: Kernstück eines PCs ist die Hauptplatine (engl. mainboard), die fest in ei- nem PC-Gehäuse verschraubt wird und über Sockel und Slots (Einschübe, Steckplätze) weitere Komponenten aufnimmt, die miteinander verbun- den sind. Abbildung 1.1: Der IBM PC 5150 war 1981 der erste „Personal Computer“.³ CPU, Prozessor Die CPU (Central Processing Unit, deutsch: zentrale Verarbeitungseinheit, Prozessor) sitzt meist in einem Sockel, der auch einen Austausch (bei De- fekt oder zum Ersetzen durch ein neueres, schnelleres Modell) erlaubt. Prozessoren rechnen und verarbeiten Informationen, auf ihnen laufen die Programme: Mehr dazu weiter unten. Erweiterungskarten passen in die Slots auf der Hauptplatine, sie stellen oft I/O-Funktionen (I/O: input/output ☞ Eingabe und Ausgabe) zur Ver- Eingabe und Ausgabe Ein Computer kann zunächst nur interne Berechnungen durchführen, was wenig hilfreich ist. Um ihn sinnvoll nutzen zu können, ist es nö g, dass er Eingaben entgegennehmen kann, die er dann bearbeitet. Denken Sie als Beispiel an ein Taschenrechner-Programm: Als Anwender:in geben Sie Zahlen und Rechen- opera onen ein, etwa durch Anklicken von Schal lächen oder über eine Tastatureingabe. Basierend auf den Eingaben kann der Computer dann rechnen und damit ein Ergebnis produzieren – das muss er ausge- ben, damit Sie es als Anwender:in wahrnehmen können. Für die Ein-/Ausgabe werden Geräte / Komponenten eingesetzt, die nicht direkt Teil des Computers sind, sondern an ihn angeschlossen werden. Klassische Komponenten sind etwa die Tastatur und die Maus (Ein- gabe), der Monitor und der Drucker (Ausgabe). Aber auch Komponenten für die Netzwerkkommunika on (Ethernet- oder WLAN-Netzwerkkarte, Modem) sind Ein-/Ausgabe-Komponenten. Üblich ist, die englische Bezeichnung und Abkürzung (Input/Output, I/O) sta der deutschen Begriffe zu verwenden. ³ Bild: IBM Newsroom. 10 1.2 Computer-Typen fügung, z. B. in Form von Netzwerkkarten oder Gra ikkarten. Über ein Ab- schlussblech mit Anschlussbuchsen, das von außerhalb des PCs zugäng- lich ist, lassen sich dann diverse Geräte mit dem PC verbinden. Hauptspeicher für die ☞ flüch ge Speicherung von Daten sitzt ebenfalls Hauptspeicher direkt auf der Hauptplatine: Die dafür vorgesehenen Steckplätze sind meist lexibel, so dass ein Steckplatz Speicher-Chips unterschiedlicher Größe aufnehmen kann. Flüch ger Speicher Der Arbeitsspeicher, auch flüch ger Speicher oder RAM genannt, enthält den Programmcode und die Daten, die gerade für die Verarbeitung benö gt werden. Wenn Sie ein Programm beenden und/oder ein anderes Programm starten, werden diese Inhalte ausgetauscht. Schalten Sie den Rechner aus, gehen die Inhalte des Arbeitsspeichers verloren: In diesem Sinne sind sie flüch g. Nicht-flüch ger Speicher ist der Pla enplatz – also der Speicherplatz auf Festpla en oder moderneren SSDs (Solid-State-Disks). Auch USB-S cks und SD-Karten sind Beispiele dafür. Festplatten für die dauerhafte Speicherung von Daten sind prinzipiell ex- Festpla e terne Geräte, die über eine der bereits erwähnten Erweiterungskarten angesprochen werden; aktuelle PCs enthalten die nötigen Chips (der ehe- maligen Plattencontrollerkarte) aber direkt auf der Hauptplatine, und es ist seit Beginn der PC-Ära üblich, die Platten im Gehäuse unterzubringen – es gibt aber auch externe Festplatten, die in eigenen Gehäusen neben den PC gestellt werden. Das ganze PC-Design ist also darauf ausgerichtet, die lexible Kon igura- tion zu erlauben. Durch den nach und nach erfolgenden Austausch von Komponenten durch neuere Bauteile (Upgrades) lässt sich ein PC einige Jahre lang nutzen, bevor er vollständig ersetzt werden muss. Notebooks oder Laptops sind auch PCs, sie bieten aber wegen des gerin- Notebook, Laptop geren Raumangebots weniger Flexibilität bei Ausstattung und Aktualisie- rung von Komponenten, zudem sind in den besonders lachen Geräten zur weiteren Platzeinsparung viele Bauteile fest mit der Hauptplatine verbunden (und nicht „gesockelt“). Für stationäre PCs haben sich zwei Gehäusevarianten durchgesetzt, das Tower-Gehäuse (hier ist die Hauptplatine hochkant an einer der Gehäu- seseiten montiert) und das Desktop-Gehäuse (mit lach am Boden ange- brachter Platine). Daneben gibt es spezielle Gehäuse, die z. B. besonders klein sind und sich an die Rückseite eines Monitors montieren lassen. All- in-One-PCs integrieren einen PC und einen Monitor in einem einzelnen Gehäuse, unterliegen aber ähnlichen Einschränkungen der Wartbar- und Aufrüstbarkeit wie Notebooks. Die typische Nutzung aller PC-Arten ist interaktiv: PCs haben Benut- zer:innen, die vor dem PC sitzen und ihn direkt bedienen; zur Steuerung sind Tastaturen, Mäuse, Touch-Displays, Zeichentabletts, Gamepads oder Joysticks (für Spiele) und weitere Geräte üblich; eine Sprachsteuerung ist seltener, ebenso Braille-Tastaturen (für Blinde) oder die Steuerung über Augenbewegungen (mit Hilfe einer Kamera, welche diese auswertet) für Benutzer:innen mit eingeschränkter Motorik. 11 1 Grundlagen Rechnerau au, Betriebssysteme PCs verwenden dafür Betriebssysteme, die für den Desktop-Einsatz ge- dacht sind, die drei wichtigsten und am weitesten verbreiteten Systeme sind Windows, macOS und Linux. 1.2.2 Server Am ehesten mit PCs verwandt sind Server-Computer (☞ Server), die prin- zipiell denselben Au bau wie PCs haben, aber für einen anderen Anwen- dungszweck bestimmt sind. Sie werden in der Regel nicht interaktiv ver- wendet, sondern bieten Dienstleistungen an, die über das Netzwerk ande- ren Rechnern zur Verfügung gestellt werden. Die bekanntesten Beispiele sind Datei- und Druckdienste, Webserver und Datenbankserver. Server Wenn die Welt der Informa k ganz neu für Sie ist, werden Sie am ehesten Webserver kennen. Das allge- meine Funk onsprinzip aller Server ist, dass diese darauf warten, dass ein Client eine Anfrage stellt. Diese Anfrage wird in der Regel über ein Netzwerk, z. B. über das Internet, vom Client zum Server geschickt. Der bearbeitet sie und schickt eine Antwort zurück. Beim Wort Server ist manchmal nur aus dem Zusammenhang klar, ob ein Server-Computer oder ein Ser- ver-Programm gemeint ist. Server-Programme werden o auch als Daemons bezeichnet. Da Server meist im Dauerbetrieb laufen, werden an einige Komponenten höhere Anforderungen bzgl. Lebenszeit, Ausfallwahrscheinlichkeit und auch Performance gestellt; so gibt es etwa spezielle Server-Festplatten, die für den Dauereinsatz gedacht sind, während normale PCs billigere Platten enthalten, die eine deutlich geringere Gesamtlaufzeit erreichen können. Server müssen meist damit umgehen können, dass etliche parallele An- fragen aus dem Netzwerk vorliegen, darum ist auch ihre Netzwerkanbin- dung häu ig besser als die von PCs. Da mehr Daten vorgehalten werden, gibt es hier größere Platten und auch mehr Anschlüsse für Festplatten, RAID die oft zur redundanten Speicherung als RAID-Verbund⁴ organisiert sind: Je nach Kon iguration eines RAID-Systems dürfen einzelne Platten tech- nisch ausfallen, ohne dass es zu Datenverlust kommt. Server unterstützen Hot-Swap auch oft einen Hot-Swap-Mechanismus, der es erlaubt, im Betrieb (also ohne Herunterfahren und Ausschalten des Rechners) Komponenten aus- zutauschen. Das gilt meist für Festplatten, es gibt aber sogar Systeme, bei denen der Hot-Swap eines defekten Prozessors möglich ist. Ein Server kann in einem Tower- oder Desktop-Gehäuse verbaut sein und damit auf den ersten Blick wie ein PC aussehen, häu iger sind aber 19”- Server Racks (Serverschränke): Komponenten für diese Art Unterbrin- gung haben eine Standardbreite von 19 Zoll (48,26 cm) und seitliche Be- festigungen für den schnellen Einbau in 19”-Schränken. Solche Schränke ⁴ RAID: Redundant Array of Independent Disks 12 1.2 Computer-Typen nehmen dann neben den Servern auch weitere Komponenten auf, etwa Netzwerk-Switches, die auch im 19”-Format gehalten sind. Typische Betriebssysteme für Server sind Linux⁵ (und andere Unix⁶-ähn- liche Systeme wie etwa NetBSD⁷) und Windows Server.⁸ 1.2.3 Mobilgeräte Smartphones und Tablets bilden eine eigene Kategorie: Diese Geräte sind Smartphone, Tablet auf einen durchgehenden Batteriebetrieb ausgelegt, müssen im Betrieb also sparsamer als z. B. Notebooks sein; darum (und auch aus Platzgrün- den) indet man in diesen Geräten etwa keine Festplatten und weniger Schnittstellen für den Anschluss von Geräten, stattdessen indet Kom- munikation hier in der Regel drahtlos (WLAN, Bluetooth) statt. Bei der Bedienung setzen beide auf Touch-Displays, auch wenn es oft möglich ist, Tastaturen und/oder Mäuse zu verwenden. Von Tablets zu unterscheiden sind Tablet-PCs, die Notebooks ohne Tasta- Tablet vs. Tablet-PC tur und mit Touch-Screen sind und damit in die Kategorie der Personal Computer fallen – allerdings wird hier der Übergang allmählich ließend, so sind etwa aus Benutzerperspektive die Unterschiede zwischen einem Microsoft Surface Pro⁹ mit Tastatur (einem Tablet) und einem Microsoft Surface Book¹⁰ (einem Notebook mit vollständig umklappbarer Tastatur und Touch-Screen) gering. Hybridgeräte erlauben teilweise die Nutzung in einem PC-Modus und einem Tablet-Modus, wobei je nach Modus ein anderes Betriebssystem läuft. Durchgesetzt haben sich im Smartphone- und Tablet-Bereich nur zwei Betriebssysteme: iOS von Apple und das Linux-basierte Android von Google. Diese teilen sich den Großteil des Unterbaus mit macOS (Apple) bzw. Linux, sind aber an die speziellen mobilen Einsatzgebiete angepasst. 1.2.4 Embedded Devices Der Begriff Embedded Device (wörtlich etwa: eingebettetes Gerät) be- zeichnet Geräte, die einen Computer enthalten, aber nicht wie ein Com- puter aussehen und bedient werden. Beispiele dafür sind moderne Fern- ⁵ https://www.kernel.org/ ⁶ https://de.wikipedia.org/wiki/ nix ⁷ http://www.netbsd.org/ ⁸ https://www.microsoft.com/en-us/windows-server ⁹ https://www.microsoft.com/de-de/d/surface-pro- /8n1 j0m5zzqs ¹⁰ https://www.microsoft.com/de-de/d/surface-book-3/8xbw g3z 1f1 13 1 Grundlagen Rechnerau au, Betriebssysteme Abbildung 1.2: Au bau des Raspberry Pi 4 Model B.¹⁴ seher (Smart TVs), Küchenmaschinen, Digitalwecker, Klimaanlagen und Heizungssteuerungen (sowie weitere Geräte der Kategorie Heimauto- matisierung), Taschenrechner, technische Implantate (etwa: Herzschritt- macher) und auch der oft erwähnte (aber noch nicht erhältliche) Kühl- schrank, der automatisch neue Milch bestellt, wenn der Vorrat zur Neige geht. Typisch für solche Geräte ist meist, dass deren Hardwareau bau (durch den Benutzer) nicht veränderbar ist, eine Wartung oder Aufrüstung also nicht vorgesehen ist. Moderne Beispiele aus der Maker-Szene¹¹ sind die Einplatinencomputer Raspberry Pi¹² (RasPi, Abbildung 1.2) und Arduino,¹³ die zur kreativen Kombination mit Sensoren und Steuerungskomponenten einladen, dabei bildet aber nicht der Einplatinencomputer selbst ein Embedded System, sondern dieses entsteht erst durch die Kombination mit weiteren Kompo- nenten. Betriebssysteme sind u. a. Linux, ELKS¹⁵ (Embeddable Linux Kernel Sub- set) und Windows Embedded Compact¹⁶ (ehemals: Windows CE), viele Geräte verwenden aber auch ein selbst gestricktes System, das nur auf dieser speziellen Hardware läuft. ¹¹ Maker-Szene: https://en.wikipedia.org/wiki/ aker culture ¹² RasPi: https://www.raspberrypi.org/ ¹³ Arduino: https://www.arduino.cc/ ¹⁴ Bild: Raspberry Pi Foundation ¹⁵ https://github.com/jbruchon/elks ¹⁶ https://de.wikipedia.org/wiki/ icrosoft Windows CE 14 1.3 Computer-Komponenten 1.2.5 Echtzeitsysteme Schließlich gibt es noch die Kategorie der Echtzeitsysteme. Hierunter fal- len z. B. die Steuerungen von Produktionsprozessen oder Kraftwerken. Die Echtzeitkomponente im Namen bedeutet, dass es für diese Maschi- nen wichtig ist, auf äußere Signale in einem de inierten Zeitrahmen zu reagieren. Das klassische Beispiel dafür ist ein Produktionsprozess, der eine Kühl lüssigkeit einsetzt, deren Temperatur in einem engen zulässi- gen Betriebsrahmen gehalten werden muss: Sobald die Temperatur unter einen Mindestwert fällt oder über einen Höchstwert steigt, muss sofort ein Kühl- oder Heizaggregat gegensteuern, um den korrekten Betrieb zu sichern. Der Rechner, der diese Steuerung übernimmt, darf nicht durch andere Aufgaben daran gehindert werden, rechtzeitig auf die Tempera- turänderung zu reagieren. Auch Produktionsstraßen, an denen Roboterarme etwa Schweißarbei- ten von Metallteilen erledigen, müssen zeitliche Abläufe exakt einhalten: Jedes Werkstück be indet sich zu einem festgelegten Zeitpunkt an einer Station und muss genau dann bearbeitet werden – nicht eine Zehntelse- kunde früher oder später. Einen Vergleich verschiedener Echtzeitsysteme gibt es auf der englischen Wikipedia.¹⁷ 1.3 Computer-Komponenten In diesem Abschnitt betrachten wir verschiedene Komponenten, die in einem Computer verbaut sein können. Wegen der hohen Integration auf modernen Chips sind manche Komponenten bei einer optischen Untersu- chung oft nicht als separate Einheiten erkennbar. 1.3.1 Hauptpla ne Wie schon beschrieben, ist bei PCs und Servern die Hauptplatine die Komponente des Rechners, die alle übrigen Bauteile miteinander verbin- det. Zu diesem Zweck enthält sie zahlreiche Anschlüsse und Sockel und nimmt darüber u. a. die CPU, den Hauptspeicher und Erweiterungskar- ten auf. ☞ Controller (etwa für Festplatten oder das Netzwerk) können als Karte eingesteckt oder als Chip direkt auf der Platine angebracht wer- den; einige Funktionen sind in heutigen CPUs auch direkt im Prozessor implementiert, z. B. die Funktionen, die früher eine separate Gra ikkarte übernommen hat. Controller Controller werden eingesetzt, um den Prozessor bei der Ansteuerung von komplexen Geräten zu unterstüt- zen. So erhält z. B. eine Festpla e von der CPU nicht direkt die Anweisungen, welche Motorbewegungen, Geschwindigkeiten, Ak vierungen des Schreib-/Lesekopfes etc. zu erledigen sind, sondern der Prozessor schickt nur einen Au rag der Form Lies den 20. Block von der ersten Pla e“ an einen Festpla en-Control- ” ler, und der übersetzt das dann eigenständig in die Anweisungen, welche die Festpla e versteht. ¹⁷ https://en.wikipedia.org/wiki/Comparison of real-time operating systems 15 1 Grundlagen Rechnerau au, Betriebssysteme Für die Verbindung der diversen Komponenten besitzen Hauptplatinen Bussystem Bussysteme. (Den Begriff Bus“ verwendet man in der Informatik immer, ” wenn mehrere Komponenten für den Datenaustausch an ein gemeinsa- mes Kommunikationssystem angeschlossen sind, bei dem i. d. R. immer nur einer“ Daten senden darf, um kein Chaos zu verursachen.) ” Datenbus Der Datenbus verbindet die CPU und den Hauptspeicher; daneben kön- nen weitere Komponenten Anschluss an den Speicherbus inden, etwa DMA Erweiterungskarten, die Direct Memory Access (DMA) unterstützen: Diese können unabhängig vom Prozessor lesend und schreibend auf den Hauptspeicher zugreifen. Moderne Rechner verwenden DMA u. a. für Datentransfers zwischen Festplattencontroller und Hauptspeicher (also für Lese- und Schreibvorgänge auf Platten). Datenbus, Kontrollbus Zum Datenbus gehören Adress- und Kontrollbus: Der Adressbus dient in Zusammenarbeit mit dem Datenbus dazu, festzulegen, auf welche Speicheradresse zugegriffen werden soll. Der Kontrollbus gibt z. B. an, ob ein Speicherzugriff (über Daten- und Adressbus) lesend oder schrei- bend erfolgt. PCI PCI (Peripheral Component Interconnect) ist ein Bussystem, das Erwei- terungskarten mit dem Prozessor verbindet. Der Vorgänger hieß ISA (Industry Standard Architecture). Mehr zu PCI und ISA folgt gleich in Abschnitt 1.3.2. Neben den fest vorhandenen Bussystemen gibt es auch externe Busse, so SCSI etwa den SCSI-Bus (Small Computer System Interface), bei dem sich meh- rere externe Geräte über ein einzelnes Kabel mit mehreren Anschlüssen mit dem SCSI-Controller eines PCs verbinden lassen. Auch frühe Netz- werktechnologien verwendeten Bussysteme, z. B. 10-MBit-Ethernet mit Koaxialkabeln und T-Stücken zum Anschluss der Netzwerkkarten.¹⁸ 1.3.2 Busse für Erweiterungskarten: PCI und ISA Mit Erweiterungskarten lässt sich die Funktionalität eines Rechners – über die fest auf der Hauptplatine verbauten Komponenten hinaus – er- weitern. So ist es möglich, Rechner für unterschiedliche Aufgaben zu kon- igurieren. Beim Ausfall einer Komponente erlaubt diese Lösung außer- dem den leichten Austausch der defekten Karte. Schon vor der Einführung des IBM PC gab es standardisierte Einschübe für Erweiterungskarten, allerdings separat für die jeweiligen Hersteller. Mit dem IBM PC wurde dann die ☞ 8-bi ge XT-Bus-Architektur und als deren Nachfolger die 16-bittige Industry Standard Architecture (ISA) mit Rückwärtskompatibilität zu 8-Bit-Karten de iniert. Abbildung 1.3 zeigt ein AT-Mainboard mit 8- und 16-Bit-Steckplätzen sowie eine 8-Bit-Karte, die wahlweise in die kurzen oder langen Slots passt. ¹⁸ 10BASE2: https://de.wikipedia.org/wiki/10BASE2 ¹⁹ Bild: Hans-Georg Eßer 16 1.3 Computer-Komponenten Abbildung 1.3: Mainboard mit (langen) ISA-Slots und einem (kurzen) XT-Slot.¹⁹ 8-bi g, 16-bi g etc. Was bedeutet denn 8-bi g, 16-, 32- oder 64-bi g? Es geht bei diesen Begriffen um die Frage, wie groß die Zahlen sind, mit denen der Prozessor intern rechnet. Prozessoren speichern Zahlen (im Rahmen von Berechnungen) intern in so genannten Registern (mehr dazu später), und ein 8-bit-Register kann acht Bits speichern. Jedes Bit (binary digit) ist entweder 0 oder 1, damit ergeben sich für ein 8-Bit-Register 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 = 28 = 256 verschiedene Zahlen (z. B. die von 0 bis 255, wenn man keine nega ven Zahlen braucht). Entsprechend speichert ein 16-Bit-Register 16 Bits, damit 216 = 65536 verschiedene Zahlen, also z. B. sol- che zwischen 0 und 65 535. Bei 32 Bit ist der Zahlenbereich 0 bis 4 294 967 295, und bei 64 Bit wird es unübersichtlich (0 bis 18 446 744 073 709 551 615). O – aber nicht immer – hat der Datenbus (siehe oben) die gleiche Breite“ wie die Prozessor-Register: ” Das bedeutet dann, dass z. B. bei einem 64-Bit-Rechner eine 64 Bit breite Zahl in einem Rutsch“ über den ” Datenbus übertragen werden kann. Auch bei Bussen wie dem ISA- oder PCI-Bus geht es bei der Busbreite (die auch wieder als 𝑛-bi g ange- geben wird) um die Frage, wie groß die Daten sind, die zu einem Zeitpunkt übertragen werden können. Höchstgeschwindigkeiten, etwa für Transfers von der Festpla e in den Hauptspeicher, hängen u. a. von dieser Busbreite ab. 17 1 Grundlagen Rechnerau au, Betriebssysteme Als Nachfolger hat PCI (Peripheral Component Interconnect) den ISA-Bus abgelöst; es gibt ihn in verschiedenen Ausführungen mit 32- und 64-Bit- Steckplätzen. Erweiterungskarten de inieren I/O-Ports, über die sie sich ansteuern las- sen. Dabei sind verschiedene Formen der Datenübertragung (zwischen Hauptspeicher und Karte) möglich: Über spezielle Maschinenbefehle (in und out) kann der Prozessor ein- zelne Bytes (8 Bit), 16-Bit-, 32-Bit- oder 64-Bit-Datenblöcke an die Kar- te schicken oder von dieser empfangen. Ein Wiederholungsmodus erlaubt die automatische Übertragung ei- ner Sequenz (wozu in einem Register die Anzahl der Lese-/Schreibvor- gänge angegeben wird), ohne dass dazu eine Schleife programmiert werden müsste. Damit lassen sich größere Datenblöcke (wie z. B. ein Sektor von der Festplatte) in einem Rutsch lesen/schreiben. Während in beiden obigen Fällen der Prozessor für den Datentransfer zuständig ist (also durch den Transfer Rechenzeit verbraucht wird), bietet DMA-Zugriff eine Alternative, bei der die Karte eigenständig (ohne Hilfe des Prozessors) Daten zwischen Hauptspeicher und Karte überträgt. Ein DMA-Transfer muss nur durch geeignete Instruktionen angestoßen werden und läuft dann parallel zur weiteren Aktivität des Prozessors. Nach Abschluss der Übertragung erzeugt die Karte einen Interrupt, der den Prozessor darüber informiert, dass die Aufgabe erle- digt ist. Abbildung 1.4 zeigt eine Auswahl älterer 8-Bit-, 16-Bit- und 32-Bit-Karten (ISA und PCI); bei neueren 32- und 64-bittigen Karten sind die Abstände zwischen den Kontakten kleiner. Abbildung 1.4: Karten im Vergleich – links 8-Bit- und 16-Bit-ISA, rechts PCI.²⁰ ²⁰ Bild: Hans-Georg Eßer 18 1.3 Computer-Komponenten 1.3.3 Prozessor Der Prozessor, den wir in diesem Lehrbrief häu ig als CPU (Central Pro- CPU cessing Unit) bezeichnen, führt den Programmcode aus. Er liest dazu (meist) aus dem Hauptspeicher ☞ Instruk onen, interpretiert diese und führt sie aus. Instruk onen Vielleicht haben Sie schon Computer-Programme in einer modernen Programmiersprache wie C++, Java, Perl oder Python gesehen, oder Sie kennen die einfachere Sprache BASIC, in der man die Home-Computer der 80er und 90er Jahre programmieren konnte. Diese Sprachen sind aber alle vergleichsweise high-level“ – der Prozessor selbst versteht nur sehr einfa- ” che Befehle. Betrachten Sie als Beispiel die folgenden drei sog. Assembler-Befehle: mov eax, 123 mov ebx, 555 add eax, ebx Die Aufgabe der ersten zwei Befehle ist es, die Zahlen 123 und 555 in zwei Prozessor-Register (eax und ebx) zu schreiben. Wenn die CPU diese Instruk onen ausgeführt hat, stehen also diese Werte in den Regis- tern. Der dri e Befehl addiert dann die Inhalte der beiden Register (und überschreibt das erste Register mit dem Ergebnis – dort steht anschließend also 678, und der ursprüngliche Inhalt 123 ist verschwunden). Moderne CPUs unterscheiden mehrere Betriebsarten, in denen es teilwei- se Einschränkungen gibt, was die erlaubten CPU-Instruktionen angeht. Dadurch ist es möglich, dass z. B. nur das Betriebssystem direkt auf Hard- ware zugreifen darf (es arbeitet dann im privilegierten Modus), während privilegierter Modus dies für Anwendungen nicht gestattet wird. Über Interrupts kann der reguläre Programm luss (bei dem der Programm- Interrupts code sequentiell abgearbeitet wird) unterbrochen werden: Dann springt die CPU in einen Interrupt-Handler, der Teil des Betriebssystems ist. Der Interrupt-Handler Interrupt-Mechanismus ist eine technische Voraussetzung für das so ge- nannte präemptive (unterbrechende) Scheduling, das moderne Betriebs- Scheduling systeme einsetzen, um mehrere Anwendungen scheinbar parallel laufen zu lassen, etwa über das Round Robin genannte Zeitscheibenverfahren, bei Round Robin dem jede Anwendung maximal für eine feste Zeit ausgeführt wird: Ein Timer-Baustein erzeugt regelmäßig Interrupts, und das Betriebssystem stellt (im Interrupt-Handler) fest, dass die Zeitscheibe der aktuellen An- wendung abgelaufen ist und zu einem anderen Programm gewechselt werden soll. (Das werden wir im Detail in Kapitel 5.7 besprechen.) 1.3.4 Chipsatz: North Bridge und South Bridge Die Rechnerkomponenten, welche die CPU mit anderen Bauteilen ver- binden, werden als Chipsatz bezeichnet, und sie sind in zwei Hälften, die Chipsatz North Bridge und die South Bridge (wörtlich: nördliche und südliche Brü- cke), unterteilt. Diese Namen ergeben einen Sinn, wenn Sie sich den Rech- nerau bau in einer Gra ik ansehen, bei der die CPU ganz oben (im „Nor- den“) zu inden ist (Abbildung 1.5). Über die North Bridge inden der Arbeitsspeicher 19 Die Rechnerkomponenten, welche die CPU mit anderen Bauteilen verbinden, werden als Chipsatz bezeichnet, und sie sind in zwei Hälften, die North Bridge und die South Bridge (wörtlich: nördliche und südliche Brücke), unterteilt. Diese Namen ergeben einen Sinn, 1 Grundlagen Rechnerau au, Betriebssysteme wenn Sie sich den Rechneraufbau in einer Grafik ansehen, bei der die CPU ganz oben (im „Norden“) zu finden ist (Abbildung 5). CPU GPU North (Grafikkarte) Bridge RAM South PCI Bridge Bus AbbildungAbbildung 1.5: Chipsatz mitChipsatz 5: Der Northmit und South North undBridge South Bridge. Über die North Bridge finden GPU und die Gra ikkarte (GPU: Graphics Processing Unit) der Arbeitsspeicher Anschluss an dieundCPU;die die Grafikkarte (GPU) zwischen CPU und North Bridge Verbindung Anschluss heißt Front Side Busan (FSB). die CPU;Die die Verbindung South Bridgezwischen (die CPU bei und IntelNorth I/O Control- BridgeICH, ler Hub, kurz: heißt Front Side heißt) hängtBusan (FSB). der North Bridge (ist also weiter von Die South Bridge der CPU entfernt, (die in Intel-Notation was längere I/O Controller Signallaufzeiten Hub, kurz: bedeutet) und ICH, bietet An- heißt) hängt an der North Bridge (ist also weiter von der CPU ent- schlussmöglichkeiten für fernt, was längere Signallaufzeiten bedeutet) und bietet Anschluss- möglichkeiten den PCI-Bus für (für Erweiterungskarten) – hier war traditionell auch die Gra ikkarte zuden PCI-Bus inden, die(für Erweiterungskarten) aber wegen gestiegener – hier Anforderungen war traditio- eine nell auch die Grafikkarte zu schnellere Anbindung an die CPU benötigte, finden, die aber wegen gestie- gener Anforderungen eine schnellere Anbindung an die CPU benötigte, USB (den Universal Serial Bus), USB (den den BIOS-Speicher Universal (basic Serial Bus), system) input/output das BIOS und auf älteren Boards auch für den ISA-Bus sowie serielle, parallele und PS/2-Anschlüsse. 23 Bei neueren Prozessoren ist die North Bridge in die CPU integriert und 23 nicht mehr als separater Chip ausgeführt. 23 23 1.4 Universalrechner (von Neumann, Harvard) Der Mathematiker John von Neumann gilt als Vater der modernen Com- puter: Der von ihm bereits 1945 beschriebene „Universalrechner“ EDVAC (Electronic Discrete Variable Automatic Computer, siehe Abbildung 1.6) enthält schon wesentliche Komponenten, die sich auch in aktuellen Ma- schinen wieder inden,²¹ und löste damit frühere Ansätze ab. Neu waren hier vor allem die Idee, Programmcode und Daten gleich zu behandeln (durch Unter- bringung im Hauptspeicher der Maschine), Dualsystem und die Entscheidung, Dualdarstellungen von Zahlen (statt der vorher üblichen Dezimaldarstellung) zu wählen, wodurch Rechenoperationen deutlich vereinfacht wurden. ²¹ J. von Neumann, First Draft of a Report on the EDVAC, Univ. of Pennsylvania, 1945 20 1.4 Universalrechner (von Neumann, Harvard) Abbildung 1.6: Der EDVAC war ein früher Universalrechner.²² 1.4.1 Eigenscha en des von-Neumann-Rechners Eine Maschine, die der von-Neumann-Architektur entspricht, muss die folgenden fünf Komponenten aufweisen: 1. Steuerwerk (steuert die Verarbeitung) 2. Rechenwerk (führt arithmetische und logische Rechenoperationen aus), engl.: Arithmetic/Logic Unit (ALU) 3. Speicherwerk (hält Informationen im Speicher) 4. Eingabewerk (das „I“ in „I/O“) 5. Ausgabewerk (das „O“ in „I/O“) ²² Foto: US Army Research Laboratory 21 1 Grundlagen Rechnerau au, Betriebssysteme In modernerer Terminologie werden Steuer- und Rechenwerk zum Pro- zessor (CPU: Central Processing Unit, zentrale Verarbeitungseinheit) zu- sammengefasst; auch Eingabe und Ausgabe betrachten wir heute als so ähnliche Aufgaben, dass sie zu Ein-/Ausgabe-Einheiten (I/O: Input/Out- put) kombiniert werden. Der Au bau einer solchen Maschine ist unabhängig vom vorgesehenen Zweck; der Rechner ist programmierbar, so dass er zahlreiche Aufgaben universal übernehmen kann. In diesem Sinne ist er universal – anders als etwa ein klassischer (nicht-programmierbarer) Taschenrechner, der nur einige fest verdrahtete mathematische Operationen beherrscht. Die grundlegenden Funktionsprinzipien des von-Neumann-Rechners sind: Der Speicher enthält Programmcode und -daten sowie Berechnungs- zwischenergebnisse und Endergebnisse. Das Eingabewerk liest Daten und Programmcode ein und legt sie im Speicherwerk ab. Der Speicher ist in gleich große Speicherzellen aufgeteilt, die fortlau- fend durchnummeriert sind, also über Speicheradressen angesprochen werden können. Befehle, die der Rechner nacheinander (sequentiell) verarbeiten soll, liegen hintereinander im Speicher. Befehlszähler Das Steuerwerk hat einen Befehlszähler (program counter), der die Speicheradresse enthält, an welcher der nächste auszuführende Befehl steht. Die Befehlsausführung läuft wie folgt ab: Zunächst wird der nächste Be- fehl aus dem Speicher gelesen und in einem Befehlsregister (im Steuer- werk) abgelegt. Der Befehl wird dann dekodiert, und über Steuersignale an andere Komponenten wird die Befehlsausführung (z. B. mit Hilfe des Rechen- oder Ausgabewerks) angestoßen. Danach geht es mit dem nächs- ten Befehl weiter. Die Befehle, die ein von-Neumann-Rechner verarbeiten kann, gliedern sich in arithmetische und logische Befehle (z. B. Grundrechenarten und logi- sche Verknüpfungen wie und, oder, nicht), Transportbefehle (die Daten zwischen den Komponenten hin und her kopieren), bedingte und unbedingte Sprungbefehle sowie Unterprogramm-Aufru- fe (Ablaufsteuerung), Ein- und Ausgabebefehle zur Kommunikation mit angeschlossenen Geräten und sonstige Befehle, z. B. zum Anhalten der Maschine. Da von-Neumann-Maschinen nicht prinzipiell zwischen Daten und Pro- grammcode unterscheiden, sind damit zunächst unerwartete Funktionen möglich, die teilweise auch ein Sicherheitsrisiko darstellen: 22 1.4 Universalrechner (von Neumann, Harvard) Ein Programm kann seinen eigenen Code lesen und z. B. disassemblie- disassemblieren ren (in Quellcode zurück verwandeln) – es kann sich also selbst analy- sieren. Ein Programm kann seinen eigenen Code überschreiben, eine sinnvolle Anwendung wäre etwa die Aktualisierung (ggf. nur von Programmtei- len) durch eine neuere Version aus dem laufenden Programm heraus. Wenn es angrei bare Schwachstellen im Programm gibt, kann damit aber ein Angreifer potenziell Programmcode durch eigenen Code erset- zen und damit diesen eigenen Code ausführen lassen. Ein Programm kann einen Sprung an eine Speicheradresse ausfüh- ren, an der sich Daten be inden. Das ist in der Regel wenig hilfreich, weil dort eben Daten und nicht Befehle abgelegt sind; der Prozessor versucht dann (erfolglos), die Daten als Befehle zu interpretieren. Wenn Sie ein Beispiel einer von-Neumann-Maschine ausprobieren möch- ten, inden Sie im Internet das Programm Johnny Simulator,²³ das für den Einsatz im Schulunterricht entwickelt wurde. Im Download-Bereich gibt es auch eine deutschsprachige Anleitung. Das Programm ist freie Soft- ware, es wurde vom Entwickler Peter Dauscher unter die Lizenz GPL v3²⁴ gestellt. Der Johnny Simulator ist nur für Windows erhältlich. Eine Alternative, die auch unter Linux und macOS läuft, ist das Programm MOPS (Modell- rechner mit Pseudoassembler)²⁵ von Marco Haase, das auch kostenlos verwendbar ist, allerdings nicht unter einer freien Lizenz steht; die Pro- grammquellen sind nicht verfügbar. Auch MOPS wurde für den Einsatz in der Schule konzipiert. 1.4.2 Alterna ves Modell: Harvard Neben der von-Neumann-Architektur gibt es auch die Harvard-Architek- tur, die sich in einem Punkt unterscheidet: Daten und Code sind in ge- trennten Speichern untergebracht, die über separate Speicherbusse an die übrigen Komponenten angeschlossen sind. Damit können u. a. gleich- zeitig Instruktionen und Daten gelesen werden, und der Code-Speicher kann in einem nur lesbaren Modus betrieben werden, wodurch Verän- derungen des Codes während der Laufzeit (selbstmodi izierender Code) ausgeschlossen werden. Die Harvard-Architektur hat ihren Namen wegen der gemeinsamen Ent- wicklung des Rechners Mark I durch Ingenieure der Harvard-Universität Mark I und Kollegen bei IBM erhalten.²⁶ ²³ https://sourceforge.net/projects/johnnysimulator/ ²⁴ https://www.gnu.org/licenses/gpl-3.0.txt ²⁵ http://www.viktorianer.de/info/mops.html ²⁶ https://de.wikipedia.org/wiki/ ark I (Computer) 23 1 Grundlagen Rechnerau au, Betriebssysteme 1.5 CPU-Architekturen, RISC vs. CISC Befehlssatzarchitektur Unter dem Begriff Befehlssatzarchitektur (engl.: Instruction Set Architectu- re, ISA) werden vier Aspekte zusammengefasst: 1. Registerstruktur: Der erste Aspekt beschäftigt sich mit den Registern eines Prozessors. Register sind CPU-interne Speicherplätze, die sich le- sen und schreiben lassen – und zwar mit sehr hoher Geschwindigkeit, weil diese Speicherplätze Teil der CPU sind. Der Prozessor verwendet sie für interne Berechnungen, er merkt sich darin Speicheradressen, und er nutzt sie auch für Kon igurationszwecke. Im Beispiel aus Erklärungsbox zu Instruktionen haben Sie die Register eax und ebx der 32-Bit-Intel-Prozessoren gesehen; es gibt dort noch di- verse weitere Register (z. B. ecx und edx). 2. Adressierungsarten: Assembler-Befehle lassen sich über die Anzahl der zu kodierenden Adressen unterscheiden; üblich sind 0-Adress-, 1- Adress-, 2-Adress- und 3-Adress-Befehle (also n=0, 1, 2, 3). Mit Adressen sind dabei aber nicht nur Speicheradressen gemeint, sondern auch alles andere, was man als Parameter“ einstellen kann. So ist auch die Anga- ” be eines Registers eine Adressangabe (weil die Register intern einfach durchnummeriert werden), und sogar die Angabe einer festen Zahl ist eine solche Adressangabe. Alle Beispielbefehle aus der Erklärungsbox zu Instruktionen sind 2-Adress- Befehle: mov eax, 123 gibt ein Register und eine Konstante an, add eax, ebx gibt zwei Register an. Bei der Betrachtung von Adressierungsarten geht es allerdings nicht nur um die Anzahl der Adressen, sondern auch um die Frage, welche Form von Speicherzugriff damit ermöglicht wird – das führt hier aber zu weit.²⁷ 3. Maschinenbefehlssatz: Der Maschinenbefehlssatz de iniert, welche Maschinenbefehle die CPU kennt und was diese bewirken. Als Beispiele hatten Sie mov (Ablegen einer Zahl in einem Register) und add (Addieren von zwei Registerinhalten) gesehen. Moderne CPUs verstehen Hunderte Maschinenbefehle. Übrigens: Maschinenbefehl und Assemblerbefehl sind nur fast dasselbe; ☞ Maschinen- und Assemblerbefehl. 4. Interruptbehandlung: Prozessoren sind durch Interrupts unterbrech- bar; solche Interrupts verursachen Geräte (wie etwa eine über USB ange- schlossene Tastatur), die damit in der Regel eine Statusmeldung an das System schicken (z. B.: Der/die Benutzer:in hat eine Taste gedrückt.“). ” Hier geht es um die Frage, wie genau solche Unterbrechungen ablaufen und ob und wie sich das im Prozessor kon igurieren lässt. Am Befehlssatz lässt sich ablesen, ob eine CPU in die Kategorie der RISC- oder CISC-Architekturen gehört: RISC RISC steht für Reduced Instruction Set Computing, es steht also nur ein kleiner, einfacher Befehlssatz zur Verfügung. Typische (aber nicht zwin- gende) Eigenschaften einer RISC-Architektur sind: ²⁷ https://de.wikipedia.org/wiki/Adressierung ( echnerarchitektur) 24 1.6 Aufgaben eines Betriebssystems (BS) Maschinen- und Assemblerbefehl Assembler-Befehle sind Befehle in einer Assembler genannten Programmiersprache, mit der Sie (als Entwickler:in) Programme für einen bes mmten Prozessor schreiben können. Diese Befehle sind lesbar, Beispiele dafür haben Sie bereits gesehen (mov eax, 123, add eax, ebx usw.). In dieser Tex orm kann der Prozessor die Befehle aber nicht verstehen, man muss sie erst in eine Sequenz von Bytes (8-Bit-Zahlen, also Zahlen zwischen 0 und 255) umwandeln. Aus jedem Assembler-Befehl, den Sie für einen bes mmten Prozessor verwenden können, wird auf die- sem Weg eine solche Sequenz von Bytes, und bei der handelt es sich dann um einen Maschinensprache- Befehl oder Maschinen-Befehl. Das ist eine sehr einfache Umwandlung, die ein Programm erledigt, das auch Assembler“ heißt; also: Der ” Assembler wandelt ein Assembler-Programm in ein Maschinensprache-Programm um. Alle Befehle haben (wenn man ihre Maschinensprache-Version betrach- tet) dieselbe Länge, so dass die CPU für die Verarbeitung eines Befehls immer dieselbe Anzahl Bytes aus dem Speicher liest. Auch die Aktua- lisierung des Program Counters (bei 32-Bit-Intel-CPUs: eip = Extended Instruction Pointer) ist dadurch einfach – bei sequentieller Verarbei- tung wird einfach eine Konstante zum bisherigen Wert addiert. Durch die einheitliche Befehlslänge ist auch die Anzahl der in einem Befehl nutzbaren Adressen fest (typisch: genau eine). Auf Speicher kann nur über Transportbefehle (Register → Speicher, Speicher → Register) zugegriffen werden. CISC steht für Complex Instruction Set Computing. Anders als bei RISC ist CISC hier der Befehlssatz komplex und umfangreich. Eine De inition ergibt sich im Wesentlichen aus der Idee „nicht RISC“: Befehle können sehr unterschiedliche Längen haben, so dass für den Prozessor nie klar ist, wie viele Bytes er lesen muss, um den nächsten Befehl zu dekodieren – die Gesamtlänge ergibt sich erst, nachdem der genaue Befehlstyp erkannt wurde. Die Anzahl der nutzbaren Adressen ist variabler. Es gibt neben einfachen Transportbefehlen auch arithmetische und logische Befehle, deren Argumente Speicherinhalte sein können. Es gibt Befehle, die spezielle (und seltener benötigte) Berechnungen erledigen – RISC-CPUs verzichten auf solche Befehle. Dass ein Befehl, der gleichzeitig auf Speicher zugreift und Berechnungen ausführt, als komplex bezeichnet wird, liegt nicht nur daran, dass hier zwei unterschiedliche Aktivitäten kombiniert sind, die klassisch auch in verschiedenen CPU-Komponenten (der ALU und der Speichereinheit, vergleiche Abschnitt 1.4.1 zur von-Neumann-Architektur) abgearbeitet werden – es liegt auch daran, dass die Verarbeitung solcher Befehle für die CPU schwieriger ist. 1.6 Aufgaben eines Betriebssystems (BS) Betriebssysteme betreiben“ Computer, doch diese Aussage ist ohne Er- ” läuterung nicht besonders hilfreich: Was bedeutet es, einen Rechner zu betreiben? Frühe Computer führten Anwendungscode direkt aus. Nach 25 1 Grundlagen Rechnerau au, Betriebssysteme dem Einschalten der Maschine wurde der Programmcode von einem Da- tenträger geladen und dann gestartet, wobei das Programm dann voll- ständige Kontrolle über die Maschine hatte: In diesem Sinne betrieb das Anwendungsprogramm die Maschine. Darin verbergen sich zwei wichtige Ideen: Das Programm hat die nötigen Rechte, um die gesamte Hardware zu nutzen; es darf“ zum Beispiel die Gra ikkarte ansteuern, um Ausga- ” ben zu erzeugen, und den Tastaturcontroller abfragen, um Tastendrü- cke zu erkennen und zu verarbeiten. Diese Zugriffsrechte sind dabei nirgends explizit de iniert: Die Maschine ermöglicht einfach generell einem geladenen und gestarteten Programm alle Hardwarezugriffe. Das Programm hat die nötigen Kenntnisse“, um mit der Hardware zu ” arbeiten. Es weiß, welche Hardwarekomponenten in der Maschine vor- Probing handen sind (oder wie es durch Probing²⁸ eine Liste erhalten kann), und für alle vorhandenen Komponenten kennt es die de inierten Me- chanismen zur Kommunikation. Für die obigen Beispiele heißt das, dass die genauen Wege bekannt sind, über die der Tastaturcontroller und die Gra ikkarte angesprochen werden. Diese klassische Vorgehensweise hat diverse Nachteile. So lässt sich zum Beispiel mit diesem Modell immer nur ein einziges Programm ausführen; falls innerhalb des Programms mehrere Dinge parallel ablaufen müssen, hat das Programm selbst für ein Hin- und Herwechseln zwischen mehre- ren Aktivitäten zu sorgen. Dazu kommt, dass jedes Programm umfassen- de Kenntnisse über potentiell vorhandene Hardware haben muss: Das ist vor allem dann ein wichtiger Punkt, wenn das Programm auf verschiede- nen Rechnern (mit unterschiedlicher Hardware-Ausstattung) lauffähig sein soll. Ist das Programm (versehentlich oder absichtlich) fehlerhaft programmiert worden, kann es zudem Geräte durch falsche Ansteuerung beschädigen: In früheren Jahren gab es beispielsweise so genannte Fest- frequenzmonitore, die sich auf diese Weise zerstören ließen. Will ein solches Programm Daten auf einem Datenträger speichern, muss Dateisystem es sich auch ein eigenes Dateisystem (d. h., die logische Strukturierung auf dem Datenträger) ausdenken“, um die Daten ablegen und später auch ” wieder inden zu können. Ein Betriebssystem ist eine zusätzliche Software-Schicht, die zwischen die Hardware und die Anwendungen gesetzt wird: Alle Aufgaben rund um das Erkennen, ☞ Ini alisieren, Verwalten und Nutzen der Hardware werden vom Betriebssystem übernommen, und es bietet eine de inierte Schnittstelle für Anwendungen, die sich nicht mehr selbst mit den Eigen- heiten diverser Hardware-Komponenten beschäftigen müssen, sondern nur diese Schnittstelle kennen und nutzen. ²⁸ Beim Probing wird eine Hardwarekomponente auf Verdacht angesprochen: Wenn sie antwortet, wird sie erkannt; wenn sie nicht antwortet, geht das Programm davon aus, dass sie nicht existiert. 26 1.7 Typische Aufgaben eines Betriebssystems Ini alisieren von Hardware Viele Komponenten, die in einem Rechner verbaut oder an diesen angeschlossen werden, sind unmi el- bar nach dem Einschalten des Computers in einem undefinierten Zustand. Ein externes Diske enlaufwerk weiß“ z. B. nicht, ob eine Diske e eingelegt ist, und sein Schreib-/Lesekopf, der auf einem Schli en zwi- ” schen inneren und äußeren Bereichen der Diske e hin und her fahren kann, weiß“ nicht, ob er ganz ” außen, ganz innen oder irgendwo dazwischen ist. Ein sinnvoller Betrieb des Geräts ist erst möglich, nach- dem es auf eine vernün ige Starteinstellung gesetzt wurde. Die Ini alisierung des Diske enlaufwerks könnte so aussehen, dass über Sensoren im Laufwerk abgefragt wird, ob eine Diske e im Laufwerk liegt (dann weiß man es), und über die Motorsteuerung könnte der Schreib-/Lesekopf auf eine Standardspur (z. B. so weit innen wie möglich) gefahren werden (dann kennt man auch diese Posi on). 1.7 Typische Aufgaben eines Betriebssystems Im Folgenden geht es um einige der typischen Aufgaben, die ein Betriebs- system übernimmt, und um die ☞ Schni stellen, die es Anwendungen Schni stelle zur Verfügung stellt. Schni stelle Schni stelle“ bedeutet dabei, dass eine Anwendung von den Entwickler:innen so programmiert wird, ” dass diese bei bes mmten Aufgaben (etwa: Dateizugriff) das Betriebssystem um Hilfe bi en“. Dabei re- ” agiert das BS aber nicht auf beliebige Anfragen, sondern nur sehr eingeschränkt – in dem Rahmen, in dem die Entwickler:innen des Betriebssystems das vorgesehen haben. Diese Möglichkeiten, das BS anzuspre- chen, sind seine Schni stellen: Da kommen BS und Anwendung zusammen. Gerätetreiber Für diverse Kategorien von Hardware enthält ein Betriebs- system Treiber, also Programmcode, der die Hardware korrekt Treiber ansteuern kann. Im Bereich der Datenträger gehören dazu etwa Festplatten- und USB-Controller, für gängige Peripheriegeräte gehö- ren Drucker-, Scanner-, Tastatur- und Maustreiber dazu. Die Schnittstelle zu den Anwendungen kann hier zum Beispiel ei- ne Abfrage über vorhandene Hardwareklassen enthalten: Das Pro- gramm kann fragen, ob es eine Maus gibt, und sich über Mausbewe- gungen und Klicks informieren lassen, die es dann sinnvoll umsetzt. Ob die Maus via USB, Funk oder über eine alte serielle Schnittstelle angeschlossen ist, spielt dabei für die Anwendung keine Rolle. Dateisystem Auch in den Bereich der Datenträger gehört Unterstützung für eines oder mehrere Dateisysteme: Hier geht es nicht um den physischen Zugriff auf den Datenträger (also etwa das Auslesen oder Schreiben eines bestimmten Sektors auf der Festplatte), son- dern um die logische Verwaltung von Dateien auf einem formatier- Datei ten Datenträger. forma eren Eine unter Linux formatierte externe Festplatte können Sie in der Regel an einem Windows-Rechner nicht lesen: Zwar erkennt Win- dows, dass Sie eine Platte angeschlossen haben, aber es versteht das Format nicht, in dem diese Platte beschrieben wurde. (Anders- rum geht es übrigens: Linux ist lexibler, was den Zugriff auf fremde Dateisysteme angeht.) 27 1 Grundlagen Rechnerau au, Betriebssysteme Die Schnittstelle zu den Anwendungen besteht aus Funktionen zum Erzeugen, Öffnen, Schließen, Lesen, Schreiben, Löschen etc. von Verzeichnis Dateien und Verzeichnissen. Die einzelne Anwendung muss dabei nicht berücksichtigen, ob sich eine Datei auf einer Festplatte, einem USB-Stick oder einer DVD be indet; der Zugriff auf die Dateien ist (aus Programmsicht) einheitlich, unabhängig von der konkreten Hardware. Hauptspeicher Wenn mehrere Programme gleichzeitig auf einer Ma- schine laufen sollen, muss der Hauptspeicher (RAM) zwischen ih- nen aufgeteilt werden. Das Betriebssystem behält den Überblick darüber, welche Speicherbereiche bereits welchem Programm zu- geteilt wurden und welche noch frei sind, und es bietet eventuell Mechanismen, um bei vollständig belegtem Hauptspeicher Platz auslagern zu schaffen – zum Beispiel durch das Auslagern von Speicherin- Speicherschutz halten auf die Festplatte. Moderne Systeme sorgen auch für Spei- cherschutz: Programme können dann nicht in die Speicherbereiche anderer Programme oder des Betriebssystems gucken. Die Anwendungsschnittstelle bietet Mechanismen, mit denen ein Programm um zusätzlichen Hauptspeicherplatz bitten kann, um dynamisch Variablen (oder Objekte) zu erzeugen, bzw. diesen Spei- cherplatz wieder zurückgeben kann. (Diese Aussage zu Variablen und Objekten können Sie erst verstehen, wenn Sie erste Schritte mit einer Programmiersprache unternommen haben. Stellen Sie sich vor, dass Sie eine Textverarbeitung nutzen und über mehrere Stunden immer mehr Text eingeben – dieser Text muss im Speicher abgelegt werden, und der aktuelle Bedarf ändert sich mit der Textlänge.) Scheduling Der Scheduler ist eine Betriebssystem-Komponente, die es ermöglicht, mehrere Anwendungen gleichzeitig auszuführen, ob- wohl nur ein Prozessor (oder weniger Prozessoren als gestartete Zeitscheibe Programme) vorhanden ist. Das geschieht häu ig über ein Zeitschei- benverfahren, bei dem einzelne Programme immer nur für einen kurzen Moment die CPU nutzen dürfen; ist ihre Zeitscheibe“ ab- ” gelaufen, entzieht der Scheduler die CPU und aktiviert ein anderes Programm. Für den/die Anwender:in entsteht der Eindruck, alle Programme würden echt parallel arbeiten. Der Scheduler muss nicht zwingend eine Schnittstelle zu den An- wendungen anbieten; wenn das Betriebssystem unterschiedliche Priorität Prioritäten kennt, bietet es hier eine Möglichkeit für das Programm, seine eigene Priorität herauf- oder herabzusetzen. Im weiteren Sin- ne gehören auch der Start zusätzlicher Programme (aus einem lau- fenden Programm heraus) und der reguläre Programmabbruch (exit) zu angebotenen Schnittstellen. Synchronisa on Wenn mehrere Programme (quasi) gleichzeitig laufen, Betriebsmi el teilen sie sich die Betriebsmittel, also etwa den Hauptspeicher, den Prozessor und die Festplatte. Dabei kann es zu Kon likten kommen, zum Beispiel, wenn zwei Programme dieselbe Datei verändern wol- len. Falls ein Betriebssystem gemeinsame Speicherbereiche für mehrere Programme anbietet (etwa damit diese darüber mitein- ander kommunizieren können), ergeben sich aus der scheinbar 28 1.7 Typische Aufgaben eines Betriebssystems zufälligen Verschachtelung der Programmausführung Schwierigkei- ten, wenn Speicherzugriffe mal in der einen und mal in der anderen Reihenfolge ausgeführt werden. Stellen Sie sich als Beispiel eine Datenbankanwendung vor, die mehrfach auf einem Rechner läuft und Abhebungen von Bankkon- ten verarbeitet, etwa über eine Programmsequenz der Form 1. Lies Kontostand von Konto 𝑛 und speichere ihn in der Variable kontostand 2. Berechne den neuen Kontostand: kontostand : kontostand - abhebung (wobei : eine Zuweisung und damit eine spezielle Programmier- anweisung ist; der alte Wert wird durch den neuen ersetzt) 3. Schreibe neuen Kontostand für Konto 𝑛 in die Datenbank Finden für ein einzelnes Konto zwei Abhebungen gleichzeitig statt, kann es zu Fehlern kommen, wenn keine korrekte Synchronisie- rung der Auslesen-Rechnen-Zurückschreiben-Blöcke gewährleistet wird. Die Schnittstelle zu Anwendungen besteht aus verschiedenen Me- chanismen, die Sie in diesem Lehrbrief kennen lernen werden; da- zu gehören Mutexe und Semaphore. Durch deren korrekten Einsatz Mutex, Semaphor können Programme so geschrieben werden, dass keine Synchroni- sationsfehler auftreten. Benutzerverwaltung Ein System, das den Mehrbenutzer- bzw. Multi- User-Betrieb erlaubt, bietet Mechanismen zur Benutzeranmeldung (inkl. Authenti izierung – also die Überprüfung, dass wirklich ein:e zugriffsberechtigte:r Anwender:in am Rechner sitzt –, z. B. Eingabe von Benutzername und Passwort) und stellt geschützte Bereiche im Dateisystem zur Verfügung, in denen die Benutzer:innen ihre Dateien ablegen und vor dem Zugriff durch Dritte schützen können. Eine so genannte Quota-Regelung kann dazu führen, dass jede:r Quota Nutzer:in nur einen begrenzten Teil des Festplatte zum Speichern eigener Dateien nutzen darf, damit niemand die Platte vollschreibt. Schnittstellen sind hier implizit: Beim Versuch, über die Schnitt- stellen des Dateisystems eine fremde Datei (also eine Datei eine:r anderen Benutzer:in) zu öffnen, verweigert das Betriebssystem ge- gebenenfalls den Zugriff, wenn der/die andere Benutzer:in diesen nicht gestattet hat. Explizite Schnittstellen können das Ändern der Zugriffsrechte von Dateien, das Starten eines Programmes mit den Rechten anderer Benutzer:innen, das Verschenken“ einer Datei ” an andere oder das Abfragen des noch zur Verfügung stehenden Plattenplatzes (bei aktiven Quota-Regeln) sein. 29 1 Grundlagen Rechnerau au, Betriebssysteme 1.8 Geschichte der Betriebssysteme Dieser Abschnitt gibt einen kleinen Einblick in die Geschichte der Be- triebssysteme und stellt einige von ihnen etwas ausführlicher vor. 1.8.1 Ein Leben ohne Betriebssysteme Frühe Computer hatten kein Betriebssystem. Nach dem Einschalten der Operator Maschine konnte ein:e Maschinen-Operator:in (zum Beispiel über eine Tastatur) Programmcode und Daten eingeben und dann die Ausführung des Codes anstoßen. Wenn die Anwendung Peripheriegeräte (z. B. einen Drucker oder einen Lochkartenstanzer zur Ausgabe der Ergebnisse) nut- zen wollte, musste sie diese direkt über geeignete Maschinensprachebe- fehle ansteuern. Durch das Ausschalten des Rechners wurden Code und Daten gelöscht und mussten für einen erneuten Programmlauf ein weite- res Mal eingegeben werden. Abbildung 1.7: Unbenutzte Lochkarte als Datenspeicher.²⁹ Eine Verbesserung der Situation brachten Lochkartenleser, in die ein Kar- tenstapel (Abbildung 1.7) mit Programmcode und Daten eingelegt wer- den konnte: Statt alle Informationen manuell via Tastatur einzugeben, konnten Operator:innen das Programm einmalig auf Lochkarten stanzen und diese Karten dann für jeden Programmlauf nutzen. 1.8.2 BIOS mit Funk onsbibliotheken BIOS Erste Ansätze eines Betriebssystems zeigen Rechner, die über ein BIOS (Basic Input/Output System) verfügen: Das BIOS stellt eine Sammlung von Systemfunktionen zur Verfügung, die sich aus Programmen heraus aufrufen lassen. Ein Beispiel dafür ist die Funktionssammlung der in den 80er Jahren po- Amstrad/Schneider CPC pulären Homecomputer-Reihe Amstrad CPC 464/664/6128 (in Deutsch- Zilog Z80 land als Schneider CPC angeboten) mit Zilog-Z80-Prozessoren: Program- mierer:innen, die die angebotenen Funktionen (etwa für die Ein- und Ausgabe von Zeichen via Tastatur / Monitor) nutzen wollen, müssen die ²⁹ Bild: Hans-Georg Eßer. 30 1.8 Geschichte der Betriebssysteme Einsprungadressen der Funktionen kennen, die in der BIOS-Dokumenta- tion³⁰ aufgelistet sind – so steht etwa ab Speicheradresse 0xbb5a ³¹ eine BIOS-Funktion bereit, die ein einzelnes Zeichen auf dem Bildschirm aus- gibt. Diese kann von Entwicklern genutzt werden, um eine klassische String-Ausgabe (für Null-terminierte Strings) wie folgt zu implementie- ren:³² print: ld a,(de) ; Zeichen aus Adresse DE in Akku A laden cp 0 ; vergleiche A mit 0 ret z ; wenn 0, dann Abbruch (return) call 0xbb5a ; BIOS-Funktion " printchar " aufrufen inc de ; nächstes Zeichen... jr print ; zurück zum Schleifenanfang (Dabei ist de ein 16-Bit-Register, und a ist das 8-bittige Akku-Register.) Diese BIOS-Funktionen liegen nicht im RAM, sondern im ROM (Read-only Memory) des Homecomputers, lassen sich also nicht überschreiben. Je mächtiger das BIOS ist, desto leichter wird die Anwendungsentwick- lung, weil vorhandene Funktionalität (wie beim Einsatz von Bibliothe- ken) einfach genutzt werden kann, statt Features selbst zu entwickeln. 1.8.3 Kompa bilitätsfragen Immer noch in der Welt der 8-Bit-Computer (und damit in den 70er und 80er Jahren) entstand der Wunsch, Software für verschiedene Geräte / Architekturen nicht mehrfach entwickeln zu müssen. Das Betriebssystem CP/M (Control Program for Microcomputers von Digital Research) führte CP/M dazu ein Schichtenmodell ein: Das BIOS ist maschinenspezi isch und stellt (wie oben) eine Samm- lung nützlicher Funktionen für die Verwendung der Maschine dar. Ein- sprungadressen (das sind die Adressen im Speicher, wo der Programm- code für ein bestimmtes Feature beginnt) der Funktionen können sich von einer Maschine zur anderen unterscheiden. Das BDOS (Basic Disk Operating System) enthält leistungsfähigere Funk- BDOS tionen, die ohne konkrete Kenntnis der Hardware implementiert sind – sie nutzen nur die BIOS-Funktionen. Dadurch muss für eine Portie- Por erung rung von CP/M auf eine neue Maschine nur das BIOS neu implemen- tiert werden, während das BDOS anschließend nur neu übersetzt wird. Anwendungsprogramme und die Console Command Processor (CCP) genannte Shell nutzen dann BDOS-Funktionen. Diese Schichten machten es für den Betriebssystemhersteller Digital Re- search und auch für Anwendungsentwickler:innen leichter, eine neue Hardware-Architektur zu unterstützen. So gab es mit CP/M-86 auch eine CP/M-86 Portierung auf 16-Bit-Prozessoren (Intel 8086/8088), die sich allerdings Intel 8086/8088 nicht mehr durchsetzen konnte, sondern im Wettbewerb MS-DOS unter- lag. ³⁰ http://www.cpcwiki.eu/index.php/BI S Function Summary ³¹ 0xbb5a ist eine spezielle Darstellung der Zahl 47962; die so genannten Hexadezimalzah- len lernen Sie in einem anderen Modul kennen, falls sie nicht bereits bekannt sind. ³² Bitte ignorieren Sie dieses Beispiel einfach, wenn Sie bisher gar keine Programmier- erfahrung haben. 31 1 Grundlagen Rechnerau au, Betriebssysteme 1.8.4 Struktur für die Dateiablage Ein Problem früher Systeme ergab sich aus der Datenspeicherung auf Lochkarten oder Magnetbändern (im professionellen Umfeld mit Band- maschinen; bei Privatanwender:innen mit Kassettenrekordern): Diese Medien erlauben nur sequentiellen Zugriff, und damit war keine beson- dere Struktur für die Datenablage nötig – Anwendungsdaten lagen roh“ ” unmittelbar hinter dem Programmcode oder auf einem separaten Band. Diskettenlaufwerke ermöglichen – anders als Bandlaufwerke – einen wahlfreien Zugriff: Der Schreib-/Lesekopf kann eine beliebige Spur an- steuern und darauf einen Sektor lesen oder schreiben. Damit ist nicht län- ger ein