O que são interrupções é como são tratadas pelo sistema operacional?

Definição - O que significa Interrupt?

Uma interrupção é uma função de um sistema operacional que fornece multitarefas com vários processos. A interrupção é um sinal que solicita que o sistema operacional pare de trabalhar em um processo e comece a trabalhar em outro.

Techopedia explica Interrupt

A idéia da interrupção está no centro do design moderno do sistema operacional. Por sua natureza, um sistema operacional é linear e não pode lidar com mais de uma tarefa de computação a qualquer momento. No entanto, à medida que os sistemas operacionais modernos se tornaram mais avançados, engenheiros e desenvolvedores incluíram a funcionalidade de interrupção para ajudar o sistema operacional a lidar com muitos programas diferentes, ativando e desativando várias tarefas, com o mínimo de inconveniência para o usuário. Isso significa que os sistemas operacionais modernos podem executar muitas tarefas diferentes de maneiras que não atrasam a atividade do usuário. Agora, enquanto um usuário está visualizando ou usando um programa, o sistema operacional pode estar em segundo plano trabalhando em alguma outra tarefa. Quando o usuário gera um evento que requer que o sistema operacional se concentre no programa principal que está sendo usado, uma interrupção pode facilitar uma resposta rápida.

Um módulo de código caracterizado como um manipulador de interrupção usa uma fila disponível para priorizar programas diferentes em momentos diferentes. Em alguns casos, um pedaço de código chamado agendador também é usado. Muitos tipos diferentes de interrupções aprimoram a capacidade de um sistema operacional de fornecer serviços sob demanda aos usuários enquanto lida com mais e mais tarefas de computação adicionais em segundo plano.

As interrupções podem estar relacionadas a eventos do usuário, como abrir janelas ou usar controles do programa. Eles também podem ser baseados em eventos de hardware, como o início e o final de um processo de backup de um disco para outro, ou relacionados a respostas de drivers periféricos. Todos esses tipos diferentes de interrupções ajudam o sistema operacional a funcionar sem problemas e parecem lidar com muitas coisas ao mesmo tempo.

Esta definição foi escrita no contexto de Computação

Engenharia de domínio para o tratador de interrupções do sistema EPOS

1. Descrição do Domínio

A função do tratador de interrupção é saber que dispositivo lançou a interrupção e em quem ponto do sistema operacional está o endereço inicial da rotina para tratar esta interrupção, para que o processador possa executar esta rotina no endereço especificado pelo tratador, e depois deixar que o processador volte ao seu curso normal de execução após a interrupção ter sido resolvida.

Arquiteturas de interrupções mais sofisticadas permitem que o tratamento de uma interrupção prioritária seja processada na frente de uma outra através do esquema de prioridades, onde são assinadas prioridades de execução de acordo com sua importância. Também existem arquiteturas que permitem que as rotinas sejam manipuladas através dos driver's dos dispositivos que controlam suas placas controladoras.

As placas controladoras dos dispositivos possuem uma interface bem definida de operações da qual seu driver possa fazer operações neste dispositivo passando parâmetros ou não. Quando as operações na placa controladora do dispositivo não são simples e exigem um tempo de processamento na placa, o processador pode deixar ela executar as operações e enquanto isso pode fazer outras coisas.

2. Objetivos

Um problema que é freqüentemente observado em sistemas de I/O, é que os tratadores de interrupções sofrem para gerenciar no caso de existirem várias interrupções simultâneas (de um mesmo dispositivo ou não), pois se a taxa de interrupções for muito alta e o tratador não conseguir acompanhar, ou seja, se o tempo do tratamento da interrupção for maior que o tempo médio que uma interrupção é gerada, algumas interrupções poderão ser perdidas.

Também existe o caso em que o tratador de interrupção deixa a aplicação tratar a interrupção apenas repassando o tipo da interrupção para que a aplicação possa executar a rotina tratadora para o tratamento Mas se neste meio tempo for lançada outra interrupção pelo mesmo dispositivo, e o tratador chamar a mesma rotina para esta última, esta última interrupção irá sobrescrever os valores dos registradores que a primeira interrupção calculou e a primeira será perdida.

Este trabalho tenta de alguma forma contornar estes problemas para que não se percam interrupções, que podem ser muito importantes em sistemas tais como de tempo real.

Deveremos analisar e verificar a necessidade de desenvolver o componente para o tratamento de interrupções (sistema EPOS) lançadas pelo hardware de um sistema computacional, afim de estudar novas formas e mais eficientes de executar esta tarefa que é uma das mais importantes em um sistema computacional.

3. Lista de Requisitos

O componente desenvolvido deve atender aos seguintes requisitos:

- Fornecer comunicação e gerenciar os dispositivos de I/O através do barramento;

- Aceitar níveis de prioridades de interrupções de acordo com sua importância;

- Pode ocorrer interrupções que deverão ser tratadas de modo síncrona ou assíncrona dependendo do contexto;

- Ter independência de dispositivos;

- Dar suporte aos novos dispositivos que serão anexados ao sistema;

4. Diagramas

4.1 Diagramas de Famílias

A família de tratadores de interrupções faz parte da abstração de I/O. Esta família ficará encarregada de manipular as interrupções geradas por um dispositivo de hardware.

A seguir está especificado a família do tratador de interrupção com os membros envolvidos no tratador.

O que são interrupções é como são tratadas pelo sistema operacional?

