Descreva os passos que são executados quando um programa trata uma interrupção ou exceção.

Exceções e interrupções são eventos inesperados que interromperão o fluxo normal de execução da instrução (que está sendo executada atualmente pelo processador). Uma exceção é um evento inesperado de dentro do processador. A interrupção é um evento inesperado de fora do processo.

Sempre que ocorre uma exceção ou interrupção, o hardware começa a executar o código que executa uma ação em resposta à exceção. Essa ação pode envolver encerrar um processo, emitir uma mensagem de erro, comunicar-se com um dispositivo externo ou travar terrivelmente todo o sistema do computador ao iniciar uma “Tela Azul da Morte” e interromper a CPU. As instruções responsáveis ​​por essa ação residem no kernel do sistema operacional e o código que executa essa ação é chamado de código do manipulador de interrupção. Agora, podemos pensar no código do manipulador como uma sub-rotina do sistema operacional. Então, depois que o código do manipulador é executado, pode ser possível continuar a execução após a instrução onde a execução ou interrupção ocorreu.

Tratamento de exceções e interrupções:
sempre que ocorre uma exceção ou interrupção, a execução faz a transição do modo de usuário para o modo kernel, onde a exceção ou interrupção é tratada. Em detalhes, as etapas a seguir devem ser executadas para tratar uma exceção ou interrupções.

Ao entrar no kernel, o contexto (valores de todos os registros da CPU) do processo atualmente em execução deve primeiro ser salvo na memória. O kernel agora está pronto para lidar com a exceção / interrupção.

  1. Determine a causa da exceção / interrupção.
  2. Trate a exceção / interrupção.

Quando a exceção / interrupção for tratada, o kernel executa as seguintes etapas:

  1. Selecione um processo para restaurar e retomar.
  2. Restaure o contexto do processo selecionado.
  3. Retomar a execução do processo selecionado.

A qualquer momento, os valores de todos os registros na CPU definem o contexto da CPU. Outro nome usado para o contexto da CPU é estado da CPU.

O manipulador de exceção / interrupção usa a mesma CPU do processo atualmente em execução. Ao entrar no manipulador de exceção / interrupção, os valores em todos os registros da CPU a serem usados ​​pelo manipulador de exceção / interrupção devem ser salvos na memória. Os valores de registro salvos podem ser restaurados posteriormente antes de retomar a execução do processo.

O manipulador pode ter sido chamado por vários motivos. O manipulador, portanto, precisa determinar a causa da exceção ou interrupção. As informações sobre o que causou a exceção ou interrupção podem ser armazenadas em registros dedicados ou em endereços predefinidos na memória.

Em seguida, a exceção ou interrupção precisa ser atendida. Por exemplo, se foi uma interrupção do teclado, o código da tecla pressionada é obtido e armazenado em algum lugar ou alguma outra ação apropriada é executada. Se for uma exceção de estouro aritmético, uma mensagem de erro pode ser impressa ou o programa pode ser encerrado.

A exceção / interrupção agora foi tratada e o kernel. O kernel pode escolher retomar o mesmo processo que estava executando antes de tratar a exceção / interrupção ou retomar a execução de qualquer outro processo atualmente na memória.

O contexto da CPU agora pode ser restaurado para o processo escolhido lendo e restaurando todos os valores de registro da memória.

O processo selecionado para retomada deve ser retomado no mesmo ponto em que foi interrompido. O endereço desta instrução foi salvo pela máquina no momento da interrupção, bastando apenas obter este endereço e fazer com que a CPU continue a executar neste endereço.

Grátis

3 pág.

Descreva os passos que são executados quando um programa trata uma interrupção ou exceção.

  • Descreva os passos que são executados quando um programa trata uma interrupção ou exceção.
    Denunciar


Pré-visualização | Página 1 de 1

Capitulo 4 - Interrupções e Exceções 
	Quando executamos um procedimento ou programa, podem ocorrer algumas situações que necessite interrompe-lo para que um determinado evento solicitado pelo próprio programa que está em execução ou por uma chamada de um dispositivo de hardware do sistema ocorra, neste momento o sistema operacional necessita realizar uma intervenção, que é denominada de interrupções ou exceções, quando isto ocorre o fluxo de execução do programa é desviado para uma rotina especial de tratamento. O que vem a diferenciar uma interrupção de uma exceção é o tipo de evento que gera esta condição. 
Interrupção 
	A interrupção é fundamental para os sistemas multiprogramáveis, pois ele é o responsável por viabilizar a sincronização das rotinas e controlar os dispositivos e periféricos do sistema. Uma interrupção é gerada pelo sistema operacional ou por algum dispositivo e, neste caso, independe do programa que está sendo executado naquele momento. Este procedimento para ser realizado necessita que alguns passos sejam seguidos, iremos agora descrever com isto ocorre. A unidade de controle detecta a ocorrência de algum tipo de interrupção, o programa ou procedimento em execução é interrompido, o controle é desviado para uma rotina responsável pelo tratamento da interrupção, após a rotina ser solicitada ser realizada, o controle deve retornar ao programa ou procedimento que foi interrompido posteriormente. Para que este ação possa ser concretizada temos que no exato momento da interrupção que as informações sobre o programa ou procedimento que esta sendo executado sejam preservadas para posteriormente sejam recuperadas, para que o fluxo siga normalmente. Vamos agora descrever alguns mecanismos utilizados para nos auxiliar a gerenciar estas interrupções. 
	O vetor de interrupção fica responsável por armazenar a relação de todas as rotinas de tratamentos de interrupções existentes com suas respectivas associações para informar ao processador que necessita desta informação. 
	O controlador de pedidos de interrupção é um recurso do hardware dos sistemas computacionais, responsável por avaliar as interrupções geradas e suas respectivas prioridades de atendimento, para informar o processador, quando ocorrem múltiplas interrupções.
	As interrupções podem ser classificadas como mascaráveis que são interrupções que podem ser desabilitadas pelo processador, quando isto ocorre estas interrupções não receberão tratamento. As não mascaráveis onde não é possível de ocorrer, e consequentemente o tratamento é obrigatório.
