Liste e defina resumidamente três técnicas para realizar
.
Passo 1
O enunciado pede: "Liste e defina resumidamente três técnicas para realizar
".
Informações dadas: somente essa frase — ou seja, quer três técnicas diferentes usadas para entrada/saída (I/O) e uma definição curta para cada uma. Não há restrição sobre nível de detalhe, mas você pediu explicações didáticas passo a passo.
Informações dadas: somente essa frase — ou seja, quer três técnicas diferentes usadas para entrada/saída (I/O) e uma definição curta para cada uma. Não há restrição sobre nível de detalhe, mas você pediu explicações didáticas passo a passo.
Passo 2
O que significa fazer
(entrada/saída), em linguagem simples: são operações que transferem dados entre o processador/memória e periféricos (teclado, disco, rede, etc.). Dois conceitos úteis para entender as técnicas:
- Latência: tempo até começar/receber a resposta do dispositivo.
- Vazão (throughput): quantidade de dados transferidos por unidade de tempo.
Essas técnicas tentam equilibrar carga da CPU, latência e vazão. Agora vou explicar três técnicas clássicas, como elas funcionam e quando usar.
Passo 3
Técnica 1 — Polling (ou Programmed I/O / sondagem):
Definição curta: o processador verifica repetidamente o status do dispositivo e, quando o dispositivo está pronto, realiza a transferência.
Como funciona (passo a passo): o driver ou programa entra num laço que lê um registrador de status do controlador do dispositivo; se o bit “pronto” estiver falso, volta a checar; se estiver verdadeiro, lê ou escreve os dados no registrador de dados.
Vantagens: implementação simples; bom para dispositivos muito rápidos ou quando espera é muito curta.
Desvantagens: desperdiça ciclo(s) de CPU enquanto fica verificando (busy-wait), ruim para operações longas ou muitos dispositivos.
Exemplo mental: imaginar ficar olhando a porta serial a cada instante até aparecer um byte — enquanto isso a CPU não faz outras coisas.
Definição curta: o processador verifica repetidamente o status do dispositivo e, quando o dispositivo está pronto, realiza a transferência.
Como funciona (passo a passo): o driver ou programa entra num laço que lê um registrador de status do controlador do dispositivo; se o bit “pronto” estiver falso, volta a checar; se estiver verdadeiro, lê ou escreve os dados no registrador de dados.
Vantagens: implementação simples; bom para dispositivos muito rápidos ou quando espera é muito curta.
Desvantagens: desperdiça ciclo(s) de CPU enquanto fica verificando (busy-wait), ruim para operações longas ou muitos dispositivos.
Exemplo mental: imaginar ficar olhando a porta serial a cada instante até aparecer um byte — enquanto isso a CPU não faz outras coisas.
Passo 4
Técnica 2 — Interrupt-driven I/O (I/O por interrupção):
Definição curta: o dispositivo avisa a CPU (gera uma interrupção) quando precisa de atenção; a CPU interrompe seu trabalho, executa um manipulador (ISR) e depois retorna ao trabalho anterior.
Como funciona (passo a passo): o dispositivo atualiza um registrador de status e, quando pronto, envia um sinal de interrupção ao controlador de interrupções; o controlador sinaliza a CPU; a CPU salva o contexto, salta para o ISR (Interrupt Service Routine) do driver, o ISR realiza a leitura/escrita necessária e limpa a condição de interrupção; em seguida a CPU restaura o contexto e continua.
Vantagens: CPU não fica em busy-wait; boa para eventos assíncronos e dispositivos de velocidade moderada; economiza ciclos quando eventos são esporádicos.
Desvantagens: overhead de troca de contexto a cada interrupção (custo em tempo); se interrupções forem muito frequentes podem sobrecarregar a CPU (thundering interrupts).
Exemplo mental: o teclado gera uma interrupção quando uma tecla é pressionada; somente então o sistema trata o evento.
Definição curta: o dispositivo avisa a CPU (gera uma interrupção) quando precisa de atenção; a CPU interrompe seu trabalho, executa um manipulador (ISR) e depois retorna ao trabalho anterior.
Como funciona (passo a passo): o dispositivo atualiza um registrador de status e, quando pronto, envia um sinal de interrupção ao controlador de interrupções; o controlador sinaliza a CPU; a CPU salva o contexto, salta para o ISR (Interrupt Service Routine) do driver, o ISR realiza a leitura/escrita necessária e limpa a condição de interrupção; em seguida a CPU restaura o contexto e continua.
Vantagens: CPU não fica em busy-wait; boa para eventos assíncronos e dispositivos de velocidade moderada; economiza ciclos quando eventos são esporádicos.
Desvantagens: overhead de troca de contexto a cada interrupção (custo em tempo); se interrupções forem muito frequentes podem sobrecarregar a CPU (thundering interrupts).
Exemplo mental: o teclado gera uma interrupção quando uma tecla é pressionada; somente então o sistema trata o evento.
Passo 5
Técnica 3 — DMA (Direct Memory Access):
Definição curta: um controlador de DMA faz a transferência direta de blocos de dados entre dispositivo e memória sem envolver a CPU para cada palavra transferida.
Como funciona (passo a passo): o software configura o canal DMA (endereço de origem/destino na memória, contagem de bytes, direção) e ativa o controlador DMA; o controlador captura o barramento quando disponível, faz a transferência direto entre dispositivo e memória, decrementando a contagem; quando termina, o controlador DMA pode gerar uma interrupção única para avisar que a transferência em bloco acabou; a CPU continua livre durante a maior parte da transferência.
Vantagens: reduz muito o uso da CPU em transferências grandes (por ex. leitura/escrita de disco, vídeo, rede); aumenta throughput para grandes blocos.
Desvantagens: hardware mais complexo; cuidado com sincronização (cache da CPU, coerência de dados); não é ideal para transferências de poucos bytes.
Exemplo mental: copiar um arquivo grande do disco para a memória: em vez da CPU mover cada byte, o DMA faz isso enquanto a CPU roda outros processos.
Definição curta: um controlador de DMA faz a transferência direta de blocos de dados entre dispositivo e memória sem envolver a CPU para cada palavra transferida.
Como funciona (passo a passo): o software configura o canal DMA (endereço de origem/destino na memória, contagem de bytes, direção) e ativa o controlador DMA; o controlador captura o barramento quando disponível, faz a transferência direto entre dispositivo e memória, decrementando a contagem; quando termina, o controlador DMA pode gerar uma interrupção única para avisar que a transferência em bloco acabou; a CPU continua livre durante a maior parte da transferência.
Vantagens: reduz muito o uso da CPU em transferências grandes (por ex. leitura/escrita de disco, vídeo, rede); aumenta throughput para grandes blocos.
Desvantagens: hardware mais complexo; cuidado com sincronização (cache da CPU, coerência de dados); não é ideal para transferências de poucos bytes.
Exemplo mental: copiar um arquivo grande do disco para a memória: em vez da CPU mover cada byte, o DMA faz isso enquanto a CPU roda outros processos.
Passo 6
Comparação prática e dica de prova (como escolher):
- Use Polling quando o dispositivo é muito rápido e a operação é curtíssima (por exemplo, leitores muito rápidos em loop curto) ou quando a implementação simples é exigida.
- Use Interrupts quando os eventos são assíncronos e de frequência moderada (teclado, mouse, UART em baixa taxa).
- Use DMA quando precisa mover grandes blocos de dados com mínimo envolvimento da CPU (discos, placas de rede, áudio/vídeo).
Na prova, se te perguntarem vantagens/desvantagens, cite CPU load vs overhead (polling = alto uso, baixa complexidade; interrupts = baixo uso, overhead por evento; DMA = mínimo uso, necessita hardware e cuidado com cache).
Resposta
Polling (Programmed I/O): o processador fica verificando continuamente o status do dispositivo e realiza a transferência quando o dispositivo está pronto; simples, mas consome ciclos da CPU.
Interrupt-driven I/O: o dispositivo gera uma interrupção quando está pronto; a CPU executa um manipulador (ISR) para tratar a transferência; economiza CPU frente ao polling, mas tem overhead por troca de contexto.
Direct Memory Access (DMA): um controlador DMA transfere blocos entre dispositivo e memória sem envolver a CPU para cada palavra; ideal para grandes transferências, reduz carga da CPU, requer suporte de hardware e cuidados com coerência de cache.