Pseudoterminal

Pseudoterminal

Ein Pseudoterminal ist ein Systemdienst in einer Unix-Umgebung, der meist vom Kernel bereitgestellt wird.

Das Pseudoterminal ist eine Art der Interprozesskommunikation, eine bidirektionale Pipe, die den Datenfluss interpretiert und auf konfigurierbare Ereignisse speziell reagiert. Diese zusätzlichen Funktionen des Pseudoterminals sind dieselben, die innerhalb des Kernels mit einem normalen (z. B. seriellen) Terminal assoziiert werden.

Architektur bei normalem Terminal

Textanwendung <---> Terminalgerät <-K-> serielle Schnittstelle
shell         <---> /dev/ttyS0    <-K-> Kerneltreiber für s. Schnittstelle

Architektur eines Pseudoterminals

Textanwendung <---> Slave       <-K-> Master    <---> Terminalemulation/Netzwerkserver
shell         <---> /dev/pts/1  <-K-> /dev/ptmx <---> sshd
shell         <---> /dev/pts/23 <-K-> /dev/ptmx <---> screen

<-K-> bedeutet: innerhalb des Kernels verbunden.

Funktionsweise

Ein Terminal ermöglicht die textorientierte Ein/Ausgabe. Dabei ist eine Seite immer mit einem Prozess verbunden, das heißt, der Prozess hat eine Gerätedatei des Terminals geöffnet (/dev/ttyS0, /dev/tty1, …). Die andere Seite des Terminals wird z. B. mit einer seriellen Schnittstelle verbunden (ttySn) oder mit der Systemkonsole (Monitor/Tastatur) (ttyn) (n = 0, 1, 2, …). Beim Pseudoterminal ist die andere Seite wiederum mit einem Prozess verbunden. Ein Pseudoterminal hat eine Master- und eine Slave-Seite. Die Slave-Seite ist das Äquivalent zu einem normalen Terminal-Gerät, die Master-Seite ist (im Kernel) direkt mit der Slave-Seite verbunden. Der Master ist also das, was bei einem normalen Terminal die serielle Schnittstelle ist, nur dass statt mit einer seriellen Schnittstelle Daten auszutauschen, dies mit einem Prozess geschieht. Deswegen ist ein Pseudoterminal auch eine Form der Interprozesskommunikation. Im Unterschied zu einer Pipe oder einem Unix Domain Socket werden die Daten aber während des Transits von Master zu Slave interpretiert. Falls bestimmte Escape-Sequenzen übertragen werden sollen, werden sie nicht an den Slave weitergereicht, sondern lösen eine Aktion aus. Zum Beispiel wird dem Prozess, der die Slave-Seite geöffnet hat ein SIGINT-Signal geschickt, wenn in den Master 0x03 geschrieben wird (Steuerung+C). Diese Interpretation heißt Flusskontrolle. Wird Steuerung+S (0x13) in den Master geschrieben, dann bekommt der Prozess, der den Slave geöffnet hat (genauer: der den Slave zu seinem controlling tty gemacht hat) ein SIGSTOP-Signal und bei Steuerung+Q (0x11) ein SIGCONT-Signal.

Diese Funktionen hat auch der Gerätetreiber für ein normales Terminal, die Interprozessverbindung wird um diese Funktionen bei einem Pseudoterminal ergänzt.

Wenn es heißt: ein Prozess schreibt in den Master, dann ist das vergleichbar mit: ein Terminalgerät überträgt Daten über die serielle Schnittstelle zum Computer. Die Zusatzfunktion eines Pseudoterminals gegenüber einer Pipe ist also marginal, eine Shell wird aber wichtige Funktionen (Job Control, Flow Control, zeichenorientierte Eingabe) mit einer Pipe nicht zur Verfügung stellen können. Häufig werden Pseudoterminals für netzwerktransparente Terminalverbindungen benutzt (telnet, ssh) und für GUI-basierte Terminalemulationen (xterm).

Programme die Pseudoterminals benutzen

