Virtueller Speicher - Fakultät für Physik

Werbung
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
Herunterladen