Fundamentos de Sistemas Operacionais
Aula 14: Entrada e Saída:
Dispositivos e Tipos de Acesso
Diego Passos
Dispositivos de E/S
Operação de E/S
É qualquer operação que mova dados do contexto do processador para fora, ou vice-versa.
Registradores e memória principal estão no âmbito do processador.
Processador se conecta a uma série de dispositivos através de barramentos de dados.
Chamados de periféricos.
Compartilham um mesmo barramento PCI, PCI-E, ISA, AGP, ...
Tipos de Dispositivos de E/S
Existem dispositivos de interface com o usuário.
Transmitem ou leem informações para/do usuário.
Mouse.
Teclado.
Monitor.
Existem dispositivos de armazenamento de massa.
Também chamados de memória secundária.
Disco rígido.
Leitor/gravador de CD/DVD.
Pendrive.
Existem ainda dispositivos de comunicação com outras máquinas.
Transmitem dados entre dois computadores.
Modem.
Placa de rede.
Classificação pelo Sentido do Fluxo
Dispositivos podem ser classificados pelo sentido do fluxo de dados.
Dispositivos de Entrada.
Só permitem leitura de dados.
Teclado, mouse, ...
Dispositivos de Saída.
Permitem apenas escrita de dados.
Monitor, impressora, ...
Dispositivos de Entrada e Saída.
Permitem fluxo de dados em ambos os sentidos.
Disco rígido, placa de som, ...
Classificação pela Quantidade de Bytes
Dispositivos podem ser classificados de acordo com a quantidade de informação que é lida/escrita a cada
iteração.
Dispositivos de caracter.
Só enviam/recebem 1 byte (caracter) por iteração.
Teclado, porta UART, ...
Dispositivos de Blocos.
Enviam/recebem blocos de informação a cada iteração.
Disco rígido, placa de rede, ...
Classificação pela Interconexão
Dispositivos podem ser classificados de acordo com a interface de conexão com o computador.
Dispositivos seriais.
Só permitem leitura/escrita de 1 bit por vez.
Teclado USB, disco rígido SATA, ...
Dispositivos paralelos.
Permitem leitura/escrita de vários bits por vez.
Impressora em porta paralela, disco rígido SCSI, ...
Classificação pela Interconexão (mais)
Controladores
Em geral, dispositivos não estão diretamente conectados ao barramento.
Se conectam através de algum tipo de interface a um controlador.
Controladores são pequenos microcontroladores que manipulam dispositivos de E/S.
Estes sim se ligam a um dos barramentos do sistema.
Simplifica o processador:
Processador não precisa implementar todos os protocolos de comunicação de periféricos.
USB, FireWire, VGA, HDMI, S/PDIF, ...
Apenas protocolos de alguns barramentos são implementados.
Controladores implementam demais protocolos.
Controladores (mais)
Espaço de Memória vs.
Espaço de E/S
Endereçando Dispositivos de E/S
Processador está conectado físicamente aos dispositivos através de um barramento.
Ao menos, aos controladores.
Como instruir o processador a fazer um E/S?
Como o processador vê os dispositivos?
Que tipo de instruções são usadas para acessá-los?
Duas possibilidades:
Dispositivos mapeados em espaço de memória.
Dispositivos mapeados em espaço de E/S.
Mapeamento em Espaço de Memória
Cada dispositivo recebe um ou mais endereços.
Endereços identificam registradores do dispositivo.
Registrador de dados.
Registrador de controle.
Registrador de status.
Endereços podem ser vistos como posições de memória principal.
Instruções que manipulam memória principal, são usadas para manipular dispositivos de E/S.
e.g., instrução mov end, valor:
Se end é o endereço de um dispositivo de E/S (de um registrador), valor é copiado para lá através do barramento.
Mapeamento em Espaço de Memória (mais)
Posições de memória associadas a dispositivos de E/S não podem ser usadas pela memória principal.
Não chega a ser problema.
Dispositivos recebem os primeiros endereços ou os últimos.
Endereços da memória principal podem sofrer um shift.
Exemplo deste mapeamento:
Memória de vídeo no MS-DOS.
Buffer da placa de vídeo era mapeado para o endereço 0xB8000000.
Escritas neste endereço alteravam o que era mostrado pelo monitor.
Mapeamento em Espaço de E/S
Alternativa ao mapeamento em espaço de memória.
Dispositivos (ou seus registradores) continuam recebendo endereços.
Porém estes endereços não podem ser mais tratados como posições de memória.
Pertencem a um outro espaço.
Precisam de funções específicas de manipulação.
Instruções IN e OUT.
Instrução IN:
Lê dado do barramento e coloca em um registrador.
Instrução OUT:
Lê dado de registrador e escreve no barramento.
Comparação
Mapeamento em espaço de E/S separa melhor memória principal e dispositivos de E/S.
Posições válidas da memória principal são economizadas.
Podem ser usadas para endereçar efetivamente a memória principal.
Mapeamento em espaço de memória pode ser mais intuitivo para os programadores.
Por exemplo, para a memória de vídeo.
Programador a vê como uma matriz no seu programa.
Processadores mais comuns suportam os dois modos.
Comparação (mais)
Modos de Transferência de
Dados
Como Transferir os Dados?
Os modos de mapeamento são apenas uma abstração.
Definem como o programador deve olhar para os dispositivos de E/S.
Mas eles não definem como a transferência de dados deve ser feita entre o processador e os dispositivos de E/S.
Exemplo:
Arquivo está carregado em memória principal.
100 bytes devem ser escritos no disco rígido.
Como realizar o envio para o dispositivo de E/S?
Processador não pode simplesmente escrever continuamente no barramento.
Para cada escrita no barramento, deve haver uma
confirmação de que o byte foi gravado corretamente em disco.
Como Transferir os Dados? (mais)
Três soluções distintas:
E/S programado.
E/S por interrupções.
DMA.
E/S Programado (PIO)
Trabalho é feito "manualmente".
Processador escreve no barramento.
Seja utilizando a instrução MOVE, seja utilizando a instrução OUT.
Processador passa a ler constantemente o registrador de status do dispositivo.
Espera que o status indique sucesso ou falha.
Operação chamada de polling.
Espécie de espera ocupada.
Entre dois pollings, processador pode fazer alguma outra coisa.
Realizar algum processamento.
Neste sentido, um pouco diferente da espera ocupada.
E/S Programado (mais)
Quando o status do dispositivo indica que a operação foi concluída, processador envia mais dados.
Nova execução da instrução OUT ou da instrução MOVE.
Ciclo se repete até que todos os dados tenham sido escritos/lidos.
Pouco eficiente:
Se a frequência de polling é alta, muitos ciclos de processamento são desperdiçados.
Se a frequência é baixa:
Operação de E/S pode demorar mais que o necessário.
Dados podem ser perdidos.
E/S por Interrupções
Idealmente, transferência de dados em E/S seria assíncrona.
Processador faria uma requisição (escrita ou leitura).
Processador voltaria a processar alguma outra coisa.
Quando a requisição estivesse pronta, dispositivo avisaria o processador.
Felizmente, processadores atuais dão suporte para este tipo de funcionamento.
Através das interrupções.
Quando dispositivo de E/S dispara uma interrupção, processador é interrompido.
Tratador de interrupção do SO é disparado.
Interrupção é identificada.
SO toma alguma atitude (por exemplo, debloquear um processo).
E/S por Interrupções
Alternativa bem mais eficiente que a E/S programada.
Não há necessidade de polling.
Mesmo assim, há um grande overhead para transferências grandes.
Suponha uma transferência de 100 bytes da memória principal para o disco rígido.
Suponha que cada chamada a instrução OUT transfira apenas 1 byte.
São necessárias 100 execuções da instrução para completar o processo.
São necessárias ainda instruções para trazer cada byte da memória principal para um registrador do
processador.
DMA (Direct Memory Access)
Método que corrige ineficiências da E/S por Interrupções.
Utiliza um dispositivo de hardware extra, chamado DMA.
Basicamente, um microcontrolador com acesso ao barramento de dados e à memória principal.
Trabalho do DMA é intermediar operações de E/S.
Quando o processador tem uma grande quantidade de bytes para transferir, ele delega a tarefa ao DMA.
Processador informa ao DMA:
Endereço do dispositivo de E/S.
Endereço inicial do buffer da memória principal.
Quantidade de bytes a serem transferidos.
Sentido da transferência.
DMA (Direct Memory Access) (mais)
DMA se encarrega do trabalho da transferência.
Envia/recebe bloco de dados.
Aguarda que operação termine.
Repete o procedimento.
Quando a transferência de todos os dados está completa, DMA gera uma interrupção.
Processador é avisado de que a operação terminou.
É o mais eficiente dos 3 métodos.
Processador fica completamente livre durante toda a transferência.
Maior parte dos sistemas modernos implementam o DMA.
Revisão
Para Lembrar
Classificações de dispositivos de E/S.
Por sentido do fluxo.
Por interconexão.
Por quantidades de bytes transmitidos.
Modos de mapeamento dos dispositivos.
Mapeamento em espaço de memória.
Mapeamento em espaço de E/S.
Modos de transferência de dados.
E/S programada.
E/S por interrupções.
DMA.