Entrada e Saída Interface entre periféricos, processador e memória Fonte: Minho - Portugal 1 Ligação Processador/Memória - Periférico Processador Memória Controlo Controlador Dados Fonte: Minho - Portugal 2 Input / Output 1. Qual o papel do Sistema Operacional (SO)? 2. Como é que os pedidos de I/O são transformados em comandos e comunicados ao periférico? 3. Como é que os dados são transferidos entre o periférico e a memória? Fonte: Minho - Portugal 3 I/O – O papel do Sistema Operativo Age como um interface entre os controladores dos periféricos e o programa que pretende realizar operações de I/O Características dos periféricos: 1. São partilhados por vários programas que correm simultaneamente na máquina; 2. Enviam sinais ao processador para comunicar o seu estado; 3. O controlo de um dispositivo de I/O é, geralmente, bastante complexo. Fonte: Minho - Portugal 4 I/O – O papel do Sistema Operativo Funções do Sistema Operacional: 1. Garante que os utilizadores só têm acesso a periféricos para os quais têm direitos; 2. Gere a multiplicidade de acessos, garantindo uso exclusivo quando necessário e justiça no acesso aos recursos; 3. Atende os sinais gerados pelos periféricos; 4. Esconde a complexidade dos periféricos, fornecendo rotinas que tratam dos aspectos de baixo nível (device drivers). Fonte: Minho - Portugal 5 Comunicação de Comandos Para enviar comandos e receber respostas dos periféricos, o processador tem que ser capaz de endereçar os controladores dos periféricos. Existem 2 formas alternativas de comunicação com os controladores: 1. I/O mapeado em memória - porções do espaço de endereçamento são dedicadas aos periféricos; escritas nestes endereços são ignoradas pela memória e comunicadas directamente ao controlador, podendo ser usadas para enviar comandos ou dados; leituras nestes endereços podem ser usadas para receber dados ou verificar o estado do dispositivo; 2. Instruções especiais para I/O (in, out) – a comunicação com os periféricos é feita usando as instruções in e out, para leituras e escritas, respectivamente. Cada periférico tem um ou mais números que o identificam. A maior parte dos sistemas operativos não permite que os programas do utilizador comuniquem directamente com os periféricos. Todos os comandos têm que ser enviados via Sistema Operativo (system calls). Fonte: Minho - Portugal 6 Comunicação Processador - Periférico Conseguida acedendo a registos do controlador. Genericamente, existem 2 tipos de registos: estado/controle e dados. Registos de estado/controle: Usados pelo controlador para comunicar o seu estado (Ready, erros,...) Usados pelo processador para dar ordens ao controlador Registos de dados: Usados para comunicar/receber dados para/do controlador Fonte: Minho - Portugal 7 Transferência de Dados entre a Memória e os Periféricos Existem essencialmente 3 métodos para transferir dados entre a memória e os periféricos: 1. Polling 2. Orientado às interrupções Diminuição do grau de envolvimento do processador 3. Direct Memory Access (DMA) Fonte: Minho - Portugal 8 Polling – espera activa O processador lê repetidamente os registos de estado dos periféricos, para determinar quando é que estes se encontram prontos para iniciar uma transferência de dados. Repetir Ler Registo de Estado do Controlador Até Controlador=Ready Enviar/Escrever Dados de/para Controlador • Fácil de implementar, mas... • Processador responsável por verificar alterações no estado do controlador e por fazer as transferências de dados. • O processador não pode realizar outras tarefas enquanto a operação de I/O não terminar, mesmo que seja muito mais rápido que o controlador do periférico. Fonte: Minho - Portugal 9 Interrupções O controlador envia ao processador um sinal indicando alterações no seu estado. Interrupções – sinais enviados pelos controladores dos periféricos ao CPU, indicando uma alteração no seu estado. Rotina de atendimento de interrupções – ao receber um sinal de interrupt o CPU interrompe o programa que estava a executar e salta para uma rotina de atendimento de interrupções, que se encarrega da transferência de dados. Esta rotina, regra geral, pertence ao S.O. Excepções – semelhantes às interrupções, mas com origem interna ao CPU. As causas podem ser overflow, instrução desconhecida, mau funcionamento do hardware, divisão por zero, etc. Fonte: Minho - Portugal 10 Interrupções Quando ocorre uma excepção ou uma interrupção a execução salta para uma rotina de atendimento. Mas o hardware tem que indicar qual a causa da interrupção. Existem 2 mecanismos alternativos: 1. Interrupções vectorizadas – existem diversas rotinas de atendimento de interrupções, localizadas em diferentes endereços. Quando surge o sinal de interrupt, a execução prossegue no endereço apropriado. 2. Registo de causa – existem apenas 1 rotina de atendimento de interrupções. Quando surge o sinal de interrupt, o hardware coloca num registo de CAUSA um valor identificativo da interrupção. Mecanismos de atribuição de prioridades: indicam qual a excepção ou interrupção que é atendida primeiro, se se verificarem várias em simultâneo: 1. As excepções têm maior prioridade que as interrupções. 2. Periféricos mais rápidos têm maior prioridade que os mais lentos. Fonte: Minho - Portugal 11 Direct Memory Access Polling O CPU verifica activamente alterações no estado do controlador O CPU é responsável pela transferência de dados Interrupt O CPU é notificado de alterações no estado do controlador O CPU é responsável pela transferência de dados Se a quantidade de dados a transferir for elevada, como, por exemplo, no caso dos discos, o overhead no processador é elevado. Direct Memory Access (DMA) – controlador dedicado a transferir dados entre a memória e outros controladores e vice-versa. O mecanismo de interrupções é utilizado apenas para notificar o CPU de que a transferência terminou ou da ocorrência de erros. Fonte: Minho - Portugal 12 Direct Memory Access – Mecanismo O controlador de DMA assume o papel de bus master e dirige todo o tráfego entre a memória e o controlador do periférico. Uma transferência DMA envolve 3 passos: 1. O CPU indica ao DMA a identidade do controlador, o tipo de operação, o endereço de memória a aceder e o número de bytes a transferir; 2. O DMA inicia a operação, arbitra o barramento e transfere os dados na direcção apropriada; o próprio DMA fornece os vários endereços de memória para todo o bloco de dados a ler ou escrever; é possível completar uma transferência de várias centenas ou milhares de dados sem incomodar o CPU; 3. Uma vez a transferência terminada, o DMA interrompe o CPU, que pode então ler os registos de estado do DMA para determinar se a operação completou com sucesso; Fonte: Minho - Portugal 13 Direct Memory Access – Mecanismo Processador Memória Controlador DMA 1. Início da operação Controlador 2. Transferência de dados Disco 3. Interrupção: Fim ou erro Fonte: Minho - Portugal 14 Direct Memory Access – Dificuldades • O CPU e o DMA acedem simultaneamente à memória, criando problemas de contenção; com a utilização da cache o CPU evita aceder à memória principal a maior parte do tempo, diminuindo a contenção; • Num sistema sem DMA apenas o processador acede à memória; num sistema com DMA temos 2 ou mais componentes a aceder à memória; se o DMA está a fazer uma escrita na memória e esse item também se encontra na cache do CPU, então os dois valores ficam diferentes; se o DMA está a fazer uma leitura da memória e a cache é write-back, então o DMA pode estar a ler um valor desactualizado – problema da incoerência. Soluções 1. Fazer o tráfego do DMA passar pela cache – ineficiente 2. Fazer o S.O. ou o hardware invalidar as linhas da cache que são afectadas pelas escritas do DMA (cache flushing), e forçar o write-back das linhas que são lidas pelo DMA. Fonte: Minho - Portugal 15 Mecanismos de I/O - Comparação Polling O CPU verifica activamente alterações no estado do controlador O CPU é responsável pela transferência de dados Interrupt O CPU é notificado de alterações no estado do controlador O CPU é responsável pela transferência de dados DMA O CPU é notificado de alterações no estado do controlador de DMA O DMA é responsável pela transferência de dados O preço das máquinas é muitas vezes determinado pelas facilidades de I/O de que dispõe: número e velocidade dos barramentos, número e tipo de controladores de DMA, resolução dos problemas de contenção e coerência na memória. Fonte: Minho - Portugal 16