Les périphériques d'entrée/sortie sont les composantsmatérielsutilisés par un utilisateur (ou un autre système) pour communiquer avec un ordinateur. Par exemple, unclavierouune sourissont despériphériques d'entrée, tandis qu'unécranouune imprimantesontdes périphériques de sortie. Les dispositifs de communication entre ordinateurs, tels queles modemsetles cartes réseau, effectuent généralement des opérations d'entrée et de sortie. Toute interaction avec le système constitue uneentrée, et la réponse du système est appelée sortie.
La désignation d'un périphérique comme périphérique d'entrée ou de sortie dépend du point de vue. Les souris et les claviers captent les mouvements physiques de l'utilisateur et les convertissent en signaux d'entrée compréhensibles par l'ordinateur ; la sortie de ces périphériques constitue l'entrée de l'ordinateur. De même, les imprimantes et les écrans reçoivent des signaux d'entrée émis par l'ordinateur et les convertissent en une représentation lisible par l'utilisateur. Du point de vue de ce dernier, la lecture ou l'affichage de ces représentations correspond à la réception d'une sortie ; ce type d'interaction entre l'ordinateur et l'humain est étudié dans le domaine de l'interaction homme-machine . Une autre difficulté réside dans le fait qu'un périphérique traditionnellement considéré comme un périphérique d'entrée, par exemple un lecteur de cartes ou un clavier, peut recevoir des commandes de contrôle (sélection de l'empileur, affichage du rétroéclairage du clavier, etc.), tandis qu'un périphérique traditionnellement considéré comme un périphérique de sortie peut fournir des données d'état (niveau de toner faible, manque de papier, bourrage papier, etc.).
En architecture informatique, l'ensemble processeur / mémoire principale , accessible directement par le processeur via des instructions individuelles , constitue le cœur de l'ordinateur. Tout transfert d'informations vers ou depuis cet ensemble processeur/mémoire, par exemple la lecture de données sur un disque dur , est considéré comme une opération d'entrée/sortie (E/S). Le processeur et ses circuits associés peuvent fournir des E/S mappées en mémoire , utilisées dans la programmation bas niveau , notamment pour l'implémentation de pilotes de périphériques , ou permettre l'accès à des canaux d'E/S . Un algorithme d'E/S est conçu pour exploiter la localité des données et optimiser les échanges avec un périphérique de stockage secondaire, tel qu'un disque dur.
bus . L'interface doit posséder la logique nécessaire pour interpréter l'adresse du périphérique générée par le processeur. L'interface doit implémenter un mécanisme de synchronisation (ou « handshake ») à l'aide de commandes appropriées (telles que BUSY, READY et WAIT), permettant ainsi au processeur de communiquer avec un périphérique d'E/S via cette interface. Si différents formats de données sont échangés, l'interface doit pouvoir convertir les données série en données parallèles et inversement. Afin d'éviter tout gaspillage de ressources processeur en attendant des données d'un périphérique d'entrée, il est indispensable de prévoir la génération d'interruptions et l'attribution des numéros de type correspondants pour un traitement ultérieur par le processeur, le cas échéant.des E/S mappées en mémoire accède au matériel en lisant et en écrivant à des emplacements mémoire spécifiques, à l'aide des mêmes instructions en langage assembleur que celles utilisées normalement par l'ordinateur pour accéder à la mémoire. Une autre méthode consiste à utiliser des E/S basées sur des instructions, ce qui nécessite que le processeur dispose d'instructions spécialisées pour les E/S. La vitesse de traitement des données des périphériques d'entrée et de sortie peut varier considérablement. Certains périphériques étant capables d'échanger des données à très haute vitesse, un accès direct à la mémoire (DMA) sans intervention continue du processeur est nécessaire.Mise en œuvre de niveau supérieur
Les systèmes d'exploitation et les langages de programmation de haut niveau utilisent des concepts et des primitives d'entrée/sortie distincts et plus abstraits . Par exemple, la plupart des systèmes d'exploitation fournissent aux applications la notion de fichiers . La plupart des langages de programmation offrent des fonctionnalités d'entrée/sortie, soit sous forme d'instructions, soit sous forme de fonctions dans une bibliothèque standard.
Une alternative aux fonctions primitives spécifiques est la monade d'E/S , qui permet aux programmes de se limiter à la description des entrées/sorties, les actions étant exécutées en dehors du programme. Ceci est remarquable car les fonctions des effets de bord dans n'importe quel langage de programmation, tandis que la monade d'E/S rend la programmation purement fonctionnelle possible.
Les fonctionnalités d'E/S fournies par les systèmes d'exploitation peuvent être orientées enregistrement , avec des fichiers contenant des enregistrements , ou orientées flux, avec le fichier contenant un flux d'octets.
E/S de canal
Les E/S de canal nécessitent l'utilisation d'instructions spécifiquement conçues pour effectuer des opérations d'E/S. Ces instructions adressent le canal, ou le canal et le périphérique ; le canal accède de manière asynchrone à toutes les autres informations d'adressage et de contrôle nécessaires. Ce mécanisme est similaire à l'accès direct à la mémoire (DMA), mais plus flexible.
E/S mappées sur les ports
Les E/S mappées sur les ports nécessitent également l'utilisation d'instructions d'E/S spécifiques. Généralement, un ou plusieurs ports sont attribués au périphérique, chacun ayant une fonction particulière. Les numéros de port se trouvent dans un espace d'adressage distinct de celui utilisé par les instructions classiques.
accès direct à la mémoire
L'accès direct à la mémoire (DMA) est un moyen pour les périphériques de transférer de gros volumes de données vers et depuis la mémoire indépendamment du processeur.