Qual é a diferença entre os dois métodos de transferência de dados dma e pio?

E / S controlada por programa significa que o programa está pesquisando ou verificando algum item de hardware, por exemplo, mouse dentro de um loop. Para E / S controlada por interrupção, o mesmo mouse disparará um sinal para o programa para processar o evento do mouse.

Vantagem do Programmed Driven: fácil de programar e entender Desvantagens: lento e ineficiente

Vantagem de interrupção: rápida e eficiente Desvantagem: Pode ser complicado escrever se você estiver usando um idioma de baixo nível. Pode ser difícil conseguir que as várias peças funcionem bem juntas. Geralmente feito pelo fabricante do hardware ou pelo fabricante do sistema operacional, por exemplo, Microsoft.

Mais sobre este tópico e uma explicação melhor:

Pergunta de E / S

E / S programada * Usada apenas em alguns microcomputadores de gama baixa. * Possui instruções de entrada e saída únicas. * Cada instrução seleciona um dispositivo de E / S (por número) e transfere um único caractere (byte) * Quatro registros: status e caractere de entrada, status e caractere de saída.

E / S controlada por interrupção * A principal desvantagem da E / S programada é que a CPU passa a maior parte do tempo em um loop apertado, aguardando o dispositivo ficar pronto. Isso é chamado de espera ocupada. * Com E / S acionada por interrupção, a CPU inicia o dispositivo e diz para gerar uma interrupção quando terminar. * Feito configurando o bit de ativação de interrupção no registro de status. * Ainda requer uma interrupção para cada caractere lido ou escrito. * Interromper um processo em execução é um negócio caro (requer salvar o contexto). * Requer hardware extra (chip controlador DMA).

Em um nível básico, a E / S programada é um método de transferência de dados entre o processador e outros dispositivos periféricos conectados, onde as instruções em execução na CPU realizam uma operação de transferência de dados de e / ou para um dispositivo de E / S. Nesse caso, o processador emite um comando e aguarda a execução. Em seguida, aguarda o dispositivo de E / S para concluir a solicitação e responder. O processador precisa verificar regularmente o status do dispositivo de E / S (isso é chamado de Polling). O importante a considerar aqui é que o processador é muito mais rápido que o módulo de E / S e, portanto, precisa esperar muito tempo para responder.

No caso de E / S acionada por interrupção, o processador após solicitar o módulo de E / S continua com seu trabalho normal. Após o dispositivo de E / S concluir a solicitação, ele notifica o processador usando uma interrupção. Isso evita que o processador verifique repetidamente se o dispositivo de E / S concluiu a solicitação. Mas, ainda assim, essa técnica não é muito eficaz, especialmente quando os dados precisam ser transferidos em grande quantidade. Nesse caso, o processador precisa transferir dados palavra por palavra entre o módulo de E / S e a memória. Isso nos leva a outra abordagem chamada Direct Memory Access (DMA).

No DMA, os dados são transferidos diretamente entre o módulo de E / S e a memória. O processador envia uma solicitação referente à transferência de dados para o módulo DMA e é interrompido somente após a transferência de todo o bloco.

E / S programada

A E / S programada é a técnica de E / S mais simples para a troca de dados entre o processador e outro dispositivo externo.

No processador de E / S programada, executa um programa que fornece o controle direto da operação de E / S. O processador emite um comando para o módulo de E / S e aguarde até a operação ser concluída. O processador verificará periodicamente o status do módulo de E / S até descobrir que a operação está concluída. Se o processador for mais rápido que o módulo de E / S, o tempo do processador será desperdiçado.

Este módulo é tratado como módulo lento.

E / S acionada por interrupção

A E / S de interrupção é algo semelhante à técnica de E / S programada.

Nesta técnica, o processador não espera até que a operação de E / S seja concluída. Em vez disso, o processador normalmente executa a outra tarefa. Quando a E / S é concluída, o módulo de E / S é interrompido no processador. Interromper significa que a operação está concluída.

O módulo é mais rápido que o módulo de E / S programado.