Vorlesung: Rechnernutzung in der Physik Einführung, Rechnerhardware virtuelle Maschine Günter Quast Fakultät für Physik Institut für Experimentelle Kernphysik KIT – Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft WS 2016/17 www.kit.edu Rechnerhardware Literatur: Bringschulte, Ungerer, „Mikrocontroller und Mikroprozessoren“, Springer Bähring, Mikrorechnertechnik, Springer aktuelle Informationen über Prozessoren, Chip-Sätze etc. im Internet Rechnernutzung in der Physik Datenerfassung Einzelplatz-Rechner als Schnittstelle zum Anwender (=Physiker) Moderne ModerneWissenschaft Wissenschaftohne ohneComputer Computernicht nichtdenkbar denkbar CERN Computer Centre Server-Rack Worldwide LHC computing Grid Weltumspannende Netzwerke: Grid(s) und Cloud Rechnerhardware Rechner in der Physik heute meist auf PC-Architektur (PC=Personal Computer) d.h. Mikrocomputersysteme bestehend aus: - Mikroprozessor(en) - (flüchtigem) Halbleiter-Speicher - permanentem Magnet-Festplattenspeicher oder „SolidStateDisk“ (SSD) - Ein-Ausgabeschnittstellen -Tastatur, Bildschirm, Maus, Wechsellaufwerke, Drucker, Netzwerk, ... Verfügbar als - Einzelplatz-Desktop-PC - vernetzter Cluster aus Desktop-PCs - PC-Farm mit Fileservern - Multi-Prozessor-Installationen für „High-Performance-Computing“ - vernetzte Rechenzentren („GRID“) Cluster aus Desktop-PC am CERN, 2008 Rechnerhardware Grundlage der Rechnertechnik ist die Digitalelektronik: - Zustände 1 und 0 repräsentiert durch elektrische Signale Boolesche Algebra mit Hilfe von elektronischen Bauteilen wie - Gattern (AND, OR, XOR) - Bistabilen Stufen („FlipFlops“) als Speicherelemente INTEL Core i7 Prozessor daraus aufgebaut: - Register, Addierer und weiter - Rechenwerk, Steuerwerk, Speicher eines Mikroprozessors Zahlendarstellung im Binärsystem, d.h. z.B. 10 = 1010; meist 4 Binärstellen als eine „Hex“-Ziffer angegeben im Sedezimalsystem, also 1010=$A (oder 0xA) Gesamte Rechnerhardware auf wenigen Chips integriert Stand der Technik 2016: - 14 nm Sturkturgröße, - ~ 2 Milliarden Transistoren / cm² - Chips mit 7,5 Milliarden Transistoren und 22 Rechenkernen („cores“) von Neumann-Architektur („CPU“) von-NeumannFlaschenhals („Bus“-System) („RAM“ & „ROM“) (Tastatur, Maus, Bildschirm, Festplatte, Netzwerk, Drucker, Sound-Karte, ...) Getrennter Speicher für Programme und Daten: Harvard-Architektur Hardware: Mainboard Foto des Mainboards P5AD2-E von Asus Zeitliche Entwicklung der Technologie Moore'sches Gesetz: Verdopplung der Anzahl Transistoren alle 1½ Jahre Quelle: Wikipedia Hardware – was ein Prozessor tut Hochsprache Mikroprozessoren verarbeiten intern Folgen von Bits Bitfolge kann als – Befehl – Datum – Adresse interpretiert werden ( kontextabhängig !) Assembler Compiler Bitfolge auf Maschinenebene Hardware - Netzwerk Stern-Topologie über Hub (simpler Verstärker) oder Switch (mit „Intelligenz“) Einzelne Kabel bis max. 100m Jedes Gerät hat eine eindeutige Hardware-Adresse: die MAC-Adresse; Auf „Protokoll-Ebene“ (IP-Protokoll) gibt es eine logische Adresse momentan 4 Bytes, in Zukunft 16 („Ipv6“), z.B. 192.168.0.1 fast immer auch mit einem Namen verknüpft, z.B. fphctssh.physik.uni­karlsruhe.de Virtuelle Hardware Software-Emulation von Hardware auf Wirts-System seit langem bei Großrechnern alte Rechner auf moderner Hardware/OS, z.B. Atari, V24, Apple Windows- oder Linux-Betriebssystem auf Linux und/oder Windows (bisher kommerziell) neue Entwicklung: – Open Source-Virtualisierung XEN oder KVM unter Linux (schon enthalten in modernen Distributionen) – freier Client für VM-Ware virtuelle Maschinen DOS, Windows oder Linux auf Linux oder Windows siehe http://www.vmware.com – VirtualBox, freie Virtualisierungslösung Windows, Linux u. Mac, siehe http://www.virtualbox.org Virtuelle Maschine mit (freier) Software zum Praktikum und Dokumentation finden Sie unter: http://www.ekp.kit.edu/~quast/VMroot Erlaubt Standard-Umgebung auf unterschiedlichster Hardware bzw. OS Virtuelle Maschine zum Kurs: VM-DaA Virtuelle Maschine VM-DA16 (Vers. WS16/17) für VirtualBox (http://www.virtualbox.org) auf Basis von kubuntu 16.04 LTS, 32bit Version Installationsanleitung:http://www.ekp.kit.edu/~quast/VM-DaA Enthaltene Software diverse Editoren zur Erstellung von Text/Programmcode Libreoffice (Textbearbeitung, Tabellenkalkulation und Präsentation) inc. texmath-Erweiterung zur Einbindung von Formeln mit LaTeX Textsatzsystem LaTeX Vektorgrafik inkscape C und C++ Compiler gcc / g++ python mit numpy, scipy und matplotlib gnuplot und qtiplot zur Datenanalyse und Visualisierung Datenanalyseframework ROOT RooFiLab zur interaktiven Funktionsanpassung mit Root pyhton-Paket kafe zur Funktionsanpassung weitere Pakete problemlos nachladbar VMroot leider (aus lizenzrechtlichen Gründen) nicht enthalten: die in unseren wissenschaftlichen Arbeitsgruppen verbreiteten Programme – Mathematica (Computeralgebra) – LabView (Hardware-Anbindung und Steuerung) dennoch: VMroot VMroot erlaubt erlaubtdas dasBearbeiten Bearbeitender der meisten meistenComputerübungen Computerübungen zum zumKurs Kursauf aufIhrem Ihremeigenen eigenenRechner Rechner–– ohne ohneumfangreiche umfangreicheSoftwareinstallation Softwareinstallation Interaktion mit dem Computer Interaktion mit dem Computer ... Es gibt viele Wege: grafisch mit Finger und Gesten grafisch klicki-bunti mit Maus Shell auf der Textkonsole Grafik & Textkonsole Steuerung von Arbeitsabläufen Arbeitsabläufe sind meist mehrschrittig und komplex Beispiel: Vergleich von Messdaten mit Modell - Berechnung der Modellvorhersage(n) - Datenaufnahme und Korrekturen - Statistische Datenanalyse und Cross-Checks, Systematische Fehler - Dokumentation und Sicherstellung der Reproduzierbarkeit der Ergebnisse versus Script interaktiv / Maus ++ sehr intuitiv + leicht erlernbar - kaum Reproduzierbarkeit bei komplexen „Workflows“ - - spezielle Menü-Optionen nicht im Ergebnis dokumentiert - - keine permanente Dokumentation der Vorgehensweise - - in der Regel auf eine Anwendung und deren Tools festgelegt 0 erfordert Einarbeitung + relativ leicht erlernbar ++ Skript enthält alle relevanten Schritte: vollständige Dokumentation des Arbeitsablaufs ++ vollständig reproduzierbar ++ einfache Nutzung verschiedener Programm-Pakete und Tools Interaktion mit dem Betriebssystem Wir empfehlen: & friends: - numpy - scipy - matplotlib python ist eine – moderne – objektorientierte – interpretierte – intuitive – leicht zu erlernende – effiziente Programmier- und Skript-Sprache mit – Unterstützung praktisch aller Funktionen des Betriebssystems, – eigenen Modulen insb. auch für wissenschaftliches Rechnen – Anbindung von Bibliotheken wichtiger Programmpakete – Einbindung von selbst-programmierter Funktionalität PYTHON & friends ( = numpy, scipy, matplotlib) Literatur: python Einführungskurs: http://www.python-kurs.eu python Tutorial: http://docs.python.org/2/tutorial/ numpy tutorial: http://wiki.scipy.org/Tentative_NumPy_Tutorial numpy reference manual http://docs.scipy.org/doc/numpy/reference/index.html matplotlib tutorial: http://matplotlib.org/users/pyplot_tutorial.html advanced – for future python programmers: http://www.diveintopython.net/ ipython shell, an advanced interactive shell http://ipython.org/ipython-doc/stable/interactive/tutorial.html C/C++ vs. Python Python ist eine interpretierte Sprache wie Shell-Scripts oder Pearl, Basic – im Gegensatz zu Compiler-Sprachen wie C / C++ / Fortran Python: * interpretiert + kurze Entwicklungszyklen – evlt. langsamer bei Ausführung C/C++ * Compilieren/Linken notwendig – langsamer Entwicklungszyklus + schneller Code bei Ausführung * moderater Sprachumfang * komplexer Sprachumfang * Vielzahl von Hilfspaketen * Vielzahl von „Bibliotheken“ mit Hilfsfunktionen/Anwendungen * als Skritp-Sprache ideal geeignet zur Verknüpfung von Arbeitsschritten * Harware-nahe Programmierung erschwert bis unmöglich * ideal für hochperformante numerische Berechnungen oder harware-nahe Programmierung → für „einfache“ Aufgaben ist Python ideal; in der Praxis empfiehlt sich ein „heterogener Ansatz“: Zeit- bzw. Speicher-kritische Probleme in C/C++, verknüpft mit Python Betriebssystem Betriebssystem Anwendungsprogramme Direkter Zugriff von Anwenderprogrammen auf Hardware nur in Ausnahmefällen sinnvoll / möglich: - ein-Prozess-Betrieb (z.B. Spiele!) - Echtzeit-Anwendungen Betriebssystem Treiber BIOS Hardware Ansonsten: Zugriff auf Hardware nur über Betriebssystem Aufgaben des Betriebssystems Verbergen der Komplexität der Maschine vor dem Anwender („Abstraktion“) Bereitstellung einer normierten (Software-)Schnittstelle für Programme ggf. Compiler, Linker, Editor, Entwicklungsumgebung, … Bereitstellung einer Nutzerschnittstelle (Shell, Command-Interpreter, graphische Oberfläche, …) Steuerung und Überwachung von Nutzerprogrammen, evtl. Multi-Prozess und Multi-User-Betrieb, Ressourcen-Zuteilung Verwalten und Schützen der Ressourcen der Maschine (CPU, Speicher, I/O) Unterscheidung zwischen Betriebssystem-Komponenten und Hilfsprogrammen nicht immer eindeutig Multi-Tasking Alle modernen Betriebssysteme führen mehrere Prozesse („tasks“) quasiparallel aus, indem abwechselnd jedem Prozess CPU-Zeit zugeteilt wird Vorteil: Wartezeiten eines Prozesses auf I/O können von anderen Prozessen sinnvoll genutzt werden Prozessverwaltung Scheduler sorgt für gerechte und effiziente Zuteilung von CPU-Zeit - Kooperatives Multitasking: Prozess gibt CPU frei - Verdrängendes Multitasking: Prozess wird durch Timer-Interrupt unterbrochen Prozess (task, thread) wird beschrieben durch: - Zugeordnete Speicherbereiche: Programm-, Daten-, Stack-Segment - Statusinformationen: Registerinhalte, Zustand - Zugeordnete Ressourcen (Dateien, I/O) - ID, Benutzer, Priorität Moderne Prozessoren stellen mehrere CPU-Kerne bereit, über die die Tasks verteilt werden Ein Problem bei Multitasking: Synchronisation von Prozessen Virtueller Speicher Virtueller Speicher: - Großer logischer Adressraum wird auf begrenzten physikalischen Speicher abgebildet - Verwendung von logischen Adressen im Code -> Code ist unabhängig von der Position des Programms im Speicher - Vergrößerung des Speichers durch Hintergrundspeicher (Festplatte) Speicherverwaltung - „Swapping“ CPU (memory management unit, MMU) nimmt Übersetzung von logischer in physikalische Adresse vor: - Falls Seite nicht im Speicher, wird „Page Fault“-Interrupt ausgelöst und das OS liest die Seite vom Hintergrundspeicher - OS entscheidet, welche Seite ersetzt wird (least recently used, dirty-bit) - Schutz vor unbefugten Speicherzugriffen („Protection“-Interrupt) Datenträgerverwaltung Dateisystem abstrahiert von Hardwaredetails: Speichereinheiten auf dem Datenträger (Spur/Sektor) -> Dateien Meist realisiert als Baumstruktur von Verzeichnissen Bereitstellung von Datei-Informationen: - Name - Typ - Größe - Eigentümer - Zugriffsrechte - Datum von Erstellung / letzter Änderung / letzter Lesezugriff Unix/Linux Linux ist eine Re-Implementierung (Open Source) von Unix (begonnen Anfang der 90er von Linus Torvalds) LINUX ist (wie UNIX) ein portables (in C programmiertes), recht einfach aufgebautes Betriebssystem, mit folgenden wesentlichen Eigenschaften: -Multitasking (Prozess-Scheduling, Prozess-Kommunikation) - Multiuser (Zugangskontrolle und Abrechnung) - dialogorientiert - ein Werkzeugkasten mit viele hundert Dienstprogrammen - (mehrere) Shell(s) mit mächtiger Script-Sprache; Scripte laufen als Unterprozesse des startenden Prozesses - Dateisystem mit Baum-artiger Struktur, Rechtekontrolle für Datei-Zugriff - graphische Oberfläche X-Windows (X11) - volle Netzwerkunterstützung, incl. Netzwerk-Laufwerken, remote shells etc. Im Praktikum verwenden wir Linux – wie auch in der virtuellen Maschine zum Kurs