Exceções 
	
	Os sistemas operacionais inicialmente somente utilizavam o recurso de interrupções durante as execuções das aplicações, posteriormente com a evolução dos sistemas, as próprias aplicações puderam realizar suas próprias interrupções, que foram denominadas de exceções.
	As exceções são os resultados direto da execução de uma instrução do próprio aplicativo que estiver sendo executado naquele momento. As formas como as exceções ocorrem durante as aplicações são muitos semelhantes aos das interrupções, mas, com a possibilidade das exceções serem desenvolvidas pelo próprio programador. Nos sistemas mais antigos não existia a possibilidade do programador desenvolver rotinas de tratamento, devido a este motivo, com a ocorrência de tais eventos, o sistema necessitaria da intervenção de um operador para solucionar o problema ou poderia até parar sua execução.
	A diferença básica entre interrupção e exceção, está que a primeira é gerada por eventos assíncronos e a segunda é gerada por um evento síncrono. Agora vamos entender um pouco mais sobre o que são eventos assíncronos e um evento síncrono:
	- Assíncronos 
		Um evento é dito como assíncrono quando ocorre independente da execução do programa corrente. Esses eventos, por serem imprevisíveis, podem ocorrer múltiplas vezes simultaneamente, como no caso de diversos dispositivos de entrada e saída informarem ao processador que estão prontos para receber ou transmitir dados.
	- Síncronos 
		Um evento é dito como síncrono quando é resultado direto da execução do programa corrente. Tais eventos são previsíveis e, por definição, só podem ocorrer um de cada vez. Se um programa que causa esse tipo de evento for reexecutado, com mesma entrada de dados, a exceção ocorrerá sempre na mesma instrução. 
Exercícios 
1 – O que são interrupções?
R:______________________________________________________________________________________________________________________________________________________________ 
2 – O que são exceções?
R:______________________________________________________________________________________________________________________________________________________________ 
3 – Quais é a diferença entre exceção e interrupção?
R:______________________________________________________________________________________________________________________________________________________________
4 – (ENADE) Processadores atuais incluem mecanismos para o tratamento de situações especiais, conhecidas como interrupções. Em uma interrupção, o fluxo normal de instruções é interrompido para que a causa da interrupção seja tratada. Com relação a esse assunto, assinale a opção correta.
Controladores de entrada e saída geram interrupções de forma síncrona à execução do processador, para que nenhuma instrução fique incompleta devido à ocorrência da interrupção.
Quando uma interrupção ocorre, o próprio processador salva todo o seu contexto atual, tais como registradores de dados e endereço e códigos de condição, para que esse mesmo contexto possa ser restaurado pela rotina de atendimento da interrupção.
O processador pode auto-interromper-se para tratar exceções de execução, tais como um erro em uma operação aritmética, uma tentativa de execução de instrução ilegal ou uma falha de página em memória virtual.
D Rotinas de tratamento de interrupção devem ser executada com o mecanismo de interrupção inibido, pois esse tipo de rotina não permite aninhamento.
E O uso de interrupção para realizar entrada ou saída de dados somente é eficiente quando o periférico trata grandes quantidades de dados, como é o caso de discos magnéticos e discos ópticos. Para periféricos com pouco volume de dados, como teclados e mouses, o uso de interrupção é ineficiente.

Como se dá o processamento de uma interrupção?

Quando ocorre uma interrupção, a CPU interrompe o processamento do programa em execução e executa um pedaço de código (tipicamente parte do sistema operacional) chamado de tratador de interrupção. Em muitos casos, após a execução do tratador, a CPU volta a executar o programa interrompido.

O que é interrupção é exceção?

Exceções e interrupções são eventos inesperados que interromperão o fluxo normal de execução da instrução (que está sendo executada atualmente pelo processador). Uma exceção é um evento inesperado de dentro do processador. A interrupção é um evento inesperado de fora do processo.

Qual a principal diferença entre as exceções e as interrupções?

As exceções são parecidas com as interrupções, a principal diferença é o motivo pelo qual o evento é gerado. A exceção é o resultado direto de uma instrução dentro do próprio programa, como a divisão por zero ou a ocorrência de um erro de estouro de memória em uma operação aritmética ( overflow ).

Em que consiste uma interrupção?

Em Ciência da Computação e Engenharia de Computação, uma interrupção é um sinal de um dispositivo que tipicamente resulta em uma troca de contextos, isto é, o processador para de fazer o que está fazendo para atender o dispositivo que pediu a interrupção.