Tratamento de interrupções e escaçonamento
936 palavras
4 páginas
Tratamento de Interrupções e EscalonamentoO que são interrupções? Uma interrupção é um evento que faz o processador parar a execução de um programa e desvia a execução para um bloco de código, chamado rotina de interrupção.
Ao terminar o tratamento e interrupção, o controle retorna ao programa interrompido exatamente no mesmo estado em que estava quando ocorreu a interrupção.
[pic]
Execução das Interrupções A execução das interrupções necessita de ações de hardware e ações de software. Essas, que, podem ser descritas conforme o fluxograma abaixo:
[pic]
Tratamento de Interrupções As rotinas para tratamento de interrupções devem ser escondidas a fim de que apenas uma pequena parte do sistema operacional necessite saber de sua existência.
Para conseguir esconder essas rotinas, uma maneira simples é:
- Considerar um driver de dispositivo;
- Bloqueá-lo quando o comando de I/O for iniciado;
- Quando da interrupção, o tratamento é do desbloqueio do driver, usando semáforos, monitores ou mensagens.
Tratamento de Interrupções no Unix Para o tratamento de interrupções no Unix, é necessário:
- Salvar o contexto do processo em execução na tabela de processos (PCB);
- Habilitar a interrupção;
- Enviar uma mensagem ao driver;
- Chamar o escalonador, que escolhe o driver por causa de sua alta prioridade.
Prioridades Devido ao número de dispositivos, quando do uso de interrupções, há a necessidade de associar a cada dispositivo uma prioridade diferente.
Uma interrupção prioritária, ocorrendo ao mesmo tempo de outra menos prioritária, ou durante o tratamento de uma interrupção menos prioritária, será tratada preferencialmente.
O processador tem um registrador com o valor da prioridade da interrupção sendo tratada, o PSR – Processor Status Register.
Já as interrupções com menor prioridade, que ocorram durante o tratamento de uma outra interrupção, permanecem pendentes.
Caso houver necessidade, pode-se empilhar