Pseudo terminal

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Terminal.
Pseudo terminals et leur implémentation script(1)

Certains systèmes d'exploitation parmi lesquels Unix implémentent la fonctionnalité du pseudo-terminal. Un pseudo terminal est composé d'un couple de pseudo-périphériques: un émulateur de console, asservi à un processus de contrôle.

Les PTYs BSD[modifier | modifier le code]

Dans le système des pseudo-terminals ( PTY : Pseudo TeletYpe ) de la distribution BSD le contrôleur périphérique asservi dont la nomenclature est de type /dev/tty[p-za-e][0-9a-f] implémente le support des appels système de manière équivalente à celle de n'importe quelle console physique. Il implémente notamment la fonction logon. Le contrôleur de terminal dont la nomenclature est généralement /dev/pty[p-za-e][0-9a-f] constitue le point d'accès à l'émulateur de console.

Le schéma d'attribution de type [p-za-e] mentionné ci-dessus supporte au maximum 256 coupes tty. En conséquence tenter l'accès à un premier master pty disponible peut donner lieu à des situations de type concurrentielles en l'absence d'un système idoine. C'est la raison pour laquelle les O.S BSD contemporains, par exemple FreeBSD implémentent le PTY Unix98[1].

Les PTYs Unix98[modifier | modifier le code]

Les pseudo-télétypes ou PTYs de BSD sont devenus obsolètes avec Unix98 dans lequel la nomenclature pty ne limite pas le nombre de pseudo-terminals qui peuvent être créés. /dev/ptmx représente le "pseudo-terminal master multiplexer", ou routeur. Son action retourne le descripteur de fichier correspondant à un node maître et crée également le processus node asservi /dev/pts/N correspondant[2].

Applications[modifier | modifier le code]

Le rôle du processus émulateur de terminal est l'interaction avec l'utilisateur. L'utilisateur saisit ses entrées clavier face au pseudo-périphérique asservi, à destination du processeur de commande (shell) qui est connecté au pseudo-périphérique maître, lequel retourne les réponses du shell à l'utilisateur. Le processus émulateur de terminal doit égalent gérer les commandes de contrôle d'affichage telles que le format d'affichage. Parmi les programmes d'émulation de terminal les plus connus figurent en premier xterm, GNOME Terminal et Mac OS X Terminal. Le serveur contrôleur de téléopérations (remote login handler), par exemple ssh ou telnet est destiné au même usage en téléopération. On trouve ensuite d'autres programmes d'une différente tels que expect.

Screen et Tmux gèrent un contexte de session en sus d'un pseudo terminal, une solution plus versatile et plus robuste selon les cas. La persistance de contexte permet par exemple la déconnexion puis la reconnexion ultérieure à partir d'un autre ordinateur sur le réseau.

Origines[modifier | modifier le code]

Le pseudo terminal existe dès le contrôleur temps-partagé (Timesharing Monitor) DEC PDP-6, au moins depuis 1967, il était utilisé pour l'implémentation en traitement par lots (batch processing en anglais)[3]. Les PTYs figurent dans la documentation du TOPS-10, successeur du Timesharing Monitor, sur le PDP-10[4]. Les PTYs sont présents sur d'autres O.S. DEC, par exemple RSTS/E sur le PDP-11, comme également le système tiers-parti TENEX sur le PDP-10. Les PTYs apparaissent sur Unix en 1983 à l'occasion du développement de la huitième édition Eighth Edition Unix sur la base de la version TENEX[5]. Ils font partie de la version 4.2 du BSD. Le System V de AT&T supporte le pseudo terminal via un pilote de leur dans leur modèle de gestion périphériques STREAMS, et en maintient également le support d'un multiplex.

Notes et références[modifier | modifier le code]

  1. (en) « Query Results for "posix_openpt" in the freebsd Man Page Set - Section 2 » (consulté le 16 dec 2012)
  2. « ptmx, pts - pseudoterminal master and slave », sur The Linux man-pages project (consulté en 12 déc 2012)
  3. _
  4. PDP-10 Timesharing Monitors Programmer's Reference Manual section 5.10
  5. D.M. Ritchie, A stream input-output system, vol. 63, AT&T Bell Laboratories Technical Journal, p. 1897–1910