Sistemas de Entrada e Saída Eduardo Ferreira dos Santos
Ciência da Computação Centro Universitário de Brasília UniCEUB Junho, 2017
1 / 44
Sumário
1
Dispositivos de E/S
2
Interrupções
3
Camadas de Software de E/S
2 / 44
Dispositivos de E/S
1
Dispositivos de E/S
2
Interrupções
3
Camadas de Software de E/S
3 / 44
Dispositivos de E/S
Denições
Diferentes formas de interagir com o hardware:
Entradas aceitas; Operações realizadas; Erros repassados aos softwares. Foco: entender as operações que são disponibilizadas aos programas. Dispositivos de bloco Armazenamento de informações em blocos de tamanho xo (discos); Dispositivos de caractere Envia e recebe uxo de caracteres.
4 / 44
Dispositivos de E/S
Dispositivos de bloco
Característica: cada bloco pode ser lido ou escrito independentemente de todos os outros [Tanenbaum and Machado Filho, 1995]; Ex.: CD-ROM, discos,
ash drives;
Considerações sobre a possibilidade de escrita/leitura de blocos independentes:
Como comparar a escrita em discos e tas magnéticas? Como o acesso aleatório afeta o armazenamento ou não em blocos? É possível traçar sempre um limite? Como separar?
5 / 44
Dispositivos de E/S
Dispositivos de caractere
Dispositivos de caracteres:
Envia e recebe um uxo de caracteres; Não são endereçáveis; Não tem operação de posicionamento. Assim como os blocos, a classicação não é perfeita. Ex.: relógio
Não são endereçáveis por bloco; Não enviam nem recebem caracteres; Operação única: causa interrupção em intervalos denidos. A divisão da classicação facilita o desenvolvimento de interfaces de software.
6 / 44
Dispositivos de E/S
Componentes Portas Ponto de conexão entre o dispositivo e o computador; Barramentos Mecanismo de conexão disponibilizado à porta; Barramento PCI comum em computadores domésticos e servidores; Barramento de expansão: conecta dispositivos mais lentos. Controlador Dispositivo eletrônico que conecta a porta e os dispositivos. Pode estar integrado ao dispositivo; Pode ser disponibilizado em uma placa separada (adpatador); Pode conter processador, microcontrolador, memória, etc. A orquestração do acesso aos componentes é feita pelo driver. 7 / 44
Dispositivos de E/S
Barramentos
Figura 1.1: Estrutura típica de barramentos do PC [Galvin et al., 2013] 8 / 44
Dispositivos de E/S
Velocidade dos barramentos
Figura 1.2: Taxa de transmissão de alguns dispositivos de E/S [Tanenbaum and Machado Filho, 1995] 9 / 44
Dispositivos de E/S
Controladores de dispositivos
Controlados através de instruções de Entrada/Saída (I/O); Comandos enviados e recebidos através dos registradores:
Registrador Registrador Registrador Registrador
de de de de
entrada (data-in); saída (data-out); status; controle.
Os dispositivos possuem endereços que podem ser utilizados por: Instruções diretas Comandos enviados diretamente ao dispositivo; I/O na memória Os dispositivos e seus comandos estão diretamente mapeados no espaço de endereçamento do processador.
10 / 44
Dispositivos de E/S
Endereços de I/O
Figura 1.3: Endereços típicos das portas nos PC's [Galvin et al., 2013]
11 / 44
Dispositivos de E/S
Comunicação (a) I/O e memória separados; (b) Espaço único de endereçamento; (c) Dois espaços de endereçamento.
Figura 1.4: Mecanismos de endereçamento [Tanenbaum and Machado Filho, 1995] 12 / 44
Dispositivos de E/S
I/O na memória
Utilizado para evitar I/O programado (um bit de cada vez) para grande quantidade de dados; Precisa de uma controladora DMA Direct Memory Access; A transferência de dados entre o dispositivo e a memória não passa pela CPU; O barramento rouba ciclos da CPU para transferir os dados; Ao nalizar, gera uma interrupção que sinaliza o m da operação; DVMA: versão que trabalha direto com endereços virtuais.
13 / 44
Dispositivos de E/S
DMA
Figura 1.5: Algoritmo de transferência DMA [Galvin et al., 2013] 14 / 44
Interrupções
1
Dispositivos de E/S
2
Interrupções
3
Camadas de Software de E/S
15 / 44
Interrupções
Interrupções revisitadas
A estrutura de interrupções em hardware funciona de uma maneira ligeiramente diferente: 1 2 3 4 5
Ao nalizar o trabalho, o dispositivo de E/S gera uma interrupção enviando um sinal à linha de barramento; O sinal é detectado pelo chip do controlador, que decide o que fazer; Se nenhuma outra interrupção está pendente, o controlador de interrupção processa imediatamente; Se algum outro dispositivo solicitar o recurso e estiver ocupado, é simplesmente ignorado; O dispositivo ca enviando o sinal de interrupção até o barramento estar disponível.
16 / 44
Interrupções
Implementação hardware
Figura 2.1: Ciclo de interrupções de E/S [Galvin et al., 2013] 17 / 44
Interrupções
Polling
Para cada byte de I/O: 1 2 3 4 5
Dispositivo lê o registrador de status até que esteja disponível (0); Dispositivo ajusta o bit de leitura e/ou escrita. Se estiver escrevendo, copia os dados para o registrador data-out; Dispositivo ajusta o bit de command-ready; Controladora ajusta o bit de ocupado e executa a transferência; Controladora ajusta o bit de ocupado, de erro e de command-ready quando a transferência estiver completa.
Durante o passo 1 está no ciclo de busy-wait. Implicações?
18 / 44
Interrupções
Interrupções
O polling pode precisar de três ciclos de CPU: 1 2 3
Lê bit de status; Extrai bit de status; Espera ou escreve.
O CPU precisa produzir algum tipo de interrupção; Mecanismo de vetor de interrupção:
Troca de contexto no começo e no m; Baseado em prioridade; Problema da cadeia de interrupções. Algumas interrupções podem ser ignoradas: mascaradas.
19 / 44
Interrupções
Vetor de interrupção
Figura 2.2: Tabela de interrupções do processador Intel [Galvin et al., 2013] 20 / 44
Interrupções
Pipeline Pode ser difícil mapear o estado das interrupções em sistema multiprocessados. Como funciona o ciclo de interrupções no exemplo da gura?
Figura 2.3: Execução do pipeline [Chagas, 2016] 21 / 44
Interrupções
Interrupção precisa
Para conseguir realizar a interrupção é preciso atender alguns requisitos obrigatórios; Interrupção precisa [Tanenbaum and Machado Filho, 1995]: 1 2 3 4
O contador de programa (program counter PC) é salvo em um lugar conhecido; Todas as instruções anteriores àquela apontada pelo PC foram totalmente executadas; Nenhuma instrução posterior à apontada pelo PC foi executada; O estado de execução da instrução apontada pelo PC é conhecido.
Se os requisitos não forem atendidos a interrupção é considerada imprecisa.
22 / 44
Interrupções
Exemplo (a) Interrupção precisa; (b) Interrupção imprecisa.
Figura 2.4: Exemplo de interrupção precisa e imprecisa [Tanenbaum and Machado Filho, 1995] 23 / 44
Interrupções
Considerações
O mesmo mecanismo utilizado pelas interrupções também é utilizado pelas exceções; Erro no acesso à memória: page fault; A interação com o kernel acontece via trap; Sistemas com múltiplas CPU podem executar interrupções simultâneas; Processamento que leva em consideração o tempo.
24 / 44
Camadas de Software de E/S
1
Dispositivos de E/S
2
Interrupções
3
Camadas de Software de E/S
25 / 44
Camadas de Software de E/S
Objetivos Princípio: independência de dispositivo; Não preciso saber qual é o disco antes de mandar o software escrever; Qualquer input de teclado deve gerar a mesma saída na tela; Nomeação uniforme: o arquivo deve ser identicado pela mesma sequência de caracteres em qualquer dispositivo; O endereçamento do dispositivo é feito pelo nome do caminho: ponto de montagem. O tratamento de erros deve ocorrer o mais próximo do hardware possível; Tipo de transferência: sincrona (bloqueante) ou assíncrona (orientada à interrupção); Utilização de armazenamento temporário: buer.
26 / 44
Camadas de Software de E/S
Implementações de E/S
As implementações de E/S são organizadas de acordo com o mecanismo de transferência: E/S programada A CPU faz todo o trabalho. Envia os dados à medida que chegam e ca esperando o sinal de disponível; E/S interrupção E/S orientada à interrupção era uma interrupção ao terminar de enviar cada caractere; E/S DMA Utiliza a DMA para evitar uma interrupção para cada caractere.
27 / 44
Camadas de Software de E/S
E/S programada
Figura 3.1: Passos ao enviar uma string à impressora [Tanenbaum and Machado Filho, 1995]
28 / 44
Camadas de Software de E/S
E/S programada (implementação)
Figura 3.2: Escrevendo uma string na impressora utilizando E/S programada [Tanenbaum and Machado Filho, 1995]
29 / 44
Camadas de Software de E/S
E/S orientada à interrupção (a) Código executado no momento que a SYSCALL é chamada; (b) Procedimento do serviço de interrupção da impressora.
Figura 3.3: Escrevendo uma string na impressora utilizando E/S orientada à interrupção [Tanenbaum and Machado Filho, 1995]
30 / 44
Camadas de Software de E/S
E/S orientada à DMA
(a) Código executado no momento que a SYSCALL é chamada; (b) Procedimento do serviço de interrupção.
Figura 3.4: Imprimindo uma string utilizando DMA [Tanenbaum and Machado Filho, 1995]
31 / 44
Camadas de Software de E/S
Camadas de software Cada camada do software de E/S tem uma função bem denida; A comunicação se dá através de uma interface com a camada adjacente.
Figura 3.5: Camadas do software de E/S [Tanenbaum and Machado Filho, 1995]
32 / 44
Camadas de Software de E/S
Tratadores de interrupção
As interrupções normalmente são um fato desagradável e não podem ser evitadas; A implementação no hardware é feita através do driver; Uma das formas de diminuir o risco é bloquear o
driver
até que a
operação de E/S seja nalizada; Ex.: interagir com semáforos; Processar interrupção não é apenas dar um UP num semáforo: existem questões relativas aos estados das tarefas que precisam ser tratadas; Algoritmos de interrupção via software.
33 / 44
Camadas de Software de E/S
Algoritmo de interrupção
É possível denir um algoritmo de tratamento de interrupção [Tanenbaum and Machado Filho, 1995]: 1
Salva todos os registradores que ainda não foram salvos pelo hardware;
2
Estabelece um contexto para a rotina de tratamento da interrupção;
3
Estabelece uma pilha para a rotina de tratamento da interrupção;
4
Sinaliza o controlador de interrupção;
5
Copia os registradores de onde eles foram salvos para a tabela de processor;
34 / 44
Camadas de Software de E/S
Algoritmo de interrupção (cont.)
6
Executa a rotina de tratamento de interrupção;
7
Escolhe o próximo processo a executar;
8
Estabelece o contexto da MMU para o próximo processo;
9
Carrega os registradores do novo processo;
10 Inicializa o novo processo.
35 / 44
Camadas de Software de E/S
Drivers de dispositivos
Figura 3.6: Posicionamento lógico dos drivers de dispositivos [Tanenbaum and Machado Filho, 1995]
36 / 44
Camadas de Software de E/S
Utilização dos drivers
Kernel monolítico x Microkernel; Principal função do driver: executar requisições de E/S abstratas, independente do dispositivo; Envio de comandos para o dispositivo; Manusear em operação:
hot pluggable systems;
Os drivers não são aptos a executar chamadas de sistema (SYSCALL).
37 / 44
Camadas de Software de E/S
E/S no kernel
Figura 3.7: Estrutura de E/S no kernel [Galvin et al., 2013] 38 / 44
Camadas de Software de E/S
Independência
Figura 3.8: Funções do software de E/S independente do dispositivo [Galvin et al., 2013]
39 / 44
Camadas de Software de E/S
Uniformidade (a) Sem uma interface padrão (b) Com uma interface padrão.
Figura 3.9: Interface uniforme para tratamento de dispositivos [Tanenbaum and Machado Filho, 1995] 40 / 44
Camadas de Software de E/S
E/S no espaço do usuário
Alguns pedaços do sistema operacional são construídos no formato de bibliotecas reutilizáveis. Ex.: SYSCALL As bibliotecas são linkadas no momento da compilação; Daemon: Processo especial que consome o diretório de spool.
41 / 44
Camadas de Software de E/S
Camadas do espaço do usuário
Figura 3.10: E/S implementado por camadas e suas funções [Tanenbaum and Machado Filho, 1995] 42 / 44
Camadas de Software de E/S
OBRIGADO!!! PERGUNTAS???
43 / 44
Camadas de Software de E/S
Chagas, F. (2016). Notas de aula do prof. fernando chagas. Galvin, P. B., Gagne, G., and Silberschatz, A. (2013).
Operating system concepts. John Wiley & Sons, Inc. Tanenbaum, A. S. and Machado Filho, N. (1995).
Sistemas operacionais modernos,
volume 3.
Prentice-Hall.
44 / 44