Was ist ein Programm?
Lösung einer Programmieraufgabe (=Algorithmus)
—> Prozeduren
Was ist ein Prozess?
Ausführung eines Programms unter der Kontrolle eines Betriebssystem(kerns).
—> Daten & Infos entstehen (z.B. Berechnungsdaten)
Verfügt über 4 Bereiche:
Programm Segment
Daten Segment
Stack Segment
Statusinfo
Eigenschaften von Prozessen
Jeder Prozess hat eigene Prozessumgebung
Erzeugung und Kommunikation mit anderen Prozessen
Prozesse können voneinander abhängen (Synchro)
Zuordnung von Eigenschaften —> CPU Reihenfolge
Speicherung der Prozesszustände in Prozesstabelle
Prozesszustände
Aktiver (rechnender) Prozess
(Rechen)bereite Prozesse
Blockierte Prozesse (warten auf Ereignis z.B. Eingabedaten)
Beendete Prozesse (Daten noch im Speicher)
Zudem
inaktive oder ausgelagerte Prozesse
Was ist ein Thread?
mehrere parallele Abläufe in einem Prozess (Ablauffäden, sequentieller Ablauf)
Prozess kann aus mehreren Threads bestehen (parallele Abläufe)
Einige Betriebsmittel (Codesegment, Datensegment, Dateizeiger) werden geteilt
Stack oder Statusinformationen werden jeweils individuell angelegt
Motivation für Threads
Bei Blockierung eines Threads können andere weiterarbeiten
Nebenläufige Programmierung
Kürzere Reaktionszeit auf Benutzereingaben
echt parallele Abarbeitung
Implementation von Threads
Kernel-Threads
User-Threads
In Windows als Kerne-Threads & über Systemaufrufe erzeugt
Notwendigkeit von Prozess-Kommunikation
Datenübertragung zwischen Prozessen
Koordination wenn mehrere Prozesse greifen auf diesselbe Ressource zu
Reihenfolge
Wie erfolgt Prozess-Kommunikation?
gemeinsame Speicherbereiche
gemeinsame Dateien
Pipes (unidirektionale Datenkanäle)
Signale
Nachrichten
Streams
Prozedur-Fernaufrufe
Deadlock
Jeder Prozess aus der Menge wartet auf ein Ereignis, das nur ein anderer Prozess aus dieser Menge auslösen kann
—> Alle Prozesse warten
Bedingungen für einen (Ressourcen-)Deadlock
Wechselseitiger Ausschluss
Hold-and-Wait
Ununterbrechbarkeit (kein Ressourcenentzug):
Zyklisches Warten
Behandlung von Deadlocks
Vogel-Strauß-Algorithmus (nichts tun)
Deadlock-Erkennung und -Behebung (alle Anforderungen zulassen)
Deadlock-Avoidance (Keine Ressourcenanforderung bei Gefahr für Deadlock)
Deadlock-Prevention (1/4 Deadlock-Bedingungen unerfüllbar)
Zuletzt geändertvor 2 Jahren