En informatique, 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 système, asservi à un processus de contrôle.

Pseudo terminals et leur implémentation script(1).

Les PTYs BSD modifier

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 la prise en charge 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 prend en charge au maximum 256 coupes tty. En conséquence, tenter l'accès à un premier master pty disponible peut donner lieu à des situations de type concurrentiel 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

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

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 également 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 conception différente tels que expect.

Screen et Tmux gèrent un contexte de session en sus d'un pseudo terminal, une solution plus polyvalente 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

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). Les PTYs figurent dans la documentation du TOPS-10, successeur du Timesharing Monitor, sur le PDP-10[3]. 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[4]. Ils font partie de la version 4.2 du BSD. Le System V de AT&T intègre le pseudo terminal via un pilote du modèle de gestion périphériques STREAMS, et en maintient également la prise en charge d'un multiplex.

Notes et références modifier

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