Tratamento de interrupções e escaçonamento

936 palavras 4 páginas
Tratamento de Interrupções e Escalonamento

O 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

Relacionados