Bücher online kostenlos Kostenlos Online Lesen
Der Geek-Atlas (German Edition)

Der Geek-Atlas (German Edition)

Titel: Der Geek-Atlas (German Edition) Kostenlos Bücher Online Lesen
Autoren: John Graham-Cumming
Vom Netzwerk:
Festplatte, um die zu druckenden Dokumente einlesen zu können.
    Die nachstehende Folge von Ereignissen kann in dieser Situation zu einem Deadlock führen:
    Programm A fordert vom Computer den exklusiven Zugriff auf den Drucker an und erhält diesen auch.
Programm B fordert vom Computer den exklusiven Zugriff auf die Festplatte an und erhält diesen auch.
Programm A wartet nun darauf, dass die Festplatte verfügbar wird, damit es die zu druckende Datei einlesen kann.
Programm B wartet nun darauf, dass der Drucker freigegeben wird, damit es drucken kann.
    Die Programme A und B hängen nun in einer Schleife fest und prüfen fortlaufend, ob der Drucker bzw. die Festplatte verfügbar
     ist. Da beide Programme beide Geräte benötigen und daher keines sein Gerät freigibt, hängt der Computer in einer Endlosschleife
     fest.
    Dieses spezielle Problem taucht bei den heutigen Computern nicht mehr auf, weil der Zugriff auf die Festplatte von mehreren
     Programmen gleichzeitig möglich ist, und weil Drucker heute eine Warteschlange, auch Queue genannt, nutzten. Die Drucker-Queue
     sorgt dafür, dass kein exklusiver Zugriff auf den Drucker erforderlich ist. Die Programme fügen einfach ein zu druckendes
     Dokument in die Warteschlange ein. Andere Deadlock-Probleme tauchen aber immer wieder auf, weil Computer einfach mehrere Dinge
     gleichzeitig tun.
    Viele aktuelle PCs besitzen mehrere Prozessoren (oder Kerne), die es ihnen ermöglichen, mehrere Dinge gleichzeitig zu erledigen.
     Selbst wenn dies nicht der Fall ist, erlauben Betriebssysteme wie Microsoft Windows und Mac OS X die gleichzeitige Ausführung
     mehrerer Programme bzw. Programmteile (sogenannte Threads).
    Das ist auch kein Problem, solange diese Threads nicht auf die gleichen Ressourcen zugreifen.
    Wenn beispielsweise ein Benutzer in einem Bildbearbeitungsprogramm die Größe eines Digitalfotos ändern möchte, teilt der Computer
     dieses Foto aus Geschwindigkeitsgründen in vier Bereiche auf und startet vier Threads ( Abbildung 89.3 ). Diese Threads führen alle die gleiche Aufgabe aus: Sie verändern die Größe eines Viertels des Bildes.
    Abbildung 89.3 Vier Teile einer Fotografie
    An den Rändern dieser vier Teile müssen die Threads kooperieren, damit das Bild richtig zusammenfügt werden kann. Es muss
     also eine Kommunikation der Threads untereinander darüber erfolgen, wer an wessen Rand arbeitet.
    Um kooperieren zu können, nutzen die Threads einen als Lock bezeichneten Mechanismus. Für jeden Rand gibt es einen dazugehörigen
     Lock. Der Thread kann erst dann an einem Rand arbeiten, wenn er den dazugehörigen Lock erhalten hat. Ein Thread »sichert«
     sich einen Lock, indem er einen exklusiven Zugriff anfordert: Entweder er erhält diesen Zugriff, oder er hängt so lange in
     einer Schleife, bis ihm der Zugriff gewährt wird.
    Im Folgenden ist nun ein Beispiel dafür angeführt, wie sich vier Threads in einem Deadlock verfangen können:
    Thread 1 möchte an den Rändern D und A arbeiten und fordert zuerst einen Lock für A an.
Thread 2 möchte an den Rändern A und B arbeiten und fordert zuerst einen Lock für B an.
Thread 3 möchte an den Rändern B und C arbeiten und fordert zuerst einen Lock für C an.
Thread 4 möchte an den Rändern C und D arbeiten und fordert zuerst einen Lock für D an.
Dann versuchen alle Threads, den jeweils anderen Lock zu erhalten, und müssen feststellen, dass ein anderer Thread schneller
     war. Nun hängen alle in einem Kreis fest und warten darauf, dass ein anderer Thread einen Lock freigibt.
    Ein Deadlock muss in dieser Situation nicht zwangsläufig eintreten. Wenn es Thread 1 beispielsweise gelingt, die Locks für
     A und D zu erhalten, kann er seine Arbeit erledigen, die Locks freigeben, und die anderen Threads können arbeiten.
    Die Hauptschwierigkeit bei Deadlock-Problemen besteht darin, dass sie vom Timing abhängen. Arbeiten die Programme oder Threads
     mit leicht unterschiedlichen Geschwindigkeiten, treten Deadklocks nur sehr selten oder möglicherweise sogar nie auf. Daher
     ist es äußerst zeitaufwendig und frustrierend, diese aufzuspüren.
    ----

Kapitel 90. Die HP Garage, Palo Alto, CA
    37° 26′ 35.05″ N, 122° 9′ 17.32″ W

    367 Addison Avenue
    Ein typischer Bestandteil des Silicon Valley-Mythos sind Unternehmen, die ihren Anfang in einer Garage nehmen und dann die
     Welt erobern. Tatsächlich haben einige Firmen ihren Werdegang in einer Garage begonnen: Apple wurde in der Garage von Steve
     Jobs Eltern

Weitere Kostenlose Bücher