Os tipos de interrupção podem ser

Introdução

O mecanismo de concorrência é o princípio básico para o projeto e a implementação dos sistemas multiprogramados. A possibilidade de o processador executar várias tarefas ao mesmo tempo permite que vários programas sejam executados concorrentemente pelo sistema operacional.

Sistemas mono programados versus multi programados

Os sistemas mono programados eram capazes de executar um único programa de cada vez e por isso nestes sistemas operacionais os recursos como processador, memória e dispositivos de entrada e saída, eram usados de forma pouco eficiente, limitando o desempenho destas arquiteturas. Isto porque muitos destes recursos permaneciam ociosos por longos períodos de tempo. 

Por exemplo, enquanto uma leitura em disco é realizada, o processador permanece ocioso. O tempo de espera é longo uma vez que uma operação de entrada e saída é mais lenta do que um calculo realizado pelo processador.

Um outro exemplo, é o desperdício de memória principal uma vez que somente um programa que não ocupe toda a memória, Neste caso existirão vários blocos de memória ociosos durante toda a execução do programa.

Em sistemas multi programados isso não ocorre pois vários programas podem ser executados pelo processador e compartilham a memória principal.

A Concorrência no uso da UCP

A utilização concorrente da UCP deve ser implementada de maneira que, quando um programa perde o uso do processador e depois retorna para continuar o processamento seu estado deve ser idêntico ao do momento em que foi interrompido. O programa deverá continuar sua execução exatamente na instrução seguinte àquela em que havia sido interrompido. Para o usuário este processo é transparente, ficando ao usuário a percepção de que o computador está totalmente dedicado ao usuário e a mais nenhum outro processo.

Pois é exatamente este mecanismo de concorrência que permite o compartilhamento de recursos pelos vários programas sendo executados pelo processador.

As vantagens dos sistemas multi programados

As vantagens de um sistema operacional multi programado fica evidente quando temos um cenário com 3 programas sendo executados em um computador com um disco, uma impressora e um terminal. 

Neste computador, caso os programas sejam executados em um sistema operacional mono programado ocorrerá que os programas serão executados de forma sequencial. Sendo que o programa 1 em 5 minutos, enquanto o programa 2 e o programa 3 aguardam. 

Quando o programa 1 termina sua execução o programa 2 é iniciado e leva 20 minutos sendo executado enquanto o programa 3 aguarda sua vez. Finalmente o programa 3 inicia sua execução apos aguardar 25 minutos e completa seu processamento em dez minutos, totalizando 35 minutos de processamento dos 3 programas. O tempo total de execução dos programas é grande devido ao sequenciamento da execução dos programas. Em um sistema multiprogramado o ganho de execução é grande pois os 3 programas são executados de forma concorrente, com o uso do processador, memória e discos sendo compartilhados pelos 3 programas.

Interrupções e Exceções

Durante a execução de um programa podem ocorrer alguns eventos inesperados, provocando um desvio forçado do fluxo de execução. Estes eventos inesperados são conhecidos por interrupção ou exceção e podem ser consequência de um sinal de um dispositivo de hardware ou da execução de instruções dentro do próprio programa.

Interrupção

A interrupção é o mecanismo que torna possível a implementação da concorrência nos computadores, sendo o fundamento básico dos sistemas multi programados. É 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 os dispositivos.

Uma interrupção é sempre gerada por algum evento externo ao programa, e, nesse caso, independe da instrução que está sendo executada. Um exemplo de interrupção ocorre quando um dispositivo de entrada e saída sinaliza ao processador que uma operação de entrada saída está completa. Neste caso, o processador deve interromper o programa que está sendo executado para tratar o termino da operação de entrada saída.

Identificando e tratando interrupções

Ao final da execução de cada instrução, a unidade de controle verifica a ocorrência de algum tipo de interrupção. Nesse caso, o programa em execução é interrompido e o controle desviado para uma rotina responsável por tratar o evento ocorrido, chamada rotina de tratamento de interrupção. Como existem vários tipos de interrupção, podem haver diferentes rotinas de tratamento de interrupção.

Para que o programa interrompido possa retomar sua execução exatamente do ponto onde foi interrompido, é necessário que, no momento da interrupção, sejam guardadas informações a respeito da execução do programa. Estas informações são basicamente o conteúdo dos registradores que deverão ter seus valores restaurados quando a execução do programa interrompido for reiniciada.

