Sistemas de Entrada e Saída - eduardosan.com

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...

4 downloads 512 Views 2MB Size
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