Para que tudo esteja funcionando corretamente é necessário que os dispositivos estejam alocando recursos do computador. Estes recursos podem ser portas de entrada e saída, requisições de interrupção (IRQ) e acesso direto a memória (DMA).
As portas de entrada e saída são endereços de memória reservados no microprocessador para os dispositivos realizarem entrada e saída de informações. Estes endereços de memória são utilizados para troca de dados entre o processador e os dispositivos de forma simplificada. Os dispositivos podem usar mais de uma porta de entrada/saída ou uma faixa de endereços. Por exemplo, uma placa de som padrão usa as portas 0x220, 0x330 e 0x388. Cada dispositivo possui um endereço de porta único, que não pode ser compatilhado entre outros dispositivos.
O Acesso Direto a Memória (DMA) é usado para permitir a transferência de dados entre dispositivos e a memória sem a intervenção do processador. Este acesso é feito através de canais (channels). A maioria dos computadores tem dois controladores de DMA. O primeiro controla os canais 0,1,2,3 e o segundo, os canais 4,5,6,7, totalizando 8 canais.
As Requisições de Interrupção (IRQ) são chamadas que os dispositivos podem fazer para requerer atenção especial do processador. A maioria dos computadores oferece apenas 16 interruoções de hardware. Pode parecer pouco para as modernas configurações com os mais diferentes dispositivos. Felizmente os IRQs podem ser compartilhados.
Em grandes sistemas multiusuário, uma constante rajada de interrupções é direcionada ao processador. Respostas rápidas a essas interrupções são essenciais para manter os recursos do sistemas bem utilizados, e para prover tempos de resposta aceitáveis pelos usuários.
É importante saber que estes recursos são limitados e precisam ser gerenciados para que conflitos entre os dispositivos sejam evitados.
As interrupções podem ser geradas pelos seguintes eventos:
- Geradas pelo programa aplicação que são implementas com o uso de instruções especiais;
- Por erro, como na divisão por zero, referência à memória fora do espaço permitido, etc;
- Por tempo, como nos escalonamento;
- Falha de hardware;
- Por eventos de entrada e saída de dados sinalizando o final de operação ou condição de erro.
Figura: Tratamento de Interrupções
Um núcleo simples desabilita o tratamento de interrupções enquanto ele responde a uma interrupção. Elas são novamente habilitadas após o processamento estar completo.
Se houver um fluxo permanente de interrupções, como nos sistemas multiusuário, este esquema pode ocasionar interrupções desabilitadas por um grande tempo e em respostas insatisfatórias. Para evitar isso, o Kernel precisa estar atendo ao tempo máximo de processamento permitido para cada interrupção. Se essa fatia de tempo estourar, ele passa o restante do processamento da interrupção para um outro processo apropriado do sistema que irá terminar de tratá-las, enquanto o núcleo continua apto a receber novas interrupções. Isto significa que elas podem ficar habilitadas durante muito tempo, e o sistema torna-se mais eficiente em reponder a requisições das aplicações dos usuários.
Nenhum comentário:
Postar um comentário