A figura abaixo mostra o esquema de interrupção:

Os tipos de interrupção podem ser

O mecanismo de interrupção envolve, em seus passos, tanto o hardware quanto o software:

 Via hardware    
  1.  Um sinal de interrupção é gerado para o processador;
  2. Apos o termino da execução da instrução corrente, o processador identifica o pedido de interrupção;
  3. O conteúdo dos registradores PC e seus status são salvos
  4. O processador identifica qual rotina de tratamento de exceção deve ser executada

 Via software    
  1.  A rotina de tratamento salva o conteúdo dos demais registradores do processador na pilha de controle do programa
  2. A rotina de tratamento é executada
  3. Após o término da execução da rotina de tratamento, os registradores e uso geral são restaurados, alem do registrador de status, retomando a execução do programa interrompido

Para cada tipo de interrupção existe uma rotina de tratamento associada, para a qual o fluxo de execução deve ser desviado. No momento em que a interrupção é gerada, o processador deve determinar para qual rotina de tratamento de interrupção deve ser desviado o fluxo.

Métodos para tratamento de interrupções

Existem dois métodos para o tratamento de interrupções:

O primeiro método chamado vetor de interrupções possui um vetor com o endereço inicial de cada rotina de tratamento de interrupção. 

O segundo método utiliza um registrador de status que identifica o tipo de interrupção gerada. Neste método existe uma única rotina de tratamento de interrupção que examina o registrador de status a fim de dar o tratamento adequado a interrupção gerada.

Interrupções geradas durante o tratamento de interrupções

As interrupções são geradas por eventos assíncronos, que são externos à instrução do programa corrente. Estes eventos não podem ser previstos e podem ocorrer inúmeras vezes, inclusive podendo ocorrer durante a execução de uma rotina de tratamento de interrupção.

Neste caso, alguns processadores simplesmente ignoram a ocorrência de interrupção quando uma rotina de tratamento de interrupção estiver sendo executada.

Outros processadores não permitem que as interrupções sejam desabilitadas fazendo com que exista sempre um tratamento para cada interrupção. Para isso o processador necessita saber qual a ordem de atendimento que deverá sequir para atender as interrupções. Para isso as interrupções precisam possuir prioridade, de acordo com a importância de cada interrupção.

As Exceçõ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 ).

As exceções são portanto geradas por eventos síncronos dentro do próprio programa e portanto tais eventos são previsíveis e podem ser tratados pelo programador que pode incluir tratamento de exceção no programa para que o mesmo não seja interrompido. 

O tratamento de exceção é similar ao tratamento de interrupções. Para cada exceção gerada durante a execução de um programa a ação é interromper a execução do programa e invocar uma rotina para o tratamento da exceção. Existe uma rotina de tratamento de exceção, para a qual o fluxo de execução é desviado quando a exceção é lançada durante a execução do programa e o programa é interrompido.

Operações de entrada e saída

Nos primeiros sistemas computacionais, a comunicação entre o processador e os dispositivos de entrada saída era controlada por um conjunto de instruções especiais denominadas instruções de entrada saída que eram executadas pelo próprio processador. Estas instruções continham informações detalhadas de cada periférico com o qual o processador precisava se comunicar. Esta abordagem trazia uma forte dependência entre o processador e os dispositivos de entrada saída.

O surgimento do controlador, ou interface, permitiu ao processador agir de forma independente dos dispositivos de entrada e saída. O processador não se comunicava mais diretamente com os periféricos. Cabia agora ao controlador gerenciar a comunicação com os dispositivos de entrada saída. Desta forma as instruções de entrada saída ficaram mais simples pois agora não precisavam ter detalhes de cada periférico.

O controlador usava duas maneiras para gerenciar a comunicação entre o processador e os dispositivos de entrada saída:

  • Entrada saída controlada por programa - Onde o sistema ficava testando permanentemente o estado do periférico para saber quando a operação de entrada saída chegava ao seu final. Este modo de gerencia mantinha o processador ocupado até que a operação de entrada saída chegasse ao final.

