Computersysteme

Ein Computer ist ein System von Bauteilen, die in ihrer Gesamtheit einen programmierbaren Automaten mit universeller Rechenfähigkeit bilden – aber wie funktioniert das?

MATERIALIEN

 

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).

Hardware

Die eigentliche Verarbeitung, also das Manipulieren (Speichern, Verrechnen, Vergleichen, Ausgeben, usw.) der Daten übernimmt die Hardware.

Hardware

Erstellt von Seraina Hohl

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, usw.)

Analogie

Die «Hardware» eines Menschen wären die Moleküle, Zellen, Organe usw., aus denen sein Körper aufgebaut ist.

Zuordnungsaufgabe cg-hardware-aufgabe.pptx (Lösungen)

Genauere Informationen dazu, wie verschiedene Hardwarekomponenten eigentlich funktionieren, finden Sie in dieser gut gemachten Serie von Videos auf YouTube.

Software

Das Interessante und ein Stück weit Geniale an einem Computersystem ist, 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

Erstellt von Seraina Hohl

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.

Betriebssystem

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

Wikimedia

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.

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 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 – unter Ubuntu laufen auch 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, usw.), programmierbare Taschenrechner, moderne Autos, und sogar Waschmaschinen.

Analogie

Man kann sich das Betriebssystem als Sekretär für die anderen Programme vorstellen:

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.

Wie die obenstehende Analogie nahelegt: Ein Anwendungsprogramm speichert 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 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 oder 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. Meistens installieren sie 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, usw.);
  • 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, usw.);
  • startet und beendet den Betrieb des Computers.

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.

Zusammenspiel von Software, Betriebssystem und Hardware

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

Erstellt von Seraina Hohl

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.

Quelle: OInf

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 Milliarden 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.pdf

Aufgabe

Für den Little Man Computer können Sie selbst kleine Programme in einer vereinfachten Maschinensprache (reduzierter Befehlssatz) schreiben. Im Aufgabenblatt LittleManComputer.pdf finden Sie Anregungen zum Vorgehen.

Die Architektur eines Computers erlaubt also im Kern die Ausführung von Programmen (in Maschinensprache), im Zusammenspiel von Arbeitsspeicher und Prozessor (und dem Bus dazwischen). 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.

Wer selber einen Computer zunächst aus einfachsten Bauteilen erstellen, nach und nach komplexer machen und schliesslich als Roboter auf dem Mars aus einem Labyrinth führen möchte, ist hier genau richtig: https://www.nandgame.com