Handle

Als Handle (englisch für „Griff“ oder „Henkel“) bezeichnet man in der Informatik einen eindeutigen Referenzwert zu einer vom Betriebssystem verwalteten Systemressource, wie z. B. Bildschirmobjekte oder einzelne Dateien auf Festplatten.[1][2][3] Wenn ein Anwendungsprogramm eine solche Ressource verwenden will, erhält es durch den Aufruf einer geeigneten Systemfunktion (zum Beispiel zum Öffnen oder Erzeugen von Dateien) als Rückgabewert die Referenz, die zur weiteren Verwendung der Ressource durch Systemfunktionen anzugeben ist (etwa zum Lesen aus einer Datei).

Unter unixoiden Systemen erhalten Handles eine eindeutige ganzzahlige Nummer (Intergerwert) der Filedescriptor genannt wird. Die Anzahl der möglichen Filedescriptoren ist begrenzt und kann beispielsweise mit dem Bash-Buildin Befehl ulimit -n eingestellt werden.

Das Betriebssystem prüft beim Öffnen einer Ressource die Zugriffsrechte, legt – falls benötigt – intern benötigte Verwaltungsstrukturen an und koordiniert weitere Zugriffsversuche anderer Anwendungen auf die betreffende Ressource. Gibt eine Anwendung die Ressource durch einen Schließen-Aufruf wieder frei, werden die Verwaltungsstrukturen wieder abgebaut, und der Handle wird ungültig.

Weitere Bezeichnungen, die je nach Verwendung auch eine speziellere Bedeutung erhalten, sind neben Handle (Microsoft Windows), Capability (akademisch) oder Deskriptor (POSIX). Die Terminologie ist über verschiedene Systeme hinweg nicht konsistent. Beispielsweise sind POSIX-Capabilities keine Referenzen auf konkrete Systemressourcen, sondern repräsentieren die Erlaubnis, eine gewisse Aktion durchzuführen.[4]

Wenn es sich bei der betreffenden Systemressource um eine Datei handelt, wird der Handle auch als Datei-Handle oder Dateideskriptor bezeichnet.

Ein Handle verbindet die Identifikation einer Systemressource mit Zugriffsrechten. So kann zum Beispiel eine Anwendung, die eine Datei durch einen Systemaufruf mit Schreibrechten öffnet, durch Erhalt des Handles nachfolgend Schreiboperationen auf der Datei ausführen, indem der Handle als Ziel der Operation angegeben wird.

Das Prinzip lässt sich durch den Vergleich mit einem Geschäftszeichen im Schriftverkehr mit Ämtern veranschaulichen. Als Bürger erhält man nicht unmittelbaren Zugang zu den Unterlagen, sondern nimmt durch Angabe eines Geschäftszeichens Bezug auf den bisherigen Vorgang.

Datei-Handle

Für die systemnahe Programmierung stellen Betriebssysteme Funktionen zum Öffnen oder Erstellen von Dateien bereit. Diese geben im Erfolgsfall eine ganze Zahl zurück, die eine Referenz auf einen Dateideskriptor (Datei-Handle) darstellt und die anschließend für weitere Operationen mit der Datei verwendet wird.[5] In fast allen Implementierungen der Programmiersprache C für heutige Betriebssysteme erhalten die Standard-Datenströme stdin, stdout und stderr als Handle die Werte 0, 1 beziehungsweise 2. Dies ist jedoch nicht Bestandteil von Standard-C, sondern eine von UNIX-Betriebssystemen eingeführte und dann vielfach übernommene Konvention.[6]

Das NFS-Protokoll für Dateizugriffe über ein Netzwerk verwendet Datei-Handles zur Adressierung von Dateioperationen.

Weitere Bedeutungen

In Matlab erzeugt das Voranstellen des @-Zeichens vor eine Funktion einen Funktions-Handle, der mit Funktionszeigern beispielsweise in C vergleichbar ist.[7]

Im Windows-API ist HANDLE als Datentyp definiert, wobei weitere ressourcenspezifische Datentypen davon abgeleitet werden (z. B. HBITMAP oder HBRUSH).[8]

Ein Handle-System[9] dient zur Vergabe und Verwaltung von Identifikatoren im World Wide Web, die auch als Handles bezeichnet werden. Ähnlich wie das Domain Name System stellt ein Handle-System in diesem Sinne ein Verfahren zur Auflösung von Namensräumen dar. Eine entsprechende Anwendung von solchen Handles, die im deutschsprachigen Raum bekannter ist, sind Digital Object Identifiers. Ein weiteres System sind die Persistent Uniform Resource Locators.

Literatur

  • Sam Sun, Larry Lannom, Brian Boesch: RFC3650 – Handle System Overview. November 2003 (englisch).
  • Sam Sun, Sean Reilly, Larry Lannom, Jason Petrone: RFC3652 – Handle System Protocol (ver 2.1) Specification. November 2003 (englisch).
  • Sam Sun, Sean Reilly, Larry Lannom: RFC3651 – Handle System Namespace and Service Definition. November 2003 (englisch).

Weblinks

Einzelnachweise

  1. Thomas W. Doeppner: Operating Systems In Depth: Design and Programming. John Wiley & Sons, 2010, ISBN 978-0-471-68723-8, S. 20 (eingeschränkte Vorschau in der Google-Buchsuche).
  2. Archivlink (Memento vom 7. Juli 2013 im Internet Archive) Handles bei Windows (deutsch)
  3. stackoverflow.com Kurzbeschreibung (englisch)
  4. Max Hailperin: Operating Systems And Middleware: Supporting Controlled Interaction. Cengage Learning, 2006, ISBN 0-534-42369-8, S. 242 ff. (eingeschränkte Vorschau in der Google-Buchsuche).
  5. Richard Blum: Professional Assembly Language. Wrox, 2005, ISBN 0-7645-9561-X, S. 457 (eingeschränkte Vorschau in der Google-Buchsuche).
  6. Peter Prinz, Ulla Kirch-Prinz: C: Einführung und professionelle Anwendung. S. 335 f. (eingeschränkte Vorschau in der Google-Buchsuche).
  7. Aaron R. Bradley: Programming for Engineers. A Foundational Approach to Learning C and Matlab. Springer, 2011, ISBN 978-3-642-23302-9, S. 204 (eingeschränkte Vorschau in der Google-Buchsuche).
  8. Windows data types. msdn.microsoft.com (englisch)
  9. The Handle System – Website der Corporation for National Research Initiative (englisch)