A evolução deste modelo foi permitir que apos o inicio da operação de entrada saída o processador ficasse livre para outras tarefas e em intervalos de tempo o sistema operacional deveria testar o estado do periférico para saber se a operação de entrada saída tinha terminado. Em sistemas com muitos periféricos, o processamento é interrompido toda hora para testar o estado dos diversos periféricos.

  • Entrada saída controlada por interrupção - Com o mecanismo de interrupção ficou mais fácil pois agora o controlador interrompe o processador para sinalizar o termino de uma operação de entrada saída. Neste modo o processador fica livre para executar outras tarefas. Cabe ao controlador sinalizar, através de uma interrupção, ao processador que a operação de entrada saída foi concluída.  O tratamento da interrupção é feito conforme já explicado acima.

    O modo de entrada saída controlada por interrupção é muito mais eficiente pois libera o processador para outras tarefas, principalmente, para executar instruções que é a função principal do processador, ao invés de controlar a comunicação com os dispositivos de entrada saída, ficando esta função para o sistema operacional.

Buffering 

A técnica de buffering consiste no uso de uma área da memória principal denominada buffer que serve para transferência de dados entre os dispositivos de entrada saída e a memória. Esta técnica permite que uma operação de leitura seja transmitida primeiramente para o buffer, liberando imediatamente o dispositivo de entrada para efetuar uma nova leitura.  Neste caso, enquanto o processador manipula o dado localizado no buffer, o dispositivo realiza outra operação de leitura no mesmo instante. Este mesmo mecanismo é usado em operações de escrita de dados.

O buffering foi criado para minimizar o problema de velocidade entre o processador e os dispositivos de entrada saida. O objetivo é manter, na maior parte do tempo, o processador e os dispositivos de entrada saída ocupados.

A unidade de transferência usada no mecanismo de buffering é o registro. O tamanho do registro pode ser especificado de acordo com o dispositivo. Uma linha para uma impressora, um registro para um sistema que processa arquivos ou um carácter para um teclado.

A ideia é que o buffer possa armazenar vários registros ainda que nem todos estejam sendo processados pelo processador. Assim o dispositivo de entrada lê vários registros e os coloca no buffer antes que o processador manipule todos os registros. A ideia é tentar compatibilizar a diferença entre o tempo em que o processador executa as instruções e o tempo em que o dispositivo de entrada saída realiza as operações de leitura e gravação.

Spooling 

A técnica de spooling foi pensada para aumentar o grau de concorrência  e a eficiência dos sistemas operacionais. Esta técnica utiliza uma área em disco como um grande buffer. Neste caso, os dados são lidos ou gravados em disco enquanto programas são executados concorrentemente.

Esta técnica está presente atualmente nos sistemas operacionais e é usada para gerenciar a fila de impressão. No momento em que um arquivo é impresso o mesmo é gravado em disco, em um arquivo de spool,  e o programa que solicitou a impressão fica livre para outras atividades podendo ser continuar sua execução sem ter que aguardar o término da impressão do arquivo, a conclusão da operação de saída. Posteriomente, o sistema operacional envia o arquivo de spool para uma fila de impressão onde será enviado para a impressora.

Reentrância

A reentrância permite que um programa em execução seja compartilhado por vários usuários simultaneamente de forma a evitar que várias cópias do mesmo programa sejam carregadas na memória principal para execução. Isto evita desperdício de espaço em memória e redundância de processos no sistema operacional que são o mesmo programa.

A reentrância permite que apenas uma cópia do programa seja carregada na memória e o código executável seja compartilhado por vários usuários onde cada usuário possui sua área de dados em separado.  Desta forma temos um uso mais eficiente da memória. 

Este recurso é muito usado em programas usados por vários usuários tais como editores de texto, compiladores, planilhas eletrônicas, etc.

Quais os tipos de interrupção?

Tipos de Interrupção.
Nível Desencadeado (Level-Triggered).
Borda-desencadeada (Edge-Triggered).
Híbrido..
Mensagem sinalizada..
Campainha..

Quais os tipos de interrupções mais comuns nos processadores?

Interrupções geradas por algum dispositivo externo à CPU, como teclado ou controlador de disco, são chamadas de interrupções de hardware ou assíncronas (ocorrem independentemente das instruções que a CPU está executando.

O que são interrupções explique?

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).

O que são interrupções do sistema?

As interrupções do sistema referem-se a um marcador usado para exibir o sistema recursos usados ​​por todo o hardware interrupções acontecendo no seu PC. Além disso, interrupções do sistema é um dos programas que você verá quando abrir o Gerenciador de Tarefas do Windows.