Menu Close

Computersysteme

Ein Computersystem – eigentlich fast jedes Digitalgerät – besteht aus elektronischen Bauteilen (= Hardware), deren Zweck es ist, Programme (= Software) auszuführen – also binäre Eingaben zu manipulieren um binäre Ausgaben zu erzeugen (s. EVA). Die eigentliche Verarbeitung, also das Manipulieren (Speichern, Verrechnen, Vergleichen, Ausgeben, …) der Daten übernimmt die Hardware.

Hardware
Unter Hardware versteht man die elektronisch oder mechanisch arbeitenden Komponenten eines Computersystems. Dazu gehört beispielsweise die CPU, in der die eigentlichen Berechnungen stattfinden, verschiedene Arten von Speichern (Register, Caches, RAM, Festplatte), aber auch alle Arten von digitalen Geräten, die man an den Computer anschliessen kann (sogenannte Peripheriegeräte, z.B. Tastatur, Maus, Bildschirm, Drucker, ...)
Analogie
Die “Hardware” eines Menschen wären die Moleküle, Zellen, Organe,… aus denen sein Körper aufgebaut ist.
Genauere Informationen dazu, wie verschiedene Hardwarekomponenten eigentlich funktionieren, finden Sie in dieser gut gemachten Serie von Videos

Das Interessante und ein Stück weit Geniale an einem Computersystem ist nun aber, dass die Hardware von alleine gar nichts tut. Stattdessen braucht es ein Programm, eine Software, um die Hardware zu instruieren, was sie wann mit welchen Daten tun soll.

Software
Der Begriff Software entstand ursprünglich in Abgrenzung zum Begriff Hardware und bezieht sich daher auf alle nicht-physischen Bestandteile eines Computers. Im allgemeinen Sprachgebrauch hat sich inzwischen eingebürgert, Software als Sammelbegriff für alle von einem Computer ausführbaren Programme (inklusive zugehöriger Daten, wie z.B. Icons oder Schriften) zu benutzen. Zur Software zählen neben den Anwendungsprogrammen, die man auf einem Computer installieren kann, auch jene Programme, die zum Betriebssystem gehören und die moderne Computer überhaupt erst so flexibel nutzbar machen.
Analogie
Die “Software” eines Menschen wären seine Gedanken, Gefühle und Instinkte, die den Körper steuern.

In flexiblen Digitalgeräten – z.B. Computern oder Mobiltelefonen, inzwischen auch in Autos oder Waschmaschinen – unterscheidet man zwischen zwei Arten von Software: dem Betriebssystem auf der einen, und den Anwendungsprogrammen auf der anderen Seite.