screen
ein Fenstermanager für den Textmodus
xterm
eine Terminalemulation für X11
sshd
Terminalserver

screen öffnet pro Fenster einen neues Master/Slave-Paar.

shell  <---> slave  <-K-> master  <---> "screen" <---> master2 <-K-> slave2 <---> shell2
                                           ^
                                           |
shell3 <---> slave3 <-K-> master3 <--------|------> master4 <-K-> slave4 <---> shell4

Wenn man einen screen in einem xterm ausführt, ergibt sich folgendes Bild:

shell <---> slave1 <-K-> master1 <---> screen <---> slave2 <-K-> master2 <---> xterm

Früher hießen die Master typischerweise /dev/ptyp0, /dev/ptyp1, … und die dazugehörigen Slaves /dev/ttyp0, /dev/ttyp1. Heutzutage gibt es einen Master, /dev/ptmx (pseudo terminal multiplexer), den man beliebig oft öffnen kann. Jedes Mal kann man dabei einen neuen Slave allozieren (ioctl). Die Slaves heißen dann z. B. /dev/pts/1, /dev/pts/23.


Wikimedia Foundation.

Игры ⚽ Поможем написать курсовую

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Abfragestation — Serielles Text Terminal Sperry UNIVAC UNISCOPE 200 für koaxialen Anschluss Ein Terminal, auch Konsole eines Computers ist ein Benutzerendgerät zur Eingabe …   Deutsch Wikipedia

  • Benutzerendgerät — Serielles Text Terminal Sperry UNIVAC UNISCOPE 200 für koaxialen Anschluss Ein Terminal, auch Konsole eines Computers ist ein Benutzerendgerät zur Eingabe …   Deutsch Wikipedia

  • Computer-Terminal — Serielles Text Terminal Sperry UNIVAC UNISCOPE 200 für koaxialen Anschluss Ein Terminal, auch Konsole eines Computers ist ein Benutzerendgerät zur Eingabe …   Deutsch Wikipedia

  • Computerterminal — Serielles Text Terminal Sperry UNIVAC UNISCOPE 200 für koaxialen Anschluss Ein Terminal, auch Konsole eines Computers ist ein Benutzerendgerät zur Eingabe …   Deutsch Wikipedia

  • Dialogstation — Serielles Text Terminal Sperry UNIVAC UNISCOPE 200 für koaxialen Anschluss Ein Terminal, auch Konsole eines Computers ist ein Benutzerendgerät zur Eingabe …   Deutsch Wikipedia

  • Konsoloperator — Serielles Text Terminal Sperry UNIVAC UNISCOPE 200 für koaxialen Anschluss Ein Terminal, auch Konsole eines Computers ist ein Benutzerendgerät zur Eingabe …   Deutsch Wikipedia

  • Terminal-Emulator — Eine Terminalemulation ist ursprünglich das Nachbilden eines Terminals (Daten Endgerät ohne Rechner Intelligenz) mittels eines lokalen Computers (PC) und eines hierzu eingesetzten Programms, zum Zweck der Kommunikation des PCs und seines Nutzers… …   Deutsch Wikipedia

  • Terminalemulator — Eine Terminalemulation ist ursprünglich das Nachbilden eines Terminals (Daten Endgerät ohne Rechner Intelligenz) mittels eines lokalen Computers (PC) und eines hierzu eingesetzten Programms, zum Zweck der Kommunikation des PCs und seines Nutzers… …   Deutsch Wikipedia

  • Terminalprogramm — Eine Terminalemulation ist ursprünglich das Nachbilden eines Terminals (Daten Endgerät ohne Rechner Intelligenz) mittels eines lokalen Computers (PC) und eines hierzu eingesetzten Programms, zum Zweck der Kommunikation des PCs und seines Nutzers… …   Deutsch Wikipedia

  • POSIX terminal interface — The POSIX terminal interface is the generalized abstraction, comprising both an Application Programming Interface for programs, and a set of behavioural expectations for users of a terminal, as defined by the POSIX standard and the Single Unix… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”