Sistemas operacionais
Aula 05 - Concorrência17/08/2009 – Turma B
18/08/2009 – Turma A
Introdução
Os sistemas operacionais podem ser vistos como um conjunto de rotinas que executam concorrentemente de forma ordenada
A execução de instruções em paralelo permite que diversas tarefas sejam executadas concorrentemente
Sistemas multiprogramáveis surgiram a partir das limitações dos sistemas monoprogramáveis
Sistemas monoprogramáveis
O processador fica dedicado exclusivamente a uma tarefa (desperdício no uso do processador)
Enquanto uma leitura de disco é realizada, o processador fica esperando
E/S muito lentas em relação ao processador Somente um programa fica na memória,
ocasionando a existência de áreas livres sem uso
Sistemas multiprogramáveis
Vários programas são armazenados em memória, concorrendo com o uso do processador
Enquanto um programa solicita uma operação de E/S, outros programas podem usar o processador
Em sistemas de tempo compartilhado, existe a impressão que o computador está inteiramente dedicado ao usuário
Interrupção e exceção
São desvios forçados no fluxo de execução de um programa que podem ocorrer devido a eventos
Ocasionados por sinalização de algum dispositivo de hardware externo ao processador ou execução de instruções do próprio programa
Alguns autores fazem distinção entre interrupção e exceção
Interrupção
Gerada por um evento externo ao programa Mecanismo que torna possível a
implementação de sistemas multiprogramáveis
Em função dele, o SO sincroniza a execução de todas as rotinas e dos programas dos usuários, além de controlar dispositivos
Interrupção
Na ocorrência da interrupção, o programa em execução é interrompido e o controle desviado para uma rotina de tratamento de interrupção O conjunto de informações sobre a execução deve ser
preservados e restaurados ao final da rotina de tratamento
Interrupção
Instrução 1Instrução 2Instrução 3Instrução 4
Instrução 5Instrução 6Instrução 7Instrução 8Instrução 9
Salva conteúdo dos registradores na
pilha de controle
Identifica a origem do evento
Obtém o endereço darotina de tratamento
Rotina detratamento
Restaura o conteúdodos registradores
Interrupção
Programa
Interrupção
Para cada tipo de interrupção existe uma rotina de tratamento associada, para qual o fluxo de execução deve ser desviado
Existem dois métodos para o tratamento de interrupções No primeiro, uma estrutura de dados chamada vetor de
interrupções contém um mapeamento (evento, endereço de tratamento)
No segundo, existe somente uma única rotina de tratamento e um registrador especial guarda o tipo de evento ocorrido
Interrupção As interrupções são decorrentes de eventos
assíncronos Esses eventos são imprevisíveis, podendo ocorrer
mais de uma vez, como no caso de dispositivos de E/S informarem que precisam da atenção do processador
Interrupção O processador poderá ignorar a ocorrência de
outras interrupções enquanto executa uma rotina de tratamento (interrupção mascarada)
Caso o processador não permita ignorar interrupções haverá um mecanismo para avaliar as interrupções geradas e definir suas prioridades
Exceção
É semelhante a uma interrupção, sendo a principal diferença o motivo pelo qual o evento é gerado
Ela é o resultado direto da execução de uma instrução do próprio programa, como uma divisão por zero
Exceção
É gerada por evento síncrono, enquanto a interrupção é gerada por um evento assíncrono
Um evento síncrono é resultado direto da execução do programa corrente
Sempre que ocorre uma exceção, o controle é desviado para uma rotina de tratamento de exceção
Operações de E/S
Nos primeiros sistemas computacionais, a comunicação entre processador e periféricos era controlada por instruções de E/S, com detalhes específicos do periférico
Este modelo cria uma forte dependência entre o processador e os dispositivos de E/S
Processador
Memória
Dispositivo E/S
Operações de E/S
Com o surgimento do controlador ou interface, o processador não mais se comunica com os periféricos diretamente, mas sim através do controlador
Processador
Memória
Controlador Dispositivo E/S
Buffering
Consiste no uso de uma área de memória principal, para a transferência de dados entre os dispositivos de E/S e a memória
Permite que em uma operação de leitura o dado seja transferido primeiramente para o buffer, liberando imediatamente o dispositivo de entrada para realizar uma nova leitura
Permite minimizar o problema de disparidade de velocidade de processamento existente entre o processador e os dispositivos de E/S
Spooling
Simultaneous Peripheral Operation On-Line No início, os programas dos usuários eram
submetidos um a um para processamento pelo processador
Como a velocidade de operação dos dispositivos de E/S é muito menor que o processador, era comum que a CPU permanecesse ociosa à espera de programas e dados de entrada ou pelo término de uma impressão
Spooling
A solução foi armazenar os vários programas e seus dados (jobs), em uma fita magnética e em seguida submetê-los ao processamento
O processador poderia executar sequencialmente os jobs, diminuindo o tempo de processamento e transição entre eles.
Da mesma forma, o resultado do processamento era gravado em fita, para posteriormente ser enviado a impressora
Spooling
Esta técnica está presente na maioria dos sistemas operacionais para o gerenciamento de impressão.
No momento em que um comando de impressão é executado, as informações que serão impressas são gravadas antes em um arquivo em disco, liberando imediatamente o programa para outras atividades
Reentrância É comum em sistemas multiprogramáveis, vários
usuários usarem os mesmos aplicativos simultaneamente
Se cada execução do programa por um usuário, trouxesse para memória o código executável, haveria diversas cópias de um mesmo programa na memória principal, o que acarreta um desperdício de memória
Reentrância é a capacidade de um código executável ser compartilhado por diversos usuários, exigindo apenas uma cópia do programa na memória
Proteção do sistema
O sistema operacional deve implementar mecanismos de proteção que controlam o acesso concorrente aos diversos recursos do sistema para garantir a confiabilidade e a integridade dos programas e dados dos usuários, além do próprio sistema operacional