Betriebssystem
https://de.wikipedia.org/wiki/Betriebssystem
Das Betriebssystem (z.B. Windows , MacOS, oder eine der vielen Linux-Varianten) ist selbst eine Software – man kann es auf eine DVD brennen oder aus dem Internet herunterladen und auf verschiedenen Computern installieren – aber es hat sehr spezielle Aufgaben: in der Hauptsache ist das Betriebssystem dafür zuständig, dass andere Programme die Hardware des Computers komfortabel benutzen können. Der Aufbau der meisten Computersysteme entspricht demnach einem Schichtenmodell, s. nebenstehende Abbildung.
Analogie
Man kann sich das Betriebssystem ungefähr so vorstellen wie einen Sekretär für die anderen Programme:
https://pixabay.com/de/frosch-figur-akten-stapel-1339892/
Wenn der Chef eine Akte ablegen will, macht er das nicht selbst, sondern er gibt sie dem Sekretär. Das hat den Vorteil, dass sich der Chef nicht mit den ganzen Details der Ordnung in den Aktenschränken beschäftigen muss – er kann einfach den Sekretär bitten, die Akte wieder herauszusuchen. Genau genommen muss der Chef (oder die Chefs) noch nicht mal wissen, ob es überhaupt Aktenschränke gibt, wichtig ist nur, dass der Sekretär die Akten wiederfindet. Genauso speichert ein Anwendungsprogramm eine Datei nicht selbst, sondern es bittet das Betriebssystem darum, das zu tun. Weil das Betriebssystem die gesamte Ordnung der Daten auf der Festplatte überwacht, wird so auch verhindert, dass sich verschiedene Programme beim Laden oder Speichern in die Quere kommen, oder dass die Anwendungsprogramme überhaupt wissen müssen, was für eine Festplatte in diesem Computer eingebaut ist – oder was für ein Prozessor, Hauptspeicher, Bildschirm, … Somit müssen Anwendungsprogramme spezifisch für ein bestimmtes Betriebssystem geschrieben sein, nicht aber für alle möglichen Hardwarekombinationen. Das Betriebssystem selbst muss aber natürlich mit allen möglichen Hardwarekomponenten kommunizieren können, in der für das jeweilige Gerät passenden Sprache. Dafür haben moderne Betriebssysteme sogenannte Treiber (drivers) für fast jedes Gerät verfügbar und installieren diese automatisch, wenn ein neues Gerät erkannt wird (plug & play). Das Betriebssystem ist also eigentlich nicht nur Sekretär (Schnittstelle zu Anwendungsprogrammen), sondern gleichzeitig auch ein sehr fähiger Hausmeister (Schnittstelle zur Hardware).
Das Betriebssystem vermittelt also zwischen den Anwendungsprogrammen und der Hardware des Computers, es
  • organisiert und verwaltet die Speichermedien (RAM, Festplatte, ...)
  • verwaltet und steuert alle Hardwarekomponenten und Peripheriegeräte und Systemressourcen
  • regelt, welches Programm wann Zugriff auf die CPU (und sonstige Ressourcen) erhält
  • installiert, startet, beendet und verwaltet die Anwendungsprogramme
  • organisiert die Kommunikation mit externen Servern (versenden und empfangen von Daten im Netzwerk)
  • stellt den Anwendungsprogrammen über eine öffentliche API Dienste zur Verfügung (z.B. speichern, laden, drucken, Maus oder Tastatur abfragen, etwas am Bildschirm anzeigen, ...)
  • stellt eine grafische Benutzeroberfläche (GUI, Graphical User Interface) bereit, über die der Benutzer mit Grundfunktionen des Computers interagieren kann (z.B. Installieren und Starten von Programmen, Anzeigen und Verwalten von Dateien, Anzeigen und Beenden von laufenden Prozessen, Fehlermeldungen, ...)
  • verwaltet Benutzer und Rechte (von Benutzern, Anwendungen, ...)
  • startet und beendet den Betrieb des Computers
Für normale Computer sind heute drei Familien von Betriebssystemen weit verbreitet: Windows, MacOS und Linux. Für alle gibt es verschiedene Versionen, u.a. weil sie natürlich beständig weiterentwickelt werden, um auch für immer neue Geräte und Programme einen fähigen Sekretär abgeben zu können. Windows und MacOS werden von grossen Firmen (Microsoft und Apple) entwickelt und sind teuer. Linux (in den meisten Varianten) ist kostenlos, da es von freiwilligen Programmierern entwickelt wird. Normalerweise müssen Anwendungsprogramme und Betriebssystem zusammenpassen, so gibt es viele Desktopprogramme in drei Ausführungen: für Windows, für Mac, und für Linux. Eine Ausnahme sind einige Linuxvarianten, die versuchen Windows zu simulieren, z.B. Ubuntu – hier laufen die meisten Windows Programme. Natürlich haben nicht nur normale Computer ein Betriebssystem, sondern alle digitalen Geräte, die eine gewisse Flexibilität mitbringen, z.B. Smartphones (Android, iOS, Symbian, …), programmierbare Taschenrechner, moderne Autos, und sogar Waschmaschinen.
Zu den wichtigsten Aufgaben des Betriebssystems gehört es, zu regeln, welches Programm wann auf die CPU zugreifen, also seine Rechnungen ausführen darf. Diese Aufgabe wird mithilfe sogenannter “Scheduling”-Algorithmen gelöst – die grundlegendsten davon lassen sich mit dem Applet cpu.jar (zugehörige Website von Jim Weller) ausprobieren.
Die entscheidende Frage ist natürlich, welcher Algorithmus (in welcher Situation) die beste Lösung bietet – und dafür müsste man zuerst definieren, welche Eigenschaft es überhaupt zu optimieren gilt. Natürlich wird das Problem des process scheduling in echten Computern noch dadurch verkompliziert, dass (a) auch das Betriebssystem Zugriff auf die CPU braucht, um auszurechnen, wer als nächstes dran ist und dass (b) die Prozesse heutzutage meist über mehrere Prozessoren (bzw. Kerne) verteilt werden müssen.

