Lock & Lock

Sperren & Sperren

Lock or Locking ist der Begriff, der in der Informatik verwendet wird, um den Zugang zu einer Ressource zu verweigern. Englische Übersetzungen Deutsches Dictionary ? ? Dein persönliches Lexikon im Netz für Englisch-Deutsch-Übersetzungen, mit Diskussionsforum, Wortschatztrainer und Sprachtraining. Die Eintragung wurde im Diskussionsforum abgespeichert.

Um den Erfolg Ihrer Webseite zu gewährleisten, installieren wir und bestimmte Dritte Cookies und speichern Informationen auf Ihrem Gerät für verschiedene Zwecke. Diverses Tieresammlungen sammeln auch Daten, um Ihnen personalisierte Inhalte und Anzeigen zu zeigen.

Erhältlich in Stufen von Drittanbietern, benötigen Sie Ihre Zustimmung zur Datenerhebung, um Ihnen personalisierte Inhalte und Anzeigen zur Verfügung zu stellen.

mw-headline" id="Locking-Arten">Locking-Arten[Bearbeiten | < Quelltext bearbeiten]

Lock or Lock ist der Begriff, der in der Computerwissenschaft verwendet wird, um den Zugang zu einer Informationsquelle zu verweigern. Mit einer solchen Verriegelung kann ein Prozeß einen ausschließlichen Zugang zu einer Ressourcen erhalten, d.h. mit der Gewissheit, daß kein anderer Prozeß diese Ressourcen lesen oder ändern wird, solange die Verriegelung existiert.

Wenn ein Prozess ausschließlichen Zugang zu einer Ressourcen haben möchte, muss er eine Sperrung von einem Managementprozess (z.B. einem Schließmanager) einfordern. Falls eine Ressourcen eine Lesesperre (oder Lesesperre) hat, möchte der Prozess, der diese Lesesperre setzt, nur von der Ressourcen gelesen werden.

Das bedeutet, dass auch andere Verfahren Lesezugriff auf diese Ressourcen haben können, diese aber nicht ändern dürfen. Mit einer Schreibsperre wird das Lesen oder Schreiben der Ressourcen durch andere Verfahren unterbunden, da der Prozess, der die Schreibsperre setzt, die Ressourcen ändern möchte. Wenn der Prozess, der eine Sperrung veranlasst hat, abgeschlossen ist, muss er die Sperrung wieder entfernen.

Vorgänge, die aufgrund einer Sperrung nicht auf eine Ressourcen zurückgreifen konnten, müssen in Warteschleife stehen. Wenn ein Prozeß eine Schließung nicht aufhebt, können andere Prozeßketten bis zu diesem Zeitpunkt endlos lange auf diese Schließung ausharren. Die Vorgänge "hungern" also. Wenn Sie eine Verriegelung einrichten, kann es zu Deadlocks kommen, wenn zwei Prozesse darauf warten, dass der andere die gesperrte Ressourcen des anderen freigibt.

Je zwei Radkuriere sollten ein Päckchen liefern und je ein Rad und einen Stadtkarte vorlegen. Ihr seid jetzt in einer Sackgasse, da beide auf die Ressourcen des anderen gewartet haben (endlos). Jetzt ist es möglich, die komplette Logikeinheit zu sperr. Welche Methode in jedem Fall die richtige ist, hängt von der Datenbankart, der Änderungshäufigkeit und der Zahl der gleichzeitig aktiven Benutzer ab.

Zentraler Bestandteil von Sperren ist die Tatsache, dass ein Vorgang, der im Moment nicht "bedienbar" ist, abgewartet werden kann, bis die Sperre freigegeben ist - das korrespondiert mit der in dem untenstehenden pseudo-code verwendeten function wait_bis. Die Wartezeit auf eine Kondition ist prinzipiell auf zwei Wegen möglich: Die erste Variante ist die Konvertierung mit dem Prozess-Scheduler (d.h. dem Betriebssystem oder der Runtime-Umgebung, vgl. Time Sharing): Der Planer erkennt die Sperre und ordnet dem Prozeß keine Verarbeitungszeit zu, bis die Sperre freigegeben ist.

Dies ist in der Regel nur möglich, wenn der Sperrmechanismus vom Betriebsystem (oder der Laufzeitumgebung) zur Verfügung gestellt wird, denn nur dann kann der Planer die Sperre und ihren momentanen Status ausmachen. Der Prozess überprüft permanent in einer Schlaufe, ob die Sperre freigegeben ist und setzt erst dann fort.

Das ist auch ohne Support durch den Scheduler möglich, hat aber den nachteiligen Effekt, dass der Prozeß während des Wartens Computerzeit beansprucht ("active waiting" oder "busy waiting"). Besteht die Option, einen Prozeß für eine bestimmte Zeit "schlafen" zu laßen (Sleep), ist dies nicht ganz so nachteilig, da zur Überprüfung der Sperre nur eine gewisse Computerzeit in regelmässigen Zeitabständen benötigt wird (man spricht auch von langsamem Besetztwarten oder faulen Polling).

Sollte das Betriebsystem diese Option jedoch nicht anbieten, nutzt der Prozeß die gesamte Rechnerleistung des auf ihn wartenden Betriebsystems und verlangsamt dadurch andere ausgeführte Vorgänge. Die Sperrung ist leicht zu realisieren, wenn eine Atomanweisung für die Sequenz "Den Block einstellen, wenn er im Augenblick freigegeben ist" vorliegt. Kann dagegen zwischen der Überprüfung, ob die Sperre aktuell freigegeben ist, und ihrer Auslastung auch ein zweiter Vorgang überprüfen, entscheiden beide, dass die Sperre gesetzt werden soll und nun "ihnen gehört".

Dabei werden die Änderungsvorgänge von Prozess 2 durch Prozess 1 ersetzt und gehen zu Ende. Beides ist in der Ressourcen vorhanden. Schlossgreifer, Mensch zwei muss auftauchen.

Auch interessant

Mehr zum Thema