Sistemas OperacionaisInterrupção e Exceção
Interrupção e Exceção• Durante a execução de um programa podem ocorrer alguns
eventos inesperados, ocasionando um desvio forçado no seu fluxo de execução.
• Estes tipos de eventos são conhecidos por interrupção ou exceção e podem ser conseqüência da sinalização de algum dispositivo de hardware externo ao processador ou da execução de instruções do próprio programa.
• A diferença entre interrupção e exceção é dada pelo tipo de evento ocorrido.
• A interrupção é o mecanismo que tornou possível a implementação da concorrência nos computadores, sendo o fundamento básico dos sistemas multiprogramáveis.
• É 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.
Interrupção e Exceção• 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 avisa ao processador que alguma operação de E/S está completa.
• Nesse caso, o processador deve interromper o programa para tratar o término da operação.
• 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, denominada rotina de tratamento de interrupção.
• Para que o programa possa posteriormente voltar a ser executado, é necessário que, no momento da interrupção, um conjunto de informações sobre a sua execução seja preservado.
• Essas informações consistem no conteúdo de registradores, que deverão ser restaurados para a continuação do programa.
Interrupção e Exceção
Identifica a origem da
interrupção
Salva o conteúdo dos
registradores na pilha de controle
Aplicação
Rotina de
Tratamento
Interrupção
ou Exceção
Obtém o endereço da rotina
de tratamento
Restaura o conteúdo dos
registradores
Interrupção e Exceção• Passos realizados após um pedido de interrupção ser aceito
1. Um sinal de interrupção é gerado para o processador;
2. Após o término da execução da instrução corrente, o processador identifica o
pedido de interrupção;
3. Os conteúdos dos registradores PC e de status são salvos;
4. O processador identifica qual a rotina de tratamento que será executada e
carrega o PC com o endereço inicial desta rotina;
5. A rotina de tratamento salva o conteúdo dos demais registradores do
processador na pilha de controle do programa;
6. A rotina de tratamento é executada;
7. Após o término da execução da rotina de tratamento, os registradores de uso
geral são restaurados, além do registrador de status e o PC, retornando à
execução do programa interrompido.
Via Hardware
Via Software
Interrupção e Exceção• Para cada tipo de interrupção existe uma rotina de tratamento
associada, para a qual o fluxo de execução deve ser desviado.
• A identificação do tipo de evento ocorrido é fundamental para determinar o endereço da rotina de tratamento.
• No momento da ocorrência de uma interrupção, o processador deve saber para qual rotina de tratamento deve ser desviado o fluxo de execução.
• O principal método utiliza uma estrutura de dados chamada vetor de interrupção, que contém o endereço inicial de todas as rotinas de tratamento existentes associadas a cada tipo de evento.
• Uma exceção é semelhante a uma interrupção, sendo a principal diferença o motivo pelo qual o evento é gerado.
• A exceção é resultado direto da execução de uma instrução do próprio programa, como a divisão de um número por zero, ou um overflow em uma operação aritmética.
Operações de Entrada e Saída
• Existem três maneira básicas de executar operações de Entrada e Saída.• Entrada e Saída controlada por programa.
Nesta técnica, o processador sincronizava-se com o periférico para o início da transferência de dados.
Após iniciada a transferência, o sistema ficava permanentemente testando o estado do periférico para saber quando a operação chegaria ao seu final.
este controle mantinha o processador ocupado até o término da operação de E/S.
Como o processador executa uma instrução muito mais rapidamente que a realização de uma operação de E/S, havia um enorme desperdício de tempo da CPU.
Operações de Entrada e Saída• Entrada e Saída controlada por interrupção.
Com a implementação do mecanismo de interrupção, as operações de E/S puderam ser realizadas de uma forma mais eficiente.Neste caso, o controlador interromperia o processador para avisar do término da operação de E/S.Com este mecanismo, o processador, após a execução de um comando de leitura ou gravação, permanece livre para o processamento de outras tarefas.O controlador por sua vez, ao receber um sinal de leitura fica encarregado de ler os blocos do disco e armazená-los em memória ou registradores próprios.Em seguida, o controlador sinaliza uma interrupção ao processador.Quando o processador atende à interrupção, a rotina responsável pelo tratamento transfere os dados dos registradores do controlador para a memória principal.Ao término da transferência, o processador pode voltar a executar o programa interrompido e o controlador fica novamente disponível para outra operação.
Operações de Entrada e Saída• Entrada e Saída controlada por DMA.
Esta técnica permite que um bloco de dados seja transferido entre a memória principal e dispositivos de E/S sem a intervenção do processador, exceto no início e no final da transferência.Quando o sistema deseja ler ou gravar um bloco de dados, o processador informa ao controlador sua localização, o dispositivo de E/S, a posição inicial da memória de onde os dados serão lidos ou gravados e o tamanho do bloco.Com estas informações, o controlador de DMA realiza a transferência entre o periférico e a memória principal, e o processador é somente interrompido no final da operação.A área de memória utilizada pelo controlador de DMA é chamada de buffer de entrada e saída.No momento em que uma transferência de dados através da técnica de DMA é realizada, o controlador deve assumir, momentaneamente, o controle do barramento.Como a utilização do barramento é exclusiva de um dispositivo, o processador deve suspender o acesso ao barramento, temporariamente, durante a operação de transferência.Este procedimento não gera uma interrupção, e o processador pode realizar tarefas, desde que sem a utilização do barramento, como um acesso à memória cache.
Canal de E/S
o Introduzido pela IBM no sistema 7094
o Canal de E/S é um processador com capacidade
de executar programas de E/S e controle total dos
dispositivos
o Instruções de E/S armazenadas na MP ou no
canal de E/S, porém executadas pelo canal de E/S
Processador instrui o canal de E/S a executar
um programa de canal, responsável por
especificar dispositivos, buffers e ações
Ao final da transferência, gera interrupção
o Pode controlar múltiplos dispositivos de E/S
Canal de E/S
MemóriaPrincipal
UCP
Canal de E/ S
Controlador
Dispositivos de E/ S
Controlador
Dispositivos de E/ S
Buffering
o Consiste em utilizar uma área na memória
principal para transferência de dados entre
dispositivos de E/S e a MP
o Numa operação de leitura do dispositivo:
Dado é transferido para buffer sem onerar o
processador, dispositivo fica liberado após
conclusão
o Numa operação de gravação p/o dispositivo:
Dado é escrito rapidamente no buffer,
liberando o processador para outras atividades
enquanto este é gravado no dispositivo.
Buffering
MemóriaPrincipal
UCPBuffer
gravação gravação
leitura leitura
Controlador
Buffering
o Unidade de transferência é o registro, cujo
tamanho depende do tipo de dispositivo
Vários registros podem ser armazenados num
buffer
Buffer conterá dados lidos mas ainda não
processados, ou dados processados mas ainda
não gravados
o Buffering minimiza problemas decorrentes da
disparidade de velocidades, compatibilizando
tempos de acesso de maneira que processador e
dispositivo de E/S não fiquem ociosos
Spooling
o Simultaneous Peripheral Operation On-line,
introduzido no fim dos anos 1950
o Técnica usa uma área do disco (arquivo) para
buffering de impressão
o Tudo que é submetido para impressão vai para o
arquivo de spool, liberando o programa de origem
o SO é quem gerencia os jobs de impressão
Programa ImpressoraArquivode Spool
Sistema OperacionalSistema Operacional
Reentrância
Memória Principal
código reentrante
área de dados do usuário A
usuário A usuário C
usuário B usuário D
área de dados do usuário B
área de dados do usuário C
área de dados do usuário D
Proteção do Sistema
o SO deve garantir a confiabilidade e a integridade
dos programas e dados dos usuários, além do
próprio SO
Cada programa possui uma área reservada
para código e outra para dados que devem ser
preservadas durante sua execução
Idem para o SO em si
Arquivos também devem ter sua integridade
garantida quando acessados por múltiplos
programas e/ ou múltiplos usuários
Recursos não devem ser monopolizados