Das als Schichtenmodell angelegte Zusammenspiel zwischen Hardware, Betriebssystem und Anwendungsprogrammen sorgt dafür, dass man selbst auf alten Computern sehr einfach neue Programme installieren kann – oder das Betriebssystem updaten – und ihm damit Funktionalitäten verleihen, die bei seiner Herstellung vielleicht noch nicht mal erfunden waren.
Um den eigentlichen Kern dieser Flexibilität, die Idee einer programmierbaren universellen Rechenmaschine (= Computer), zu verstehen, muss man sich allerdings noch etwas genauer anschauen, wie ein Computer eigentlich aufgebaut ist.

Computerarchitektur
Auch heute noch richtet sich der Aufbau fast aller gängigen Computer nach einem 1945 erstmals vorgestellten Referenzmodell, der nach ihrem Erfinder benannten "Von-Neumann-Architektur". Diese Architektur beschreibt die Verbindung (über einen BUS) eines Prozessors (CPU) und seiner drei integralen Bestandteile (Steuerwerk/CU, Rechenwerk/ALU, und Speicherwerk/Memory Unit) mit einem Arbeitsspeicher (RAM), in dem - und das ist die Besonderheit - sowohl die auszuführenden Befehle als auch die zu verarbeitenden Werte (in binärer Form) gespeichert sind. Weil die Befehle auch nur Daten sind, können beide in einem Programm (in Maschinensprache) flexibel kombiniert werden und somit auf ein und derselben Hardware die verschiedensten Algorithmen umsetzen. Das Zusammenspiel dieser Kernkomponenten wird vom Steuerwerk des Prozessors orchestriert, welches fortwährend die Schritte des "Von-Neumann-Zyklus" (auch fetch-execute-cycle) ausführt, grob gesagt:
  1. Hole den aktuellen Befehl aus dem RAM
  2. Dekodiere den Befehl (= Nachschlagen im Befehlssatz)
  3. Führe den Befehl aus (= Strom in bestimmte Schaltkreise leiten)
  4. Speichere ggf. das Ergebnis im RAM (je nach Befehl)
Moderne Computer führen mehrere Millarden solcher Zyklen pro Sekunde (= GHz) aus und sind damit zu erstaunlichen Leistungen fähig – basierend auf lediglich ein paar Dutzend Befehlen (Befehlssatz), die sich wiederum allesamt auf die drei logischen Operationen AND, OR und NOT zurückführen lassen.
Analogie
Dieses Konzept ist so inhärent informatisch, dass es keine Analogie aus der realen Welt geben kann.
Wie genau ein Prozessor (innerhalb einer Von-Neumann-Architektur) ein Programm (in Assembler/Maschinensprache) ausführt, erklären diese Folien: Computerarchitektur.pptx
Die Architektur eines Computers erlaubt also die Ausführung von Programmen (in Maschinensprache) im Kern, im Zusammenspiel von Arbeitsspeicher und Prozessor. Das Betriebssystem – selbst ein aus vielen Subroutinen bestehendes Programm – löst die meisten organisatorischen Probleme im Zusammenspiel von spezifischen Anwendungsprogrammen und spezifischen Hardwarekomponenten, so dass der Umgang mit verschiedensten Arten von Software für den versierten Benutzer ziemlich einfach ist.
Das Dokument Software.pdf konzentriert sich auf die Perspektive des Benutzers im Umgang mit verschiedenen Arten von Software – auf der Basis der oben beschriebenen Grundlagen.