Entrada / saída - Input/output

Em computação , de entrada / saída ( I / O , ou informalmente io ou IO ) é a comunicação entre um sistema de processamento de informação, tal como um computador , e o mundo exterior, possivelmente, um humano ou um outro sistema de processamento de informação. As entradas são os sinais ou dados recebidos pelo sistema e as saídas são os sinais ou dados enviados por ele. O termo também pode ser usado como parte de uma ação; "realizar E / S" é realizar uma operação de entrada ou saída .

Dispositivos de E / S são peças dehardwareusadas por um ser humano (ou outro sistema) para se comunicar com um computador. Por exemplo, umtecladooumouse de computadoré umdispositivo de entradapara um computador, enquantomonitoreseimpressorassãodispositivos de saída. Dispositivos para comunicação entre computadores, comomodemseplacas de rede, normalmente executam operações de entrada e saída.

A designação de um dispositivo como entrada ou saída depende da perspectiva. Ratos e teclados pegam movimentos físicos que o usuário humano produz e os convertem em sinais de entrada que um computador pode entender; a saída desses dispositivos é a entrada do computador. Da mesma forma, impressoras e monitores recebem sinais que os computadores emitem como entrada e convertem esses sinais em uma representação que os usuários humanos possam entender. Da perspectiva do usuário humano , o processo de ler ou ver essas representações está recebendo saída; este tipo de interação entre computadores e humanos é estudado no campo da interação homem-computador . Uma complicação adicional é que um dispositivo tradicionalmente considerado um dispositivo de entrada, por exemplo, leitor de cartão, teclado, pode aceitar comandos de controle para, por exemplo, selecionar empilhador, exibir luzes do teclado, enquanto um dispositivo tradicionalmente considerado como um dispositivo de saída pode fornecer dados de status, por exemplo , pouco toner, sem papel, atolamento de papel.

Na arquitetura do computador, a combinação da CPU e da memória principal , na qual a CPU pode ler ou escrever diretamente usando instruções individuais , é considerada o cérebro de um computador. Qualquer transferência de informações de ou para a combinação CPU / memória, por exemplo, lendo dados de uma unidade de disco , é considerada E / S. A CPU e seu circuito de suporte pode fornecer memória mapeada I / O que é usado no baixo nível de programação de computador , como na implementação de drivers de dispositivo , ou pode fornecer acesso a canais de E / S . Um algoritmo de E / S é projetado para explorar a localidade e ter um desempenho eficiente ao trocar dados com um dispositivo de armazenamento secundário, como uma unidade de disco.

Interface

Uma interface de E / S é necessária sempre que o dispositivo de E / S é acionado por um processador. Normalmente, uma CPU se comunica com dispositivos por meio de um barramento . A interface deve ter a lógica necessária para interpretar o endereço do dispositivo gerado pelo processador. O handshake deve ser implementado pela interface usando comandos apropriados (como BUSY, READY e WAIT), e o processador pode se comunicar com um dispositivo de E / S por meio da interface. Se diferentes formatos de dados estiverem sendo trocados, a interface deve ser capaz de converter os dados seriais para a forma paralela e vice-versa. Como seria um desperdício um processador ficar ocioso enquanto espera pelos dados de um dispositivo de entrada, deve haver provisão para gerar interrupções e os números de tipo correspondentes para processamento posterior pelo processador, se necessário.

Um computador que usa E / S mapeada por memória acessa o hardware lendo e gravando em locais de memória específicos, usando as mesmas instruções em linguagem de montagem que o computador normalmente usaria para acessar a memória. Um método alternativo é via E / S baseada em instrução, que requer que uma CPU tenha instruções especializadas para E / S. Ambos os dispositivos de entrada e saída têm uma taxa de processamento de dados que pode variar muito. Com alguns dispositivos capazes de trocar dados em velocidades muito altas, é necessário acesso direto à memória (DMA) sem o auxílio contínuo de uma CPU.

Implementação de alto nível

Sistema operacional de nível superior e recursos de programação empregam conceitos e primitivos de E / S separados e mais abstratos . Por exemplo, a maioria dos sistemas operacionais fornece programas de aplicativos com o conceito de arquivos . As linguagens de programação C e C ++ , e os sistemas operacionais da família Unix , tradicionalmente abstraem arquivos e dispositivos como fluxos , que podem ser lidos ou escritos, ou às vezes ambos. A biblioteca padrão C fornece funções para manipular fluxos de entrada e saída.

No contexto da linguagem de programação ALGOL 68 , os recursos de entrada e saída são chamados coletivamente de transput . O ALGOL 68 biblioteca transput reconhece os seguintes arquivos / dispositivos padrão: stand in, stand out, stand errorse stand back.

Uma alternativa às funções primitivas especiais é a mônada de E / S , que permite que os programas apenas descrevam E / S, e as ações são realizadas fora do programa. Isso é notável porque as funções de E / S introduziriam efeitos colaterais em qualquer linguagem de programação, mas isso permite que a programação puramente funcional seja prática.

Canal I / O

E / S de canal requer o uso de instruções que são projetadas especificamente para realizar operações de E / S. As instruções de E / S endereçam o canal ou o canal e o dispositivo; o canal acessa de forma assíncrona todas as outras informações de endereçamento e controle necessárias. Isso é semelhante ao DMA, mas mais flexível.

E / S mapeada por porta

A E / S mapeada por porta também requer o uso de instruções especiais de E / S. Normalmente, uma ou mais portas são atribuídas ao dispositivo, cada uma com uma finalidade especial. Os números das portas estão em um espaço de endereço separado daquele usado pelas instruções normais.

Acesso direto à memória

O acesso direto à memória (DMA) é um meio para os dispositivos transferirem grandes blocos de dados de e para a memória independentemente da CPU.

Veja também

Referências

links externos