Sistemas Operacionais
Trabalho Escolar: Sistemas Operacionais. Pesquise 862.000+ trabalhos acadêmicosPor: Nhathy • 2/5/2014 • 3.831 Palavras (16 Páginas) • 419 Visualizações
EXPERIÊNCIA 5:
INTERRUPÇÕES
Autores: Prof. Dr. Jorge Kinoshita, Prof. Dr. Carlos Eduardo Cugnasca e Prof. Dr. André Riyuiti Hirakawa
Adaptado por Eduardo Harada, Roberto Caldas e Rogério Kakehashi
rev. 2004
1. Objetivo
Esta experiência visa a familiarização com os mecanismos de interrupção suportados pelo microprocessador MC68010, utilizado na Placa Experimental.
2. Introdução
O que são interrupções?
Uma interrupção é um evento externo que causa o processador parar a execução do programa corrente e desviar a execução para um bloco de código chamado rotina de interrupção (normalmente são decorrentes de operações de E/S).
Ao terminar o tratamento de interrupção o controle retorna ao programa interrompido exatamente no mesmo estado em que estava quando ocorreu a interrupção.
Figura 1
Porém, para garantir o correto funcionamento deste mecanismo de transferência de dados, é preciso ter um sistema com uma organização de E/S semelhante à da figura a seguir:
Figura 2
3. Execução das interrupções
A execução de interrupções necessita tanto de ações de hardware como de software, as quais, podem ser sumarizadas pelo seguinte fluxograma:
Porém, para uma explicação um pouco mais didática, vamos nos atentar para as seguintes figuras:
Execução de interrupção
Figura 3
Retorno ao programa principal
Figura 4
4. Fontes de interrupção
Periféricos no-chip
A maioria dos processadores possui uma grande variedade de periféricos no próprio chip, tais como:
• Timers, portas paralelas, porta seriais;
• Interrupções ocorrem quando certas condições previamente estabelecidas foram atingidas.
Linhas de interrupção externas
A maioria dos processadores possui uma ou mais linhas de interrupção externas que podem ser ativadas por um circuito externo.
Interrupções por software
Também chamadas exceções ou traps, estas interrupções são geradas devido a um controle de software ou devido a uma operação iniciada por software.
• Exemplos:
Divisão por zero, overflow, underflow, ....
Falha de hardware
Gerada por uma falha tal como falha de alimentação ou erro de paridade em memória.
5. Características básicas das Interrupções
Como foi apresentado, as interrupções possibilitam um tratamento mais eficiente das operações de entrada e saída, e permitem melhor atender aos requisitos de aplicações em tempo real.
A requisição de interrupção pode ocorrer a qualquer momento (assincronamente), sendo ela indicada pela ativação de um "flag" pelo dispositivo periférico. O microprocessador reconhece a interrupção, enviando sinais de controle, completa a execução da instrução corrente, salva o conteúdo dos registradores de interesse (contador de programa, status, etc), e atende ao dispositivo periférico que solicitou a interrupção, transferindo o controle para a rotina de tratamento da interrupção. Ao término da execução desta rotina, o microprocessador desativa o "flag" de indicação de interrupção, restaura os registradores que foram salvos, e transfere o controle para a instrução seguinte ao ponto de interrupção do programa.
Algumas aplicações de tempo real envolvem módulos de programas críticos que não podem ser interrompidos durante sua execução. Algumas interrupções podem ter seu tratamento postergado, enquanto que outras necessitam de tratamento imediato (por exemplo, coleta de dados e alarmes). Em função disso, a maioria dos microprocessadores apresentam interrupções mascaráveis e interrupções não-mascaráveis. Através de instruções apropriadas o programa pode habilitar ou desabilitar uma interrupção mascarável, enquanto que a não-mascarável deverá ser sempre atendida, devendo ser reservada, assim, apenas para eventos de alta importância.
As interrupções dos microprocessadores costumam ser dos seguintes tipos: vetoradas ou não-vetoradas.
Interrupção Vetorada
Virtualmente cada processador reserva uma área de memória especifica para tratar cada uma das interrupções. Estas localizações são chamadas vetores de interrupção.
Este tipo exige a identificação do dispositivo periférico que solicita interrupção. Essa identificação é utilizada para a localização do endereço da subrotina de tratamento da interrupção, em uma tabela localizada em uma região determinada da memória do microprocessador (vetor de interrupções). Exemplo: interrupções da família 68000.
Figura 5
Interrupção não vetorada
Sem vetor de interrupção, o programa deve verificar cada possível fonte de interrupção para ver quem causou a interrupção, aumentando assim o tempo de resposta.
Em geral uma causa da interrupção é gerada e colocado em um registrador causa. Como resultado, o Sistema operacional (ou Kernel) pode imediatamente determinar a identidade do dispositivo que o interrompeu.
6. Interrupções simultâneas
Em sistemas com mais de uma interrupção, existe a possibilidade de ocorrerem pedidos de interrupção simultâneos, devendo existir algum critério para a escolha de qual será atendida em primeiro
...