SZH, LK Inf 11/1 Lue Grundwissen über den Computer Inhalt 1 Anschlüsse für externe Geräte .................................................................................................... 2 1.1 Serielle Schnittstelle ............................................................................................................... 2 1.2 USB ........................................................................................................................................ 2 1.3 Firewire ................................................................................................................................... 3 1.4 Parallele Schnittstelle ............................................................................................................. 3 1.5 PS/2-Schnittstelle ................................................................................................................... 3 1.6 Übungsaufgaben .................................................................................................................... 3 2 Die Software eines PCs ................................................................................................................ 4 2.1 BIOS ....................................................................................................................................... 4 2.2 Betriebssystem ....................................................................................................................... 4 2.3 Treiber .................................................................................................................................... 5 2.4 Anwendungssoftware ............................................................................................................. 6 2.5 Übungsaufgaben .................................................................................................................... 6 3 Speicherung und Verarbeitung von Daten ................................................................................. 6 3.1 Bits ......................................................................................................................................... 6 3.2 Bitfolgen ................................................................................................................................. 7 3.3 Speichergrößen ...................................................................................................................... 7 3.4 Kodierung von Text ................................................................................................................ 7 3.5 Kodierung von Zahlen ............................................................................................................ 9 3.6 Datentypen ........................................................................................................................... 10 3.7 Übungsaufgaben .................................................................................................................. 10 4 Grundprinzip der Rechnerarchitektur ....................................................................................... 11 4.1 Von-Neumann-Rechnerkonzept .......................................................................................... 11 4.2 Organisation des Arbeitsspeichers ...................................................................................... 12 4.3 Übungsaufgaben .................................................................................................................. 13 5 Programmierung ......................................................................................................................... 13 5.1 Programmiersprachen .......................................................................................................... 13 5.2 Erzeugung von Programmcode ........................................................................................... 15 5.3 Übersetzung von Java-Programmen ................................................................................... 15 5.4 Übungsaufgaben .................................................................................................................. 16 6 Quellen-Angaben ........................................................................................................................ 16 1/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue 1 Anschlüsse für externe Geräte Alle externen Geräte des Computers benötigen Anschlüsse an das Bus-System des Rechners, so genannte Schnittstellen. [Ref2] Definition Als Schnittstelle (engl.: interface) bezeichnet man zunächst ganz allgemein die Verbindungsstelle zwischen zwei miteinander in Beziehung stehenden informationsverarbeitenden Systemen oder Systemkomponenten, über die der Austausch von Daten oder Steuerinformationen erfolgt. Schnittstellen umfassen Vereinbarungen (Protokolle) über die Art und Weise, wie Informationen ausgetauscht werden. Die Normierung von Schnittstellen ermöglicht es, unterschiedliche Systeme zu koppeln und einzelne Systemkomponenten nach Belieben gegen andere mit gleicher Schnittstelle auszutauschen. Merke: Jede an einen Computer angeschlossene Komponente benötigt eine Schnittstelle! Man unterscheidet zwischen folgenden Schnittstellenarten: 1. Softwareschnittstellen: Diese dienen zum Datenaustausch zwischen Programmen oder Programmteilen. 2. Hardwareschnittstellen: Das sind Adapter, Stecker und andere Bauelemente zum Datenaustausch zwischen verschiedenen Hardwarekomponenten (z.B. zwischen zwei Computern oder zwischen Zentraleinheit und Arbeitsspeicher oder zwischen Zentraleinheit und peripheren Geräten). Merke: Hardware-Komponenten sind nur kompatibel, wenn sie über gleiche Schnittstellen verfügen! Die meisten PCs besitzen folgende Hardware-Schnittstellen: 1.1 Serielle Schnittstelle Durch eine serielle Schnittstelle wird jedes einzelne Byte nacheinander, bitweise (Bit für Bit) über eine Leitung gesandt. Die serielle Schnittstelle ist die unkomplizierteste Art der Datenübertragung. Hier werden vor allem Geräte angeschlossen, bei denen es nicht so sehr auf hohe Übertragungsgeschwindigkeiten ankommt, z.B. die Maus. Die serielle Schnittstelle ist international genormt und hat in Europa die Bezeichnung „V.24". Unter DOS und Windows heißen die seriellen Schnittstellen allgemein "COM" (COM1, COM 2...). Für den seriellen Anschluss gibt es 2 genormte Stecker, einen 9-poligen und einen 25-poligen: 1.2 USB USB ist die Abkürzung für Universal Serial Bus. USB ist eine neuartige Schnittstelle, bei der die Daten ebenfalls seriell, d.h. bitweise übertragen werden. Die USB -Schnittstelle ist für alle Peripheriegeräte mit kleinem bis mittlerem Datenaufkommen geeignet (Tastatur, Maus, Joystick, Scanner, usw.). An eine USB-Schnittstelle können bis zu 127 Geräte angehängt werden. 2/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue Die neue Technologie hat zwei wichtige Vorteile: Plug & Play: Neuere Windows-Betriebssysteme erkennen USB-Geräte sofort nach dem Einstecken, installieren automatisch die passenden Gerätetreiber und machen die Hardware betriebsfertig. Hot-Plug-Fähigkeit: Wenn ein USB-Gerät an- oder abgestöpselt werden soll, muss der Rechner vorher nicht mehr heruntergefahren werden. 1.3 Firewire Firewire bezeichnet eine verhältnismäßig neue (von 1995) serielle Schnittstellentechnologie zur Übertragung digitaler Daten mit hohen Geschwindigkeiten von bis zu 400 MBit / Sek. Die Schnittstelle ist bisher noch nicht sehr weit verbreitet. 1.4 Parallele Schnittstelle Durch eine parallele Schnittstelle (auch Parallelport genannt) werden die einzelnen Bits eines Datenwortes (Byte) gleichzeitig (parallel), also byteweise, über 8 Leitungen übertragen, was die schnelle Übertragung großer Datenmengen ermöglicht und vor allem für den Anschluss von Druckern relevant ist (daher auch Druckerschnittstelle). Parallele Schnittstellen werden unter MS-DOS und MS Windows mit "LPT" (LPT1, LPT2...) bezeichnet. 1.5 PS/2-Schnittstelle Die PS/2 Schnittstelle ist speziell zum Anschluss einer Maus oder einer Tastatur an einen PC entwickelt wurden. Die Schnittstelle unterstützt einen runden Mini-Stecker mit 6 Stiften. 1.6 Übungsaufgaben 1) Welche externen Geräte kennst du, die an den Rechner angeschlossen werden? Welche Geräte werden typischerweise intern im Gehäuse des Computers untergebracht? Sortiere die Geräte jeweils nach Ein- und Ausgabegeräten. 2) Über welche Schnittstelle(n) werden folgende Geräte typischerweise an den Rechner angeschlossen? a) Maus b) Tastatur c) Drucker d) Scanner e) Modem 3) Wieso ist die Daten-Übertragung über eine parallele Schnittstelle schneller als die Übertragung über eine serielle Schnittstelle? 3/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue 4) Wie werden interne Geräte an den Rechner angeschlossen? 5) Was muss man auf dem Rechner software-mäßig tun, damit die angeschlossenen Geräte funktionieren? 6) Wie kann man auf dem Betriebssystem Windows kontrollieren, ob alle Geräte software-mäßig richtig konfiguriert sind? 2 Die Software eines PCs 2.1 BIOS Startet man den Rechner ("Hochfahren", booten), wird, bevor das Betriebssystem in Aktion tritt, das sogenannte BIOS (Basic Input Output System) gestartet. Das BIOS ist ein Ein- und Ausgabesystem, welches unabhängig vom nachfolgend installierten Betriebssystem vom Hersteller mitgeliefert wird. Das BIOS steht schreibgeschützt in einem ROM-Baustein (engl. read only memory), testet bei jedem Computerstart alle Hardwarekomponenten, startet den Rechner und sucht das Hauptbetriebssystem. Während des laufenden Betriebs erledigt das BIOS elementare Aufgaben zur Ansteuerung von Hardwarekomponenten wie Tastatur, Maus, Festplatte und Grafikcontroller und arbeitet damit dem Betriebssystem zu. [Ref2] 2.2 Betriebssystem Das Betriebssystem ist eine spezielle Software zur Steuerung der Grundfunktionen eines Computers und zur Verwaltung der Hardware. Es besteht aus einer Reihe von Systemprogrammen (Systemsoftware), die den Umgang mit CPU, Peripherie und Anwendungsprogrammen ermöglichen, und ist damit die Schnittstelle zwischen Mensch und Computer sowie zwischen Anwendungsprogrammen und Peripheriegeräten. 2.2.1 Aufgaben eines Betriebssystems Das Betriebssystem steuert alle zum Betrieb des Rechners notwendigen Verwaltungsaufgaben. Ein Betriebssystem gehört in der Regel zur Grundausstattung des Computers. Es ist jedoch prinzipiell austauschbar. Die wichtigsten Aufgaben des Betriebssystems sind: (1) Speicherverwaltung: Verwaltung des Hauptspeichers (2) Dateiverwaltung: Organisation der Daten auf Festplatten und anderen Datenträgern. Dazu gehört die Vorbereitung der Datenträger (Partitionieren von Festplatten, Formatieren und Benennen von Datenträgern), die Erstellung von Verzeichnissen, das Kopieren, Löschen, Verschieben und Umbenennen von Dateien usw. (3) Prozessverwaltung: Ausführung von Anwendungsprogrammen und Aufteilung der Rechenzeit der CPU zwischen allen momentan laufenden Programmen. (4) Geräteverwaltung: Steuerung der Arbeit aller angeschlossenen internen und peripheren Geräte. (5) Kommunikation mit anderen Computersystemen 2.2.2 Bestandteile eines Betriebssystems Betriebssysteme vereinen sogenannte residente und transiente Bestandteile: Residente Bestandteile werden nach dem Start sofort in den Arbeitsspeicher (RAM) geladen und verbleiben dort während der gesamten Betriebszeit des Computers. Diese Bestandteile haben die Aufgabe die Kommunikation zwischen Nutzer und Rechner einschließlich des Ladens und Startens von Anwendungsprogrammen zu ermöglichen. 4/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue Transiente Bestandteile befinden sich in eigenständigen Dateien, die auf der Festplatte (oder Diskette) in einem gesonderten Verzeichnis gespeichert sind und nur in den Arbeitsspeicher geladen werden, wenn es notwendig ist. [Ref2] 2.2.3 Grafische Benutzeroberfläche Die Benutzeroberfläche ist der Teil eines Programms, den der Benutzer auf dem Bildschirm sehen kann. Sie bildet die Schnittstelle zwischen dem Programm und seinem Benutzer, welcher über die Tastatur oder die Maus Dienste anfordern kann. Die einfachste Version einer Benutzeroberfläche zeigt eine Kommandozeile. Der Benutzer hat die Möglichkeit zeilenweise Text einzugeben und erhält als Antwort vom Programm wieder eine Textausgabe. Moderne Programme und Betriebssysteme haben eine sogenannte grafische Benutzeroberfläche, die dem Benutzer ein Fenstersystem mit vielen bunten Bildern präsentiert. Die Benutzeroberfläche des Betriebssystems eines PCs ist der sogenannte Desktop (deutsche Übersetzung: „Schreibtisch“). 2.3 Treiber Treiber sind Programme zur Ansteuerung einer Software- oder Hardware-Komponente. Ein Treiber ermöglicht einem Anwendungsprogramm die Benutzung einer Komponente, ohne deren detaillierten Aufbau zu kennen. Abbildung: Das Zusammenwirken von Betriebssystem, Treibern und BIOS Zum Beispiel kann ein Textverarbeitungsprogramm nicht im Voraus alle verschiedenen Drucker kennen, die es vielleicht einmal bedienen soll. Wenn der Benutzer aus dem Datei-Menü den Befehl „Drucken“ auswählt, soll der Druck funktionieren, egal welcher Drucker angeschlossen ist. Dazu bedient sich das Programm einer Software-Schnittstelle, die vom Betriebssystem definiert ist. Diese Schnittstelle beinhaltet u.a. Befehle wie „Drucke ein kursives ’a’ “, „Neue Zeile anfangen“ und „Seitenumbruch“. Die Umsetzung dieser Befehle in Signale für einen bestimmten Drucker leistet ein Programm, das der Druckerhersteller beisteuert. Solche Programme nennt man Treiberprogramme, kurz auch Treiber. Die Anforderungen eines Anwendungsprogramms an ein bestimmtes Gerät werden vom Betriebssystem an den entsprechenden Treiber umgeleitet. Dieser wiederum sorgt für die korrekte Ansteuerung des Druckers. [Ref1] Treiber für gängige Geräte sind meist schon im Betriebssystem vorhanden. Wenn aber ein neues Gerät, das dem Betriebssystem noch nicht bekannt ist, an einen Rechner angeschlossen wird, so muss üblicherweise auch ein zugehöriger Treiber installiert werden. 5/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue 2.4 Anwendungssoftware Die Art der Aufgaben, die ein Computer erledigen kann, ist nicht von vorneherein festgelegt. Für den Computer können beliebig viele Anwendungsprogramme generiert werden. Auf einem PC können mehrere Anwendungsprogramme parallel laufen. Ein ausführbares Programm besteht aus einem für den Rechner zugeschnittenen Maschinencode und kann daher immer nur auf einem bestimmten Betriebssystem laufen. Unter Windows werden ausführbare Programme mit der Endung *.exe gekennzeichnet. „Exe“ steht dabei für das englische Wort executable (auf deutsch: ausführbar). Typische Aufgaben für Anwendungsprogramme sind: Textverarbeitung, Tabellenkalkulation, Buchhaltung, Spiele, Adressverwaltung, usw. 2.5 Übungsaufgaben 1) Welcher Teil der Software liegt nicht auf der Festplatte, sondern befindet sich auf einem ROMBaustein (eng. read only memory, schreibgeschützter Speicher) auf der Hauptplatine (Mainboard)? 2) Wie wird ein Betriebssystem hergestellt? 3) Nenne die Namen einiger dir bekannter Betriebssysteme. 4) Nenne die Namen einiger dir bekannter Anwendungsprogramme. 5) Welche Aufgaben hat ein Betriebssystem? 6) Ein Benutzer führt mit dem Textverarbeitungsprogramm Word die nachfolgenden Aktionen durch. Gib an, bei welchen der Aktionen neben dem Textverarbeitungsprogramm auch das Betriebssystem oder ein Gerätetreiber in Aktion treten muss. a) Starten des Programms Word. b) Öffnen der bereits vorhandenen Datei „MeinText.doc“. c) Veränderung der Schriftart des Textes von „Arial“ nach „Times New Roman“. d) Abspeichern des geänderten Textes. e) Ausgabe des Textes auf den Drucker. 7) Begründe, wieso das Betriebssystem in residente und transiente Bestandteile unterteilt wird. 8) Wie kann man auf einem PC die Einstellungen des BIOS verändern? 3 Speicherung und Verarbeitung von Daten 3.1 Bits Im Computer müssen alle Informationen technisch dargestellt werden. Die kleinste Speichereinheit heißt ein Bit und ist in der Lage einen von zwei erlaubten Zuständen anzunehmen. Ein Bit kann technisch z.B. folgendermaßen dargestellt werden: elektrische Ladung eines Kondensators: ungeladen oder geladen elektrische Spannung an einem Widerstand: 0 Volt oder 5 Volt Magnetisierung auf einer Magnetscheibe: unmagnetisiert oder magnetisiert Wenn man das Ergebnis auf eine Frage kodieren möchte, können die Zustände des Bits z.B. folgendermaßen interpretiert werden: nein oder ja 6/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue falsch oder wahr schwarz oder weiß dunkel oder hell links oder rechts ... Da das Bit genau zwei verschiedene Zeichen kodieren kann, spricht man von einem sogenannten binären Code. Zur Darstellungen des Bit-Wertes benutzt man meistens die Zahlen: 0 oder 1 Standardmäßig interpretiert man 0 als negative Antwort (falsch) und 1 als positive Antwort (wahr). [Ref1] 3.2 Bitfolgen Lässt eine Frage mehrere Antworten zu, so benötigt man mehr als 1 Bit zur Kodierung der Informationen. Man muss sogenannte Bitfolgen bilden. Wenn ein Rechner Daten liest oder schreibt, wenn er mit Daten operiert, gibt er sich nie mit einzelnen Bits ab. Das wäre im Endeffekt viel zu langsam. Statt dessen arbeitet er immer nur mit Gruppen von Bits, entweder mit 8 Bits, 16 Bits, 32 Bits oder 64 Bits. Man spricht dann von 8-Bit-Rechnern, 16-BitRechnern, 32-Bit-Rechnern oder 64-Bit-Rechnern. Eine Gruppe von 8 Bits nennt man ein Byte. Auf einem 16-Bit Rechner nennt man eine Gruppe von 2 Bytes (16 Bit) ein Wort. Auf einem 32-Bit Rechner dagegen nennt man eine Gruppe von 4 Bytes (32 Bit) ein Wort. [Ref1] 3.3 Speichergrößen Beim Umgang mit binären Größen ist es günstig, für die Maßeinheiten Zweierpotenzen zu wählen. Deshalb steht die Bezeichnung „Kilo-Byte“ nicht für exakt 1000 Bytes sondern für die Zweierpotenz, die der Zahl Tausend am nächsten kommt. Dasselbe gilt für andere gebräuchliche Größen, wie z.B. Mega (Millionen). Die folgende Tabelle bietet eine Übersicht über die Maßeinheiten. Maßeinheit Kilobyte Megabyte Gigabyte Terabyte Abkürzung KByte, KB MByte, MB GByte, GB TByte, TB Größe in Byte 210 = 1024 220 = 1024 * 1024 = 1048576 230 = 1024 * 1024 * 1024 = 1073741824 240 = 1024 * 1024 * 1024 * 1024 = 1099511627776 Gerundet Tausend Byte 1 Million Byte 1 Milliarde Byte 1 Billion Byte 3.4 Kodierung von Text Um Texte in einem Rechner darzustellen, kodiert man Alphabet und Satzzeichen in Bitfolgen. Mit einem Alphabet von 26 Kleinbuchstaben, ebenso vielen Großbuchstaben, einigen Satzzeichen wie etwa Punkt, Komma und Semikolon und Spezialzeichen wie ’+’, ’&’, ’%’ hat eine normale Schreibmaschinentastatur eine Auswahl von knapp hundert Zeichen. Die Information, wo ein Zeilenumbruch stattfindet oder wo ein Text eingerückt werden soll, kodiert man ebenfalls durch spezielle Zeichen. Solche Sonderzeichen wie z.B. das CR-Zeichen (engl. carriage return = Wagenrücklauf) und das Tabulatorzeichen Tab, werden nie ausgedruckt. Sie haben beim Ausdrucken lediglich die entsprechende Wirkung. Sie heißen deshalb Steuerzeichen oder nichtdruckbare Zeichen. [Ref1] 7/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue 3.4.1 Ascii-Code Mit einem Byte sind genau 256 Zeichen darstellbar. Zur Zuordnung der 256 Bitmuster eines Bytes zu jeweils genau einem Zeichen nutzt man heute meist den sogenannten Ascii-Code. ASCII ist die Abkürzung für American Standard Code for Information Interchange. Der ASCII-Zeichensatz wurde vom American National Standards Institute (ANSI), dem nationalen Normenausschuss der USA – vergleichbar mit dem Deutschen Institut für Normierung (DIN) – festgelegt. Ursprünglich war der ASCII-Zeichensatz ein 7-Bit-Code, es konnten also nur 128 Zeichen dargestellt werden, das achte Bit diente als Prüfbit. Die Zeichen im Bereich von 0 bis 127 bilden deshalb den Standard Zeichensatz, der auf allen Rechnern gleich ist (siehe Abbildung). Die ersten Zeichen (0 bis 32) werden als Steuerzeichen bzw. Formatierungszeichen für Ein- und Ausgabegeräte verwendet. Die Bedeutung der Steuerzeichen kann der folgenden Tabelle entnommen werden: dez asc Bedeutung der Abkürzung Übersetzung, Bedeutung 0 1 2 3 4 5 6 7 8 9 10 11 12 leeres Zeichen, Nil, Null Anfang des Kopfes Anfang des Textes Ende des Textes Ende der Übertragung Stationsaufforderung positive Rückmeldung Klingel Rückwärtsschritt Horizontal-Tabulator Zeilenvorschub Vertikal-Tabulator Formularvorschub nul soh stx etx eof enq ack bel bs ht lf vt ff null character start of heading start of text end of text end of transmission enquiry acknowledgement ring bell backspace horizontal tabulation line feed vertical tabulation form feed 8/16 Grundwissen über den Computer 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 127 cr so si dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us del carriage return shift-out shift-in data link escape device control 1 device control 2 device control 3 device control 4 negative acknowledgement synchronous idle end of transmission bloc cancel end of medium substitute escape file separator group separator record separator unit separator delete SZH, LK Inf 11/1 Lue Wagenrücklauf Dauerumschaltung Rückschaltung Datenübertragungsumschaltung Gerätesteuerung 1 Gerätesteuerung 2 Gerätesteuerung 3 Gerätesteuerung 4 negative Rückmeldung Synchronisierung Ende Datenübertragungsblock ungültig Ende der Aufzeichnung Substitution Umschaltung Hauptgruppen-Trennung Gruppen-Trennung Untergruppen-Trennung Teilgruppen-Trennung Löschen Die Zeichen im Bereich von 128 bis 255 bilden den erweiterten Ascii-Code. Es gibt verschiedene Code-Tabellen für den erweiterten Ascii-Code, zwischen denen man wählen kann. Die Code-Tabellen enthalten länderspezifische Erweiterungen für Umlaute, Akzente, grafische Zeichen und weitere spezielle Symbole. [Ref2] 3.4.2 Unicode Da in einem Byte nur 256 verschiedene Zeichen kodiert werden können, hat der Ascii-Code den Nachteil, dass die Zeichen des erweiterten Ascii-Codes je nach verwendeter Code-Tabelle auf unterschiedlichen Rechnern verschieden interpretiert werden. Die Datenübertragung zwischen den Rechnern ist dadurch problematisch. Um dieser Problematik abzuhelfen wurde vor einigen Jahren der Unicode Zeichensatz entwickelt. Dieser Zeichensatz benutzt zwei Bytes (16 Bit) zur Kodierung jedes Zeichens und kann dadurch 65536 verschiedene Zeichen darstellen. Sämtliche länderspezifischen Zeichen, die in Ascii in verschiedenen Code-Tabellen untergebracht sind, haben im Unicode-Zeichensatz Platz. Der Unicode-Zeichensatz wird z.B. in der Programmiersprache Java verwendet. 3.5 Kodierung von Zahlen Eine Bitfolge kann als eine Zahl im Dualsystem interpretiert werden. Das Dualsystem Zahlensystem zur Basis 2. Jede Stelle in einer Dualzahl steht also für eine Zweierpotenzen. ist ein Beispiel: Die Dualzahl 1101 wird folgendermaßen in das dezimale Zahlensystem umgerechnet: 1 * 23 + 1 * 22 + 0 * 21 + 1 * 20 = 8 + 4 + 0 + 1 = 13 Am leichtesten fällt die Umwandlung zwischen Dualzahl und Dezimalzahl mit einer Tabelle, in deren Kopf man die Zweierpotenzen schreibt: 9/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue 27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 1 150 1 0 0 1 0 1 1 0 129 1 0 0 0 0 0 0 1 69 0 1 0 0 0 1 0 1 Dezimalzahl 3.6 Datentypen Aus dem obigen Text haben wir gelernt, dass eine Bitfolge ganz unterschiedliche Informationen speichern kann. Die Daten können z.B. byteweise als Buchstaben interpretiert werden, die gemeinsam einen Text bilden. Es können aber z.B. auch Zahlenwerte oder Wahrheitswerte kodiert werden. Bei der Programmierung ist es deshalb wichtig zu wissen, wie die Daten in einem bestimmten Speicherbereich interpretiert werden sollen. In den meisten höheren Programmiersprachen wie z.B. Java legt der Programmierer für die Speicherbereiche, in denen Programmdaten abgespeichert werden, einen sogenannten Datentyp fest, der die Art der Information festlegt. In der Sprache Java gibt es z.B. folgende Datentypen (Auswahl): Datentyp Ganze Zahl (engl. integer) Fließkommazahl (engl. floating-point number) Schriftzeichen (engl. character) Bezeichnung int Speichergröße 4 Byte Wertebereich -2.147.483.648 bis 2.147.483.647 float 4 Byte char 2 Byte +/- 3,40282347 * 1038 (7 Nachkommastellen) 65537 verschiedene Zeichen (Unicode-Zeichensatz) 3.7 Übungsaufgaben 1) Was ist der Unterschied zwischen Daten und Informationen? 2) a ) Wieviele Bits braucht man, um die vier Himmelsrichtungen (Norden, Osten, Süden, Westen) zu kodieren? Gib ein mögliches Kodierungsverfahren an. b) Wieviele Bits braucht man, wenn man zusätzlich die Zwischenrichtungen Nordost, Südost, Nordwest und Südwest kodieren möchte? Gib wieder ein geeignetes Kodierungsverfahren an. 3) Wieviele Bits verarbeiten gängige PCs auf einmal? 4) Wieviele verschiedene Werte können abgespeichert werden in ... a) ... einem Bit? b) ... einem Byte? c) ... einem Wort? 5) a) Welche Aufgabe haben Steuerzeichen bei der Textkodierung? Gib einige Beispiele. b) Wie kann man sich im Textverarbeitungsprogramm MS Word die Steuerzeichen anzeigen lassen? 6) Wie wird der Texteditor WordPad, den folgenden Ascii-Zeichencode darstellen (jede Dezimalzahl kodiert ein Byte)? 72 101 105 105 111 9 87 111 114 105 100 13 10 33 13 10 10/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue 7) Rechne die folgenden Dualzahlen in Dezimalzahlen um: a) 1010 b) 0111 c) 1000 1000 d) 0010 0101 8) Kannst du dir vorstellen, weshalb man bei der Programmierung häufig Zahlenangaben im Hexadezimalsystem (Basis 16) vornimmt anstatt im Dezimalsystem (Basis 10)? Tip: Überlege, wie viele Bits zur Darstellung einer Ziffer in den beiden Zahlensystemen benötigt werden. 9) Wie könnte man in einer zwei Byte langen Bitfolge ganze Zahlen kodieren? Wieviele verschiedene Zahlen können kodiert werden? Beachte, dass ganze Zahlen auch negativ werden können. 10) Welche Problematik tritt auf, wenn man Zahlen mit Nachkommastellen kodieren will? Beschreibe ein mögliches Kodierungsverfahren für 4 Byte große Zahlen. 4 Grundprinzip der Rechnerarchitektur 4.1 Von-Neumann-Rechnerkonzept Ein wichtiges Modell zur Beschreibung der Arbeitsweise eines Computers entwarf John von Neumann 1946. Trotzdem die Technik in der Zwischenzeit große Fortschritte gemacht hat, arbeiten die meisten Computer heutzutage immer noch nach den damals festgelegten Grundprinzipien: Der Computer besteht aus den fünf Funktionseinheiten: Steuerwerk, Rechenwerk, Speicher, Eingabegeräten und Ausgabegeräten. Das Steuerwerk und das Rechenwerk sind Bestandteil des Prozessors (CPU). Alle Daten (Text, Programmkode, Zahlen, usw.) werden binär kodiert. Programme, Daten, Zwischen- und Endergebnisse werden im Hauptspeicher (RAM) abgelegt. Der Hauptspeicher besteht aus fortlaufend durchnummerierten Speicherworten. Der Inhalt eines Speicherworts kann nur über seine Nummer, die sogenannte Adresse, angesprochen werden. Der Prozessor speichert Daten (Programmbefehle, Zahlen, usw.) während der Bearbeitung in Registern ab. Ein Register kann jeweils ein Speicherwort speichern. Aufeinanderfolgende Befehle eines Programms werden in aufeinanderfolgenden Speicherwörtern abgespeichert. Das Steuerwerk arbeitet die Befehle der Reihe nach (sequentiell) ab. Die Adresse des aktuellen Befehls wird in einem speziellen Register abgespeichert. Zum Bearbeiten des nächsten Befehls erhöht das Steuerwerk die Adresse in diesem Register um Eins. Durch Sprungbefehle kann von der Bearbeitung der Befehle in der gespeicherten Reihenfolge abgewichen werden. Das Rechenwerk kennt arithmetische Befehle, wie Addition und Multiplikation, logische Befehle, wie Vergleiche, Negation und Konjunktion und Schiebebefehle, mit denen die Bits in einem Datenwort verschoben werden können. Das Steuerwerk kennt u.a. Transportbefehle, wie z.B. die Übertragung eines Speicherwortes vom Arbeitsspeicher in ein Register. Wir betrachten einen einfachen Verarbeitungsprozess in einem Von-Neumann-Rechner (siehe Abbildung). Die zu verarbeitenden Daten werden in einem zusammenhängenden Bereich des Hauptspeichers abgespeichert, die binär kodierten Programmbefehle werden fortlaufend in einem anderen Hauptspeicherbereich des Rechners abgelegt. Ein Programmbefehl besteht im einfachsten Fall aus einem binären Speicherwort. Die Speicheradresse des aktuellen Programmbefehls steht im Befehlszähler. Zur Abarbeitung wird die im Befehlszähler stehende Adresse über das Speicheradressregister SAR angewählt und der Befehl über das Speicherdatenregister SDR in das Befehlsregister des Prozessors geladen. 11/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue Abbildung: Befehlsweg im Rechner. Der Befehlszähler adressiert den Hauptspeicher über das Speicheradressregister und lädt den gespeicherten Befehl über das Speicherdatenregister in das Befehlsregister. Im Steuerwerk wird gemäß dem Befehl im Befehlsregister eine Folge von Steueranweisungen für den Prozessor erzeugt. Typische Steueranweisungsfolgen sind: Bereitstellen einer Hauptspeicheradresse im SAR. Übertragung eines adressierten Speicherwortes vom Hauptspeicher in ein Arbeitsregister. Bereitstellen von Operanden aus einem Arbeitsregister für das Rechenwerk, und das Speichern des Rechenergebnisses in einem Arbeitsregister. Speichern eines Registerinhalts unter einer Speicheradresse im Hauptspeicher. Erhöhen des Befehlszählers um eine Adresse. Im Regelfall werden die Programmbefehle fortlaufend verarbeitet, d.h. der Befehlszähler wird automatisch mit jedem neuen Befehl um eins erhöht (inkrementiert). Es gibt besondere Programmbefehle, die entweder grundsätzlich oder in Abhängigkeit von Rechenergebnissen eine abweichende Befehlsverarbeitung erzwingen. Bei diesen Sprungbefehlen wird der Befehlszähler mit einer neuen Adresse geladen. [Ref4] 4.2 Organisation des Arbeitsspeichers Wird ein Programm aufgerufen, so wird – vereinfacht ausgedrückt – vom Betriebssystem ein Speicherblock des Hauptspeichers freigegeben, in dem das Programm laufen kann. Dieser Laufzeitspeicher besteht typischerweise aus vier Bereichen (siehe Abbildung). Im ersten Bereich wird der Programmcode selbst abgelegt, der zweite Bereich enthält Programmdaten, die während des ganzen Programmablaufs benötigt werden, z.B. globale Variablen. Die Größe dieser beiden Bereiche lässt sich bereits zur Compilierzeit ermitteln. Der dritte und der vierte Bereich des Laufzeitspeichers sind variable groß. Für beide zusammen ist jedoch in der Regel ein fester Bereich reserviert. Den dritten Bereich nennt man Stack und den vierten Heap. Abbildung: Laufzeitspeicher für ein Programm Der Stack wird für die Verwaltung von Prozedur- und Funktionsaufrufen benutzt. Wird eine neue Funktion aufgerufen, dann wird die Ausführung der gerade aktiven Funktion unterbrochen, und Informationen zum Zustand der aktuellen Funktion, wie z.B. die aktuellen Registerwerte, werden auf dem Stack gespeichert. Wenn die Kontrolle nach Beendigung der aufgerufenen Funktion zurückkehrt, wird mit Hilfe der abgespeicherten Informationen der alte Zustand wiederhergestellt. Auch lokale Variablen von Funktionen werden auf dem Stack gespeichert. 12/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue Viele Programmiersprachen erlauben die Zuweisung von Speicherplatz für Daten Programmkontrolle; der Speicherplatz für diese Daten wird vom Heap genommen. [Ref3] unter 4.3 Übungsaufgaben 1) Die folgende Tabelle beschreibt, wie man die Rechnung z = (x – y) · (x + y) in der maschinennahen Programmiersprache Assembler programmieren kann. Das linke Assembler-Programm ist für eine Maschine geschrieben, in der nur ein Arbeitsregister für die Berechnung zur Verfügung steht. Das rechte Assembler-Programm verwendet zwei Register (R1 und R2). Man kann erkennen, dass durch die Verwendung mehrerer Register weniger Rechenschritte erforderlich sind und so die Rechenzeit verkürzt wird. [Ref2] Einadressmaschine Zweiadressmaschine Schritte Befehle Schritte Befehle 1 2 3 4 5 6 7 1 2 3 4 5 6 LOAD x SUB y STORE h LOAD x ADD y MUL h STORE z LOAD R1, x LOADR R2, R1 SUB R1, y ADD R2, y MULR R1, R2 STORE R1, z Versuche die Bedeutung der Assembler-Befehle zu erraten. Gib an, welcher Wert am Ende jedes Rechenschritts in den Registern steht, wenn x den Wert 4 und y den Wert 3 hat. a) für die Einadressmaschine b) für die Zweiadressmaschine 2) Überlege, auf welche Art und Weise die Rechengeschwindigkeit eines Computers erhöht werden kann. 3) Ein Beispiel für eine Schiebeoperation im Rechenwerk ist ein sogenannter Links-Shift. Alle Bits einer Bitfolge werden um eine Position nach links verschoben. Das vordere Bit wird entfernt und dafür wird hinten ein Bit mit 0 aufgefüllt. a) Wie verändert sich das Byte 1011 0111 nach einem Links-Shift? b) Wie ändert sich das Byte 0000 0001 nach einem, zwei, drei und vier Links-Shifts? Welche Dezimalzahl wird jeweils kodiert? c) Da eine Shift-Operation im Rechenwerk wesentlich schneller ausgeführt werden kann als eine arithmetische Operation wie Multiplikation oder Division, werden arithmetische Operationen bei sehr zeitkritischen Programmen so weit es geht durch Shift-Operationen realisiert. Gib an, welche arithmetische Operation durch einen Links-Shift ausgeführt wird. d) Welche arithmetische Operation wird durch einen Rechts-Shift ausgeführt? 5 Programmierung 5.1 Programmiersprachen Eine Programmiersprache ist eine Sprache zur Formulierung von Befehlssequenzen und Datenstrukturen für die Abarbeitung auf einem Computer. Im Gegensatz zu natürlichen Sprachen, wo ein Wort mehrere Bedeutungen besitzen kann, ist in einer Programmiersprache eindeutig festgelegt, welche Zeichenfolgen als Programm zugelassen sind (Syntax) und was diese Zeichenfolgen bewirken (Semantik). [Ref2] 13/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue 5.1.1 Maschinensprache Mit Maschinensprache bezeichnet man den Befehlssatz, den ein Rechner unmittelbar ausführen kann. Das Alphabet der Maschinensprache besteht nur aus den zwei Zeichen 0 und 1. Die Maschinensprache ist plattform-abhängig, d.h. sie gilt jeweils nur für eine bestimmte Kombination aus Prozessor und Betriebssystem, eine sogenannte Rechnerplattform. 5.1.2 Assembler Assembler ist eine maschinenorientierte Programmiersprache, in der für jede binäre Befehlssequenz der Maschinensprache ein symbolischer Name benutzt wird. Es werden ebenso symbolische Namen für Operanden einer Operation vergeben. Z.B. könnte die Maschinensprachen-Zeichenfolge 1011100000001001 in einer Assemblersprache add A,0 heißen und die Addition zweier ganzer Zahlen bedeuten. Mit Assembler kann der Programmierer die Abfolge der Maschinenbefehle exakt vorgeben. Jeder Assemblerbefehl wird bei der Programmgenerierung in exakt einen Befehl des Maschinencodes übersetzt. Da die Programmierung in Assembler sehr zeitaufwendig ist, werden nur Programme oder Programmteile in Assembler geschrieben, die besonders schnell und effizient arbeiten müssen, z.B. Teile von Gerätetreibern. 5.1.3 Höhere Programmiersprachen Der Befehlssatz der höheren Programmiersprachen ist weitgehend von der Hardware unabhängig und an die menschliche Sprache angelehnt. Ein Befehl einer höheren Programmiersprache wird in der Regel in eine Folge von Maschinenbefehlen übersetzt. Den höheren Programmiersprachen liegen bestimmte Konzepte zugrunde, mit denen die Lösung von Problemen formuliert wird. Man spricht deshalb auch von problemorientierten Programmiersprachen. Im wesentlichen lassen sich fünf verschiedene Kategorien unterscheiden: Imperative Programmiersprachen: Programme bestehen aus Folgen von Befehlen. (Bsp.: PASCAL, C, MODULA-2) Funktionale Programmiersprachen: Programme werden als mathematische Funktionen betrachtet. (Bsp.: LISP, MIRANDA) Prädikative Programmiersprachen: Programme bestehen aus Fakten (gültige Tatsachen) und Regeln, die beschreiben, wie aus gegebenen Fakten neue Fakten hergeleitet werden können. (Bsp.: PROLOG) Regelbasierte Programmiersprachen: Programme bestehen aus „wenn-dann-Regeln“. Wenn eine angegebene Bedingung gültig ist, dann wird eine angegebene Aktion ausgeführt. (Bsp.: OPS5) Objektorientierte Programmiersprachen: Programme bestehen aus Objekten, die bestimmte (Teil-) Probleme lösen und zum Lösen des Gesamtproblems mit anderen Objekten über Nachrichten kommunizieren können. (Bsp.: SMALLTALK). Nicht alle Programmiersprachen können eindeutig einer dieser Klassen zugeordnet werden. So ist z.B. LOGO eine funktionale Programmiersprache, die aber auch imperative Sprachkonzepte besitzt. Java und C++ können als imperative objektorientierte Programmiersprachen klassifiziert werden, denn Java- und C++-Programme bestehen aus kommunizierenden Objekten, die intern mittels imperativer Sprachkonzepte realisiert werden. Programmiersprachen einer Kategorie unterscheiden sich häufig nur in syntaktischen Feinheiten. Die grundlegenden Konzepte sind ähnlich. Von daher ist es im Allgemeinen nicht besonders schwierig, eine weitere Programmiersprache zu erlernen, wenn man bereits eine Programmiersprache derselben Kategorie beherrscht. Anders verhält es sich jedoch beim Erlernen von Programmiersprachen anderer Kategorien, weil hier die zugrunde liegenden Konzepte stark voneinander abweichen. [Ref3] 5.1.4 Skriptsprachen Skriptsprachen sehen den höheren Programmiersprachen sehr ähnlich, aber sie haben nur einen begrenzten Befehlsumfang. Während man mit höheren Programmiersprachen eigenständige 14/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue Programme erzeugen kann, dienen Skriptsprachen der Anpassung bestehender Programme, wie z.B. Microsoft Excel, an bestimmte Anwendungsbedürfnisse. Beispiele für Skriptsprachen sind JavaScript und Visual Basic Script. 5.2 Erzeugung von Programmcode Damit ein Programm ausgeführt werden kann, müssen die Befehle des Programms in Maschinensprache übersetzt werden, da der Computer selbst nur binären Code ausführen kann. Die Übersetzung des Programmcodes erfolgt entweder mit einem Compiler oder mit einem Interpreter. 5.2.1 Compiler Compiler sind Dienstprogramme, die den Programmcode auf syntaktische Korrektheit überprüfen und ihn anschließend in eine andere Codierung (meistens Maschinensprache) übersetzen. Der Programmierer ruft den Compiler nach der Erzeugung seines Programms (des sogenannten Quellcodes) auf. Das Ergebnis des Übersetzungsvorgangs durch den Compiler ist ein neuer Programmcode (der sogenannte Zielcode). Bei der Übersetzung in die Maschinensprache erhält man als Zielcode eine ausführbare Programmdatei, die an die späteren Benutzer weitergegeben wird. 5.2.2 Interpreter Ein Interpreter führt ein in einer höheren Programmiersprache geschriebenes Programm direkt aus, indem es der Reihe nach jeden Befehl in eine Folge von Maschinenbefehlen übersetzt. Um ein Interpreter-Programm laufen zu lassen, benötigt der Benutzer den Quellcode (d.h. das OriginalProgramm) und den Interpreter. Zur Ausführung des Programms muss der Interpreter gestartet werden, der dann den Quellcode Befehl für Befehl abarbeitet. Der Einsatz eines Interpreters hat für den Programmierer den Vorteil, dass er noch während der Ausführung Programmteile im Quellcode verändern kann. Der Nachteil ist jedoch, dass die Programmausführung durch die Interpretation wesentlich langsamer ist. 5.3 Übersetzung von Java-Programmen Bei Java-Programmen wird ein zweistufiges Übersetzungsverfahren verwendet, dass die Vorteile eines Compiler mit den Vorteilen eines Interpreters verbindet. Java-Programme (Dateiendung *.java) werden vom Programmierer mit einem Compiler übersetzt. Bei der Übersetzung wird jedoch kein Maschinencode generiert, sondern ein plattform-unabhängiger Bytecode. Dieser Byte-Code wird in eine Datei mit der Endung *.class geschrieben. Der Benutzer benötigt zur Ausführung von Java-Programmen den Bytecode und einen Interpreter, der den Bytecode in die Maschinensprache des jeweiligen Rechners übersetzt. Während der Bytecode plattform-unabhängig ist, ist der Interpreter daher plattform-spezifisch. . Abbildung: Übersetzung eines Java-Programms Abbildung: Übersetzung eines Java-Programms 15/16 Grundwissen über den Computer SZH, LK Inf 11/1 Lue 5.4 Übungsaufgaben 1) Was sind die Vorteile einer höheren Programmiersprache gegenüber einer maschinennahen Programmierung in Assembler? Was sind die Nachteile? 2) Was ist bei der Programmierung der sogenannte Quellcode? 3) Was ist der Unterschied zwischen einem Compiler und einem Interpreter? Diskutiere die Vor- und Nachteile. 4) Wie funktioniert die Übersetzung von Java-Programmen? Was sind die Vor- und Nachteile gegenüber der Verwendung eines einfachen Compilers? 6 Quellen-Angaben [Ref1] H.-P. Gumm, M. Sommer: Einführung in die Informatik. Oldenbourg Verlag, 2002. [Ref2] Duden: Angewandte Informatik. PAETEC Verlag, 2001. [Ref3] Dietrich Boles: Programmieren spielend gelernt. B.G. Teubner Verlag, 1999. [Ref4] Wolfgang Coy: Aufbau und Arbeitsweise von Rechenanlagen. Vieweg Verlag, 1988. 16/16