2 Zusammenspiel der Hardware mit der Software ( auf dem PC) 2.1. Hardware Etwas zur Historie: ● Serienproduktion von Computern begann in den 60er Jahren ● ab etwa 1966 Einsatz von integrierten Schaltungen, hochintegrierten Schaltungen (siehe für Details: Remboldt/Levi S. 9­30) Die meisten heutigen Rechner sind nach dem John­von­Neumann­Prinzip aufgebaut (auch John­von­Neumann­Architektur), d.h. Das Programm, das ausgeführt werden soll, wird im Computer gespeichert. Schematische Darstellung: Eingabegeräte Zentraleinheit (CPU) Rechenwerk Speichergeräte Register Steuerwerk Dialoggeräte Arbeitsspeicher Ausgabegeräte Hardware – Gesamtheit der technisch realisierten Komponenten eines Computers Hardware­Komponenten: ● Zentrale Bestandteile des Rechners auf der Hauptplatine (motherboard): ⇨Prozessor = Zentraleinheit (Central Processing Unit – CPU) ● ⇨Arbeitsspeicher Eingabegeräte: Tastatur (Texteingabe), Maus , CD­ROM, Scanner (Eingabe von Texten, Bildern), Videoadapter (Eingabe von Video­Clips), Mikrophon (sprachliche Eingabe) ● Ausgabegeräte: Bildschirm, Drucker, Plotter (graphische Ausgabe), Lautsprecher (sprachliche Ausgabe), Videorecorder (Ausgabe Video­Clips), Projektor ● Speichergeräte: Festplatten, CD­ROM, Disketten, USB­sticks ● Dialoggeräte: z.B. Modem, Fax, ISDN­Karte Programmausführung: ­ Programm oder Daten werden über die Eingabegeräte in Speichergeräten aufbewahrt (z.B auf der Festplatte) ­ Beim Aufruf eines ausführbaren Programms: ⇨Laden in den Arbeitsspeicher ⇨Abarbeiten durch den Prozessor ⇨Löschen aus dem Arbeitsspeicher Arbeitsspeicher ­ auch RAM = random access memory (da über Speicheradressen beliebiger direkter Zugriff auf Speicherplatz) ­ dient der Speicherung von Programmen während ihrer Ausführung ­ speichert ein Programm und zugehörige Daten ab Beginn seiner Ausführung bis zum Abschluß/Abbruch Inhalt ändert sich ständig Inhalt wird gelöscht, sobald Programmausführung beendet ist (auch bei Abschalten des Computers) Prozessor Zentraleinheit (CPU) Rechenwerk Steuerwerk Register ­ Kernstück des Rechners ­ seine Aufgabe besteht in der Verarbeitung von Befehlen ­ führt die Schritte eines abzuarbeitenden Programms auf Hardwareebene aus Bestandteile: ● Steuerwerk: Interpretation und Ausführung der aktuellen Programmbefehle entsprechende Aktivierung des Rechenwerks Steuerung der benötigten Daten zwischen Registern und Arbeitsspeicher ● Rechenwerk: Schaltkreise, die arithmetische und logische Operationen ausführen können (kurz ALU = arithmetic logic unit) ● Register: extrem schnell zugreifbare Hilfsspeicherzellen, die direkt mit dem Rechenwerk verbunden sind z.B. Befehlszähler, Akkumulator, Instruktionsregister CPU arbeitet mit einer Hierarchie von Zwischenspeichern: sogenannter CACHE ­ auf den Cache kann deutlich schneller zugegriffen werden ­ Problem: je schneller desto teurer und voluminöser zwei Speicherhierarchien gebräuchlich: Level­1­Cache ­ sehr schnell, sehr teuer Level­2­Cache ­ zur schnellen Programmverarbeitung werden Programmstücken in den Cache g geladen (System)Bus Serie paralleler Datenleitungen, über die Daten zwischen Prozessor und Peripheriegeräten (Ein/Ausgabe­, Speicher/Dialoggeräte) ausgetauscht werden Außerdem: ­ Je nach Ausstattung noch gewisse Karten, die in Sockelleisten (slots) eingesteckt sind: z.B. Graphikkarte, Soundkarte, ISDN­Karte, Netzkarte ­ Diese Karten heißen auch Controller, da sie für die Ansteuerung der entsprechenden Geräte vom Prozessor aus verantwortlich sind Beispiel: die Graphikkarte dient zur Ansteuerung des Bildschirms, besitzt einen eigenen Speicher zur Speicherung des Bildschirminhaltes und einen eigenen Graphikprozessor 2.2 SOFTWARE Gesamtheit aller Programme und deren Dokumentationen, die auf einem Computer eingesetzt werden können Ebenen: Hardware Betriebssystem Anwendungs­ Programm (A) Betriebssysteme bringen den Computer zum „Laufen“ und organisieren die Kopplung von Hardware und Anwenderprogrammen Die aktuell wichtigsten Betriebssysteme: WINDOWS (MSDOS), UNIX / LINUX, APPLE (B) Anwenderprogramme arbeiten auf der Grundlage eines entsprechenden Betriebssystems Wichtige Kategorien: ● Textverarbeitung (Latex, Word, Office) , Tabellenkalkulation (Excel) ● Datenbanken (Literaturrecherche, Datenverwaltung) ● mathematisch orientierte Anwendungssoftware (Maple, Mathematica, Matlab) ● Compiler für höhere Programmiersprachen ● Entwicklungsumgebungen für höhere Programmiersprachen (PellesC, Plato, KDevelop) Die meisten Nutzer von Computertechnik arbeiten auf der Ebene der Programmerstellung mit dazu zur Verfügung stehenden Entwicklungsumgebungen Programmiersprachen (A) Höhere Programmiersprachen ­ strukturiertes Programmieren anhand einer logisch aufgebauten, der menschlichen in gewisser Weise nahen, Sprache relativ leichte Lesbarkeit der Programme, damit bessere Pflege und Wandelbarkeit möglich Nachteil: erheblicher Effizienzverlust im Laufzeitverhalten ­ gestatten die Formulierung von Algorithmen auf relativ verständliche Weise: z.B. if (a < 0) a = ­a; ( C ) if a < 0 then a := ­a; (PASCAL) IF (a < 0) THEN (FORTRAN) a= ­a ENDIF if (a < 0) (MATLAB) a=­a; end ­ Die aktuell wichtigsten höheren Programmiersprachen sind: C (Ritchie , 1972) bzw. C++ (Stroustrup, 1985) FORTRAN (Backus, 1954) , aktuelle Version FORTRAN 95 ('03 im Kommen), PASCAL (Wirth, 1970) , JAVA (1995) , PYTHON (van Rossum, nach 1990) ­ Programmiersprachen sind standardisiert Bei Vorliegen eines entsprechenden Compilers leichte Portierbarkeit auf andere Computersysteme eventuell haben Sprachen mehrere Dialekte: BORLAND­C, PLATO­C, PELLES­C Weitere bekannte Sprachen (aus Vergangenheit und Gegenwart): LOGO, BASIC, ALGOL 60, ALGOL 68 , MODULA, PROLOG, SIMULA, LISP, SQL, OBERON, PYTHON, PERL, MATLAB, HTML ­ Unterscheidung höherer Programmiersprachen: Fortran Pascal C C++ Java Prolog Logo Matlab imperativ, prozedural imperativ, prozedural imperativ, prozedural imperativ, objektorientiert imperativ, objektorientiert deklarativ, logisch deklarativ, funktional Skriptsprache, imperativ ­ Gebiet der Theoretischen Informatik: Metasprachliche Beschreibung der Syntax einer Programmiersprache ­ Backus­Naur­Form (siehe backnaur.pdf) ­ Chomsky­Grammatiken ­ Attribut­Grammatiken Jedes Programm wird letztlich in ausführbaren Code übersetzt, d.h. in Maschinensprache, um vom Prozessor verarbeitet werden zu können. (B) Maschinensprachen ­ streng auf einen bestimmten Prozessortyp zugeschnitten, demzufolge nicht portierbar ­ sehr effizient im Laufzeitverhalten ­ jeder Befehl ist durch eine bestimmte Nummer kodiert, sog. OP­Code (Befehlscode für eine Operation) dadurch schwer lesbar und ohne Hilfsmittel kaum erstellbar jeder Algorithmus muß in seine elementarsten Einzelschritte zerlegt werden (C) Assemblersprachen ­ maschinennahe Sprachen ­ auch streng auf konkreten Prozessor orientiert und somit nicht übertragbar (portierbar) ­ im Laufzeitverhalten ähnlich effektiv wie direkter Maschinencode ­ Maschinenbefehle werden durch sprachnahe Bezeichnungen verständlicher, z.B. Arithmetische und logische Operationen ADD, SUB ... Additions­ bzw. Subtraktionsbefehl NOT, AND, OR ... log. Verneinung, log. ODER bzw. Log. UND LOAD, MOVE ... Datentransferbefehle heutige Prozessoren können bereits über 100 verschiedene Grundoperationen direkt verstehen und verarbeiten 2.3 Grobdarstellung einer Programmausführung 1. Programmdatei wird in den Arbeitsspeicher geladen übersetzt in Maschinencode, d.h. als Folge von OP­Codes 2. CPU übernimmt die Kontrolle, führt die den OP­Codes entsprechend den Befehle nach der Reihenfolge aus Zyklus einer Abarbeitung: Befehlsregister enthält die Speicheradresse des nächsten Befehls LOAD: Lade den OP­Code aus dem Speicherplatz den der Befehlszähler angibt INCREMENT: Setze Befehlszähler auf die nächste zu lesende Speicheradresse im Arbeitsspeicher EXECUTE: führe den Befehl aus, der im Befehlsregister steht hole dazu ggf. Daten aus Arbeitsspeicher Beispiel: (mgl. Assemblerbefehle für Addition zweier Zahlen) LOAD R1, S1 LOAD R2, S2 ADD R1, R2, R3 3. Ergebnis wird auf vorgegebenem Platz gespeichert oder an Ausgabegerät gegeben Speicherung/Verarbeitung der OP­Codes: ⇨OP­Codes werden auf Hardwareebene verarbeitet Im Arbeitsspeicher kann jede Speicherzelle genau zwei Zustände besitzen: AN / AUS Strom fließt / fließt nicht ⇨ kleinstmögliche Informationseinheit ist zweiwertig 0 oder 1 ⇨OP­Codes werden in Binärdarstellung (Dualdarstellung) gespeichert 2.4 Grundeinheiten und Zeichensätze Informationseinheiten (Speichereinheiten) Bit (binary digit) ­ die zweiwertige Grundeinheit in der Informationstheorie und damit jeder Informationsverarbeitung abstrakten Werte: 0 oder 1 ­ technische Realisierung: Magnetisierung, Spannung in Speicherzelle = Schaltkreis ­ ein Bit reicht nicht aus, um Zeichen zu speichern Byte ­ Gruppe von 8 Bits ­ nächsthöhere Einheit der Informationsverarbeitung ­ i.a. kleinstmögliche Speichereinheit, die im Arbeitsspeicher eine Adresse besitzt (d.h. Blöcke zu je 8 Speicherzellen sind im Arbeitsspeicher nacheinander durchnumeriert) KByte = 1024 Byte = 210 Byte = 1 Kilobyte MByte = 1024 KByte = 220 Byte = 1 Megabyte GByte = 1024 MByte = 230 = 1 Gigabyte Alle Daten/Programme sind intern in Binärdarstellung umgewandelt Wie funktioniert das? (1) Alphanumerische Zeichen (characters): Menge der Buchstaben {A, B, ... , Z, a, b, ... , z} Menge der Ziffern {0, 1, ... , 9} Menge gewisser Sonderzeichen {+, ­, *, /, ...} + Steuerzeichen : z.B. für Zeilenvorschub o.ä. Alle Zeichen können über Tastatur eingegeben werden ⇨intern in Binärdarstellung: durch Kodierung der Zeichen Drei Standards haben sich etabliert: EBCDI­Code (Extended Binary Coded Digit Interchange) ... IBM­Standard Darstellung der Zeichen durch 1 Byte => Zeichenvorrat: 256 Zeichen ASCII­Code (American Standard Code for Information Interchange) Darstellung der Zeichen durch 1 Byte => Zeichenvorrat: 256 Zeichen Unicode (Universal Codeset) Darstellung der Zeichen durch 2 Byte => Zeichenvorrat: 65536 Zeichen Beispiel: Zeichen EBCDI ASCII­Nr. ASCII Unicode A 1100 0001 65 0100 0001 0000 0000 0100 0001 1 1111 0001 49 0011 0001 0000 0000 0011 0001 um alle möglichen Zeichen zu kodieren, reicht je 1 Byte Speicherplatz, d.h. 8 Speicherzellen aus (127 Zeichen; 128 = 2^7 – sogar 7 Bit reichen schon aus) (2) Zeichenketten(Wortgruppen): ­ jedes Zeichen wird einzeln in Binärdarstellung überführt ­ die Binärdarstellungen der Zeichen werden im Speicher aneinandergereiht