A7_VARGALACKNER

Werbung
SMP und Threads
SMP ... symetrische Mehrprozessorsysteme
Thread ... ein Teil eines Prozesses
Thread
Resourcenbesitz:
Virtuelleradressraum(für die aufnahme eines prozessabbildts)
Zugriffsrechte/ Nutzungsrechte (IO kanäle-, geräte, Speicher)
dies wird vom BS verwaltet um störungen zu vermeidenz
Ablaufplanung/ Ausführung:
Ausführungsweg (trace) der in mindestens einem Progeram
enthalten ist
Ausführungszustand(aktiv, bereit,...)
Zuteilungspriorität
Single-Thread-Ansatz
Nur ein thread pro Prozess und...
1)...nur ein Benutzerprozess erlaubt (ms-dos)
2)...mehrere Benutzerprozesse erlaubt
Multithreading
mehrere Threads pro Prozess
beim multithreading bekommt der Prozess die
aufgabe der Resourcenzuteilung und die
Konfliktvermeidung für die einzelnen Threads
zu übernehmen
Folgende Punkte beziehen sich
auf Prozesse
Ein virtuelle Adressraum, Der das
Prozzesabbild enthält
●Geschützter Zugriff auf Prozessoren, andere
Prozesse, dateien und IO Ressourcen
●
Folgende Punkte beziehen sich
auf Threads
Ausführungszustand
●Kontext der abgespeichert wird wenn der
thread nicht aktiv ist
●Ausführungstapel
●eigenen Speicherplatz für variablen
●die Zugriffsrechte des Prozesses die mit den
anderen threads im prozess geteilt werden.
●
Vorteile der Threads
Threads sind im engeren Sinn "Prozesse in Prozessen". Dies wurde deshalb so
entwickelt weil mehrere alleinstehende Prozesse, die miteinander kommunizieren
oder sich rechte teilen müssen, vom Kernel verwaltet werden müssen. Nicht so
bei Threads hier braucht der Kernel nur einen Prozess verwalten der dann
mehrere threads enthält die der Prozess selber verwaltet, damit wird dem kernel
arbeit abgenommen. Auserdem lassen sich Threads leichter und schneller
terminieren oder kreieren als Prozesse. Threads kommunizieren schneller
miteinander als Prozesse und zwischen threads kann auch schneller gewechselt
werden
als zwischen zwei Prozessen.
Thread Funktionalität
Thread Zustände
Thread Synchronisation
Thread Zustände
wichtigste Zustände: aktiv, bereit, blockiert
wenn ein Prozess ausgelagert wird, werden alle seine Threads mit ausgelagert.
4 grundlegende Thread-Operationen für Änderung des Thread Zustandes:
Erzeugung (Spawning):
bei erzeugung eines neuen Prozesses wird auch ein neuer Thread erzeugt. Ein
Thread innerhalb eines Prozesses kann einen weiteren Thread erzeugen.
Dabei stellt er Befehlszeiger und argumente für den neuen Thread bereit.
●Blockierung:
Wenn ein Thread auf ein Ereignis wartetn muss, wird er blockiert. Der
Prozessor wendet sich dann bereiten Threads zu.
●Aufhebung der Blockierung:
Wenn Ereignis eintrifft, aufgrund dessen ein Thread blockiert ist, wird der
Thread
als bereit eingestuft.
●Beendigung:
Wenn ein Thread beendet wird, werden die Zuordnung des Registerkontexts
und
der Stapel freigegeben.
●
Thread Synchronisation
Eine Änderung einer Ressource durch einen
Thread betrifft auch die anderen Threads in dem
Prozess. Daher müssen sie Synchronisiert werden,
um sich nicht gegenseitig zu stören oder
beschädigen.
Benutzer Threads und Kernel Threads
Benutzer Threads(User-Level Threads) :
●Vorteile von Benutzer Threads gegenüber Kernel Threads
●Nachteile von Benutzer Threads gegenüber Kernel
Threads
●Problemlösung
●Kernel Threads
●
Benutzer Threads(User-Level Threads)
Die anwendung übernimmt die Threat Verwaltung, Kernel ist
sich nicht bewusst über deren Existenz.Jede Anwendung kann
durch die Thread Bibliothek, zu einer MultithreadingAnwendung umprogrammiert werden. Die Threat Bibliothek
enthält den Code zur Erzeugung/Zerstörung, Weiterleitung,
Sicherung. Wiederherstellung der Thread - Kontexte.
Eine Anwendung startet standartmäßig mit einem Thread. Der
Scheduling-Algorithmus aus der Thread-Bibliothek legt fest
welcher Thread in folge aktiv wird
.
Vorteile von Benutzer Threads gegenüber
Kernel-Threads
Der Prozess muss nicht in den Kernel-Modus
wechseln.Moduswechsel fällt hier also weg.
●Scheduling kann anwendungsspezifisch sein. Der
Scheduling Algorithmus kann spezifisch an die
Anwendung angepasst werden, ohne den
Betriebssystem- Scheduler negativ zu beeinflussen.
●Benutzer-Threads können auf jedem Betriebssystem
ausgeführt werden.
●
Nachteile von Benutzer Threads gegenüber
Kernel-Threads
In typischen Betriebssystemen haben viele
Systemaufrufe blockierende Wirkung. Threads in
einem Prozess können so alle durch einen blockiert
werden.
●Multithreading - anwendung kann die Vorteile des
Mehrprozessorbetriebes nicht nutzen. Es kann also
immer nur ein Thread innerhalb eines Prozesses
ausgeführt werden.
●
Problemlösung
mehrere Prozesse statt mehrere Threads, aber jeder
Wechsel ist dann ein Prozesswechsel, kein
Threadwechsel -> größerer Steueraufwand
oder Jacketing -> blockierender Systemaufruf wird
in einen nicht blockierenden Systemaufruf
verwandelt.
Kernel Threads
Der Kernel übernimmt Thread-Verwaltung. Im
Anwendungsbereich gibt es eine API (Application
Programming Interface) zur Kernel-Thread-Einrichtung.Bsp.
W2K, Linux, OS/2 Kernel kann mehrere Threads aus
demselben Prozess gleichzeitig für den Ablauf auf mehreren
Prozessoren einplanen. Nachteil -> Moduswechsel zu Kernel
bei Steuerung von Threads. Kernel Threads sind jedoch
langsamer als Benutzer-Threads.
SMP
SISD (Single instruction sinle data): 1 prozess 1 befehlsstrom 1 speicher
●SIMD(Single Instructure Multiple Data): 1 Maschienenbefehel steuert die gleichzeitige
ausführung mehrerer Verarbeitungselemete auf
Lockstepbasis. Jedes
Verarbeitungselement verfügt über einen Datenspeicher so das jedes VerarbeitungElement auf verschiedenen Datensätzten und Prozessoren ausgeführt werden kann
●MISD (Multiple INstructure Single data): eine sequenz von daten wird an mehrere prozessoren
übertragen, von denen jeder einen andere befehlssequenz ausführt. dieses system wurde
nie umgesetzt
●MIMD (Multible Instructure Multiple Data): Mehrere Prozessoren führen gleichzeitig
verschiedene Befehelssequenzen an unterschiedlichen Datensätzen aus.
●
Cluster
jeder prozzessor hat einen eigenen speicher
und gilt somit als eigener rechner der über
festgelegte pfade oder übers netzwerk mit den
anderen rechnern kommuniziert
Mehrprozessorsystem mit
gemeinsamen Speicher:
hier teilen sich alle prozessoren einen
speicher und kommunizieren auch über
diesen miteinander
Master Slave Ansatz
Der Kernel sitzt nur auf einem "MASTER"
Prozessor welche die anderen Slave
Prozessoren überwacht und konntrolliert er
übernimmt das gesamte Scheduling was
einen Leistungs engpass bedeuten kann und
auserdem fällt auch das ganze System aus
wenn der Master Prozessor ausfällt.
Symmetrische
Mehrprozessorsysteme (SMP):
Hier sitzt der Kernel auf mehreren Prozesoren
gleichzeitig und jeder Prozessor übernimmt für sich die
Ablaufplanung. Das Komplizierte ist hier das keine zwei
Prozessoren den selben Prozess teil des Kernels
bearbeiten und das keine prozesseteile in der
warteschlange verloren gehen.
Smp Rechnerarchitektur:
●
Cache Kohärenz: wenn
mehrere Prozessoren die
selben sachen im cache
stehen und ein prozessor
einen bestimmten teil
verändert ist der cache
inhalt eines anderen
Caches ungültig was
nciht passieren darf
dieses problem wird
normalerweise in der
hardwear behoben.
SMP's müssen folgendes
enthalten:
Gleichzeitige nebenläufige Prozesse oder Threads: die ausführung einzelener Kernel teile
muss koordiniert werden
●Ablaufplanung (Scheduling): kann jeder Prozessor übernehemen hier wird dafür gesorgt
das keine zwei prozessoren den selben Thread/Prozess bearbeiten
●Synchronisation: hier werden Prozessoren synchronisiert die die gleichen Resourcen
benötigen
●Speicherverwaltung: die Speicherverwaltung des SMP gleicht der Speicherverwaltung in
einem Einprozessorsystemen und nutzt zusätzlich die volle bandbriete von Speichern
mit
mehreren ports.
●Zuverlässigkeit und Fehlertoleranz: hier wird dafür gesorgt das fals ein Prozessor ausfällt
die Ausführungsplanung aktualisiert wird damit die anderen Prozessoren die Aufgaben
des ausgefallenen Prozessors übnernehmen.
●
Questions
1.
2.
3.
4.
5.
6.
Was ist der Unterschied zwischen einem Thread und
einem Prozess?
Nenne 3 wichtige Thread Zustände?
Nenne 3 von 4 SMP Technologien?
Was ist ein Cluster?
Was ist eine Cache Kohärenz?
Was macht die Thread Operation Blockierung?
Answers
1.
2.
3.
4.
5.
6.
Prozesse werden vom Kernel verwaltet und
Threads von Prozessen.
Aktiv, bereit, blockiert;
SÍSD, SIMD, MISD, MIMD;
Prozess + Eigenem Speicher (gilt als eigener
PC).
Wenn der Cache Speicher ungültig wird.
Wenn ein Thread auf ein Ereignis warten muss
wird er blockiert, der Prozessor wendet sich dann
bereiten Threads zu.
Herunterladen