Upload
fauve
View
41
Download
0
Embed Size (px)
DESCRIPTION
SMP ... symetrische Mehrprozessorsysteme Thread ... ein Teil eines Prozesses. SMP und Threads. 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 - PowerPoint PPT Presentation
Citation preview
SMP und Threads
SMP ... symetrische MehrprozessorsystemeThread ... 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 istAusfü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 Multithreading- Anwendung 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
Verarbeitung- Element 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. Was ist der Unterschied zwischen einem Thread und einem Prozess?
2. Nenne 3 wichtige Thread Zustände?3. Nenne 3 von 4 SMP Technologien?4. Was ist ein Cluster?5. Was ist eine Cache Kohärenz?6. Was macht die Thread Operation Blockierung?
Answers
1. Prozesse werden vom Kernel verwaltet und Threads von Prozessen.
2. Aktiv, bereit, blockiert;3. SÍSD, SIMD, MISD, MIMD;4. Prozess + Eigenem Speicher (gilt als eigener
PC).5. Wenn der Cache Speicher ungültig wird.6. Wenn ein Thread auf ein Ereignis warten muss
wird er blockiert, der Prozessor wendet sich dann bereiten Threads zu.