4.2 Diagramas de Componentes

A interação entre aplicações e dispositivos periféricos é gerenciada pela família de abstrações representada na figura abaixo.

O que são interrupções é como são tratadas pelo sistema operacional?

Dispositivos periféricos são abstraídos em uma maneira que é conveniente para as aplicações pelos membros da famíla Device. Contudo, sistemas dedicados freqüentemente usam dispositivos dedicados que não serão encontrados nesta família.

Neste contexto, a família Bus é responsável por detectar e ativar dispositivos conectados ao barramento, do qual são abstraídos como membros criados da família de Device.


E a família que será tema de pesquisa se trata da Interrupt_Handler que trata de abstrações que permitem as aplicações tratar as interrupções geradas por um dispositivo.

4.3 Diagramas de Casos de Uso

O que são interrupções é como são tratadas pelo sistema operacional?

A funcionalidade principal deste componente é a de trata as interrupções que são geradas pelos dispositivos de entrada/saída.

4.4 Diagramas de Classes

O que são interrupções é como são tratadas pelo sistema operacional?

Function_IH: Este membro determina uma função fornecida pela aplicação para tratar a interrupção. O sistema transforma tal função em um tratador de interrupção que é chamada toda vez que a interrupção associada é gerada.


Thread_IH: Esta thread é previamente criada pela aplicação no estado de suspenso e é "acordado" toda vez que ocorre a correspondente interrupção. Depois de tratada a interrupção, a thread deve retornar para o estado suspenso novamente pela chamada de uma respectiva operação.

Se uma interrupção tentar ativar uma thread que já esta ativa, simplesmente não tem nenhum efeito, só que esta última interrupção será perdida.

Este membro tem uma ligação com Thread e esta tem ligação com um escalonador de processos que poderá atender o requisito de escalonar a thread dependendo do seu nível de prioridade e escolher se será de modo preemptivo ou não.

Semaphore_IH: O Semaphore_IH serve para prevenir que interrupções não sejam perdidas para no caso de haver interrupções concorrentes. Tem uma ligação com Semaphore para que possa controlar as interrupções concorrentes que terá a função de sincronizar as requisições de pedidos de interrupções.

Semaphore_IH aponta para um semáforo previamente criado por uma aplicação e inicializado com zero. O sistema operacional chama a operação "V" neste semáforo em todas as interrupções, enquanto a thread tratadora chama a operação "P" para esperar por uma interrupção. Esta estratégia dá ao tratamento de interrupção um sabor de produtor/consumidor e previne que as interrupções comecem a serem perdidas.

Generic_IH: Esta classe serve somente de interface para InterruptTable para que esta possa armazenar diferentes tipos de tratadores.

InterruptTable: Esta classe serve somente para estruturar os dados que ficarão em cada linha do vetor de interrupções que ficará na classe Handler. Estes dados especificam o tipo de interrupção que foi armazenada (Function, Thread ou Semaphore), o id da interrupção (posição do vetor de interrupções) e a classe do tipo que foi instanciada.

Handler: Esta classe que recebe o identificador da interrupção e escolhe dentre as armazenadas no seu vetor de interrupções a que corresponde ao id da interrupção (o id da interrupção corresponde à posição do vetor). Esta também deve gerenciar todo o salvamento do contexto dos registradores do processador e depois de tratada a interrupção o retorno do mesmo contexto salvo para que o aplicativo possa voltar executar suas tarefas.

4.5 Diagramas de Seqüência

O que são interrupções é como são tratadas pelo sistema operacional?

No diagrama de sequência nos da uma noção de como o fluxo de chamadas das funções dos objetos irão ocorrer.

Podemos perceber que antes que o objeto Handler chame a função "TrataInterrupção()" de qualquer um dos tipos de tratadores ele primeiro irá salvar o contexto dos registradores do processador pela função "SalvaContextoProcessador()" e depois retornar o contexto chamando a função "RetornaContextoProcessador()".

obs: O objeto Handler não irá chamar o método "TrataInterrupção()" dos três objetos tratadores e sim um deles por interrupção (dependerá do tipo de interrupção!) .

4.6 Diagramas de Atividades

O que são interrupções é como são tratadas pelo sistema operacional?

Este diagrama nos dá uma visão das atividades que deverão ser feitas para tratar determinada interrupção.

5. Grupo de Trabalho

Carlos Alberto Nakazawa

Márcio Marafon

Márcio Rodrigo de Oliveira

O que é tratamento de interrupção?

A função do tratador de interrupção é saber que dispositivo lançou a interrupção e em quem ponto do sistema operacional está o endereço inicial da rotina para tratar esta interrupção, para que o processador possa executar esta rotina no endereço especificado pelo tratador, e depois deixar que o processador volte ao seu ...

O que é interrupção como ocorre e quais os seus tipos?

Interrupção é um evento que requer a atenção do S. O. Uma interrupção pode se originar de várias maneiras. As mais comuns são: Interrupção externa: um dispositivo necessidade de atenção.

O que são as interrupções e as exceções de um sistema operacional?

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.

Como um sistema operacional gerencia as interrupções?

Em hardware, as interrupções trabalham da seguinte forma: quando um dispositivo de E/S finaliza seu trabalho ele gera uma interrupção, enviando um sinal pela linha do barramento à qual está associado. O sinal é detectado pelo chip controlador de interrupção localizado na placa mãe, o qual decide o que fazer.