Da Seção 5.1.4 Acesso direto à memória em sistemas operacionais modernos por Andrew S. Tanenbaum, Herbert Bos, 2014 ,
Para simplificar a explicação, assumimos que a CPU acessa todos os dispositivos e memória através de um único barramento do sistema que conecta a CPU, a memória e os dispositivos de E / S, conforme mostrado na Fig. 5-4.
Para explicar como o DMA funciona, vamos primeiro ver como as leituras de disco ocorrem quando o DMA não é usado.
- Primeiro, o controlador de disco lê o bloco (um ou mais setores) da unidade serialmente, pouco a pouco, até que todo o bloco esteja no buffer interno do controlador.
- Em seguida, calcula a soma de verificação para verificar se nenhum erro de leitura ocorreu. Então o controlador causa uma interrupção. Quando o sistema operacional começa a funcionar, ele pode ler o bloco de disco do buffer do controlador, um byte ou uma palavra de cada vez, executando um loop, com cada iteração lendo um byte ou palavra de um registro do dispositivo do controlador e armazenando-o na memória principal.
Q: na segunda etapa,
os dados não são transferidos " do buffer do controlador " para a memória principal? Por que diz " do buffer do controlador " e " de um registro de dispositivo do controlador "?
na segunda etapa, o controlador pode transferir dados do buffer para a memória principal, sem interromper a CPU e sem envolver novamente o SO?
Quando o DMA é usado, o procedimento é diferente.
- Primeiro, a CPU programa o controlador DMA, configurando seus registradores para saber o que transferir para onde (etapa 1 na Fig. 5-4).
Ele também emite um comando para o controlador de disco, solicitando que ele leia os dados do disco em seu buffer interno e verifique a soma de verificação. - Quando dados válidos estão no buffer do controlador de disco, o DMA pode começar. O controlador DMA inicia a transferência emitindo uma solicitação de leitura pelo barramento para o controlador de disco (etapa 2). Essa solicitação de leitura se parece com qualquer outra solicitação de leitura e o controlador de disco não sabe (ou se importa) se veio da CPU ou de um controlador DMA. Normalmente, o endereço de memória para gravar está nas linhas de endereço do barramento, portanto, quando o controlador de disco busca a próxima palavra do buffer interno, ele sabe onde escrevê-la. A gravação na memória é outro ciclo de barramento padrão (etapa 3).
- Quando a gravação é concluída, o controlador de disco envia um sinal de confirmação para o controlador DMA, também pelo barramento (etapa 4). O controlador DMA então incrementa o endereço de memória a ser usado e diminui a contagem de bytes. Se a contagem de bytes ainda for maior que 0, as etapas 2 a 4 serão repetidas até que a contagem atinja 0.
- Nesse momento, o controlador DMA interrompe a CPU para informar que a transferência está concluída. Quando o sistema operacional é iniciado, ele não precisa copiar o bloco de disco na memória; já está lá.
P: na segunda etapa, o controlador DMA solicita que o controlador de disco transfira dados do buffer do controlador de disco para a memória principal. Na primeira etapa, a CPU emite um comando para o controlador de disco, solicitando a leitura de dados do disco em seu buffer interno. Ao mesmo tempo, a CPU também pode solicitar ao controlador de disco que transfira dados do buffer do controlador de disco para a memória principal, quando o controlador de disco terminar de transferir dados do disco para o buffer do controlador de disco, para que não haja necessidade de Controlador DMA para dizer ao controlador de disco para transferir dados do buffer do controlador de disco para a memória principal? (Não consigo entender por que precisamos de um controlador DMA para transferência de dados entre o disco e a memória principal, portanto, acho que estou perdendo algo importante para entender a citação).
- Primeiro, a CPU programa o controlador DMA, configurando seus registradores para saber o que transferir para onde (etapa 1 na Fig. 5-4).
Um controlador de dispositivo de um dispositivo controla o dispositivo e executa operações no dispositivo. Em que dispositivo um controlador DMA controla e executa operações?
Obrigado!