Sistema operacional - Hardware de E / S

Uma das tarefas importantes de um sistema operacional é gerenciar vários dispositivos de E / S, incluindo mouse, teclado, touch pad, unidades de disco, adaptadores de vídeo, dispositivos USB, tela mapeada em bits, LED, conversor analógico-digital, ligado / interruptor de desligamento, conexões de rede, E / S de áudio, impressoras etc.

Um sistema de E / S é necessário para receber uma solicitação de E / S do aplicativo e enviá-la para o dispositivo físico, em seguida, pegar qualquer resposta que vier do dispositivo e enviá-la para o aplicativo. Os dispositivos I / O podem ser divididos em duas categorias -

  • Block devices- Um dispositivo de bloco é aquele com o qual o driver se comunica enviando blocos inteiros de dados. Por exemplo, discos rígidos, câmeras USB, disco na chave etc.

  • Character devices- Um dispositivo de caractere é aquele com o qual o driver se comunica enviando e recebendo caracteres únicos (bytes, octetos). Por exemplo, portas seriais, portas paralelas, placas de som, etc.

Controladores de dispositivo

Drivers de dispositivo são módulos de software que podem ser conectados a um sistema operacional para lidar com um dispositivo específico. O sistema operacional recebe ajuda de drivers de dispositivo para lidar com todos os dispositivos de E / S.

O Controlador de dispositivo funciona como uma interface entre um dispositivo e um driver de dispositivo. As unidades de E / S (teclado, mouse, impressora, etc.) geralmente consistem em um componente mecânico e um componente eletrônico, onde o componente eletrônico é chamado de controlador de dispositivo.

Sempre há um controlador de dispositivo e um driver de dispositivo para cada dispositivo para se comunicar com os sistemas operacionais. Um controlador de dispositivo pode ser capaz de lidar com vários dispositivos. Como interface, sua principal tarefa é converter o fluxo de bits serial em bloco de bytes, realizar a correção de erros conforme necessário.

Qualquer dispositivo conectado ao computador é conectado por um plugue e soquete, e o soquete é conectado a um controlador de dispositivo. A seguir está um modelo para conectar a CPU, memória, controladores e dispositivos de E / S onde a CPU e os controladores de dispositivo usam um barramento comum para comunicação.

E / S síncrona vs assíncrona

  • Synchronous I/O - Neste esquema, a execução da CPU aguarda enquanto o I / O prossegue

  • Asynchronous I/O - I / O prossegue simultaneamente com a execução da CPU

Comunicação para dispositivos de E / S

A CPU deve ter uma maneira de passar informações de e para um dispositivo de E / S. Existem três abordagens disponíveis para se comunicar com a CPU e o dispositivo.

  • E / S de instrução especial
  • E / S mapeada por memória
  • Acesso direto à memória (DMA)

E / S de instrução especial

Isso usa instruções da CPU que são feitas especificamente para controlar dispositivos de E / S. Essas instruções normalmente permitem que os dados sejam enviados a um dispositivo de E / S ou lidos de um dispositivo de E / S.

E / S mapeada por memória

Ao usar E / S mapeada em memória, o mesmo espaço de endereço é compartilhado pela memória e dispositivos de E / S. O dispositivo é conectado diretamente a determinados locais da memória principal para que o dispositivo de E / S possa transferir blocos de dados de / para a memória sem passar pela CPU.

Ao usar o IO mapeado em memória, o SO aloca o buffer na memória e informa o dispositivo de I / O para usar esse buffer para enviar dados à CPU. O dispositivo de E / S opera de forma assíncrona com a CPU, interrompe a CPU quando concluído.

A vantagem deste método é que cada instrução que pode acessar a memória pode ser usada para manipular um dispositivo de E / S. IO mapeado por memória é usado para a maioria dos dispositivos de I / O de alta velocidade, como discos e interfaces de comunicação.

Acesso direto à memória (DMA)

Dispositivos lentos, como teclados, irão gerar uma interrupção na CPU principal após cada byte ser transferido. Se um dispositivo rápido, como um disco, gerasse uma interrupção para cada byte, o sistema operacional gastaria a maior parte do tempo tratando dessas interrupções. Portanto, um computador típico usa hardware de acesso direto à memória (DMA) para reduzir essa sobrecarga.

Acesso direto à memória (DMA) significa que a CPU concede autoridade ao módulo de E / S para ler ou gravar na memória sem envolvimento. O próprio módulo DMA controla a troca de dados entre a memória principal e o dispositivo de E / S. A CPU está envolvida apenas no início e no final da transferência e é interrompida apenas após a transferência do bloco inteiro.

O acesso direto à memória precisa de um hardware especial denominado controlador DMA (DMAC) que gerencia as transferências de dados e controla o acesso ao barramento do sistema. Os controladores são programados com ponteiros de origem e destino (onde ler / escrever os dados), contadores para rastrear o número de bytes transferidos e configurações, que incluem E / S e tipos de memória, interrupções e estados para os ciclos da CPU.

O sistema operacional usa o hardware DMA da seguinte forma -

Degrau Descrição
1 O driver do dispositivo é instruído a transferir dados do disco para um endereço de buffer X.
2 O driver de dispositivo então instrui o controlador de disco a transferir dados para o buffer.
3 O controlador de disco inicia a transferência DMA.
4 O controlador de disco envia cada byte para o controlador DMA.
5 O controlador DMA transfere bytes para o buffer, aumenta o endereço de memória, diminui o contador C até que C se torne zero.
6 Quando C torna-se zero, o DMA interrompe a CPU para sinalizar a conclusão da transferência.

Polling vs Interrupts I / O

Um computador deve ter uma maneira de detectar a chegada de qualquer tipo de entrada. Isso pode acontecer de duas maneiras, conhecidas comopolling e interrupts. Ambas as técnicas permitem que o processador lide com eventos que podem ocorrer a qualquer momento e que não estão relacionados ao processo em execução no momento.

E / S de sondagem

O polling é a maneira mais simples de um dispositivo de E / S se comunicar com o processador. O processo de verificar periodicamente o status do dispositivo para ver se é hora da próxima operação de E / S é chamado de polling. O dispositivo de E / S simplesmente coloca as informações em um registrador de status e o processador deve vir e obter as informações.

Na maioria das vezes, os dispositivos não exigem atenção e, quando isso acontece, é necessário esperar até ser interrogado pela próxima vez pelo programa de votação. Este é um método ineficiente e muito do tempo do processador é desperdiçado em pesquisas desnecessárias.

Compare esse método com um professor perguntando continuamente a todos os alunos de uma classe, um após o outro, se eles precisam de ajuda. Obviamente, o método mais eficiente seria o aluno informar o professor sempre que precisar de ajuda.

Interrompe I / O

Um esquema alternativo para lidar com E / S é o método controlado por interrupção. Uma interrupção é um sinal para o microprocessador de um dispositivo que requer atenção.

Um controlador de dispositivo coloca um sinal de interrupção no barramento quando precisa da atenção da CPU quando a CPU recebe uma interrupção. Ele salva seu estado atual e invoca o manipulador de interrupção apropriado usando o vetor de interrupção (endereços de rotinas do sistema operacional para lidar com vários eventos). Depois de lidar com o dispositivo de interrupção, a CPU continua com sua tarefa original como se nunca tivesse sido interrompida.