250 likes | 386 Views
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
E N D
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 Ablaufplanung/ Ausführung: Ausführungsweg (trace) der in mindestens einem Progeram enthalten ist Ausführungszustand(aktiv, bereit,...) Zuteilungspriorität Thread
Nur ein thread pro Prozess und... 1)...nur ein Benutzerprozess erlaubt (ms-dos) 2)...mehrere Benutzerprozesse erlaubt Single-Thread-Ansatz
mehrere Threads pro Prozess beim multithreading bekommt der Prozess die aufgabe der Resourcenzuteilung und die Konfliktvermeidung für die einzelnen Threads zu übernehmen Multithreading
Ein virtuelle Adressraum, Der das Prozzesabbild enthält Geschützter Zugriff auf Prozessoren, andere Prozesse, dateien und IO Ressourcen Folgende Punkte beziehen sich auf Prozesse
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. Folgende Punkte beziehen sich auf 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. Vorteile der Threads
Thread Zustände Thread Synchronisation Thread Funktionalität
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 Zustände
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. Thread Synchronisation
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 und Kernel 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. Benutzer Threads(User-Level 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. Vorteile 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. Nachteile von Benutzer Threads gegenüber Kernel-Threads
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. Problemlösung
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. Kernel Threads
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. SMP
jeder prozzessor hat einen eigenen speicher und gilt somit als eigener rechner der über festgelegte pfade oder übers netzwerk mit den anderen rechnern kommuniziert Cluster
hier teilen sich alle prozessoren einen speicher und kommunizieren auch über diesen miteinander Mehrprozessorsystem mit gemeinsamen Speicher:
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. Master Slave Ansatz
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. Symmetrische Mehrprozessorsysteme (SMP):
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.
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. SMP's müssen folgendes enthalten:
Questions • 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 • 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.