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.