Qual a importância do emprego de interrupção em operações de e S?

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.

Qual a importância do emprego de interrupção em operações de e S?

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.

Qual a importância do emprego de interrupção em operações de e S?

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

Qual a importância do emprego de interrupção em operações de e S?

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

Qual a importância do emprego de interrupção em operações de e S?

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

Qual a importância do emprego de interrupção em operações de e S?

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

Qual a importância do emprego de interrupção em operações de e S?

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

Qual o principal objetivo em utilizar interrupções para e S?

E/S orientada à interrupçãoEditar As principais funções do controlador de interrupções são: identificar a fonte da interrupção; priorizar uma interrupção em relação a outra; selecionar quais interrupções serão atendidas.

Para que servem as interrupções nos sistemas operacionais?

A interrupção avisa ao processador quando o evento ocorreu, permitindo dessa forma uma acomodação eficiente para dispositivos mais lentos. Interrupções permitem aos processadores modernos responder a eventos gerados por dispositivos enquanto outro trabalho está sendo realizado.

O que são interrupções por que o mecanismo de interrupção é fundamental para a implementação da multiprogramação?

Porque é em função desse mecanismo que o sistema operacional sincroniza a execução de todas as suas rotinas e dos programas dos usuários, além de controlar dispositivos.

Qual a importância dos dispositivos de e S para o SO?

Uma das funções principais de um sistema operacional é controlar todos os dispositivos de e/s de um computador, tratar erros, interceptar interrupções, fornecer uma interface entre o dispositivo e o sistema, emitir comandos para os dispositivos.