Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 04 - Concorrência Referência: MACHADO, F.B. ; MAIA, L.P. Arquitetura de Sistemas Operacionais. 4.ed. LTC, 2007. Mono x Multiprogramação E/ S UCP 1 E/ S UCP livre 1 2 1 tempo tempo (a) Sistema Monoprogramável (b) Sistema Multiprogramável Conceitos básicos • Concorrência entre os processos é o princípio básico da multiprogramação nos SOs. • A concorrência deve permitir que o processo interrompido retorne ao seu estado original após o período de interrupção. • O contexto deve ser idêntico para que ele prossiga para a operação seguinte. Concorrência e compartilhamento O que devemos fazer quando todos querem a mesma coisa ao mesmo tempo? Tirar uma fotografia dos registradores Unidade Lógica e Aritmética Unidade de Controle Registradores Solução: uma fatia de tempo para cada um RAM HD Compartilhamento • Além de compartilhar o processador, outros recursos também são compartilhados em sistemas multitarefa: memória, impressora, disco, etc. • Quem ajuda ou permite esse compartilhamento de recursos? Interrupção e Exceção: A essência da Multiprogramação • Durante a execução de um programa, eventos inesperados podem ocorrer. Estes eventos são sinalizados por interrupções ou exceções. • A interrupção torna possível a implementação da concorrência. É através dela que o S.O. sincroniza a execução de suas rotinas e dos programas dos usuários, além de controlar dispositivos. • Sempre ao final da execução de uma instrução, a unidade e controle verifica a ocorrência de alguma interrupção. Neste caso, o programa é interrompido e o fluxo é desviado para uma rotina de tratamento de interrupções. Como funciona a Interrupção e Exceção Interrupção e exceção • Para tratar a interrupção, há um vetor com o endereço do início de cada rotina de tratamento. • As interrupções podem ocorrem a qualquer momento, inclusive durante o tratamento de outra interrupção. Alguns processadores inibem as demais interrupções durante o tratamento. Outros adotam prioridade no tratamento. Neste caso, o dispositivo controlador de pedidos de interrupções avalia as interrupções e suas prioridades. Interrupção e exceção • Uma exceção é semelhante a uma interrupção, sendo a principal diferença o motivo do disparo. A exceção é resultado da execução de uma instrução do programa, como divisão por zero ou overflow. • A exceção é gerada em eventos síncronos (são previsíveis e se forem repetidos as entradas de dados e o contexto, volta a acontecer) e as interrupções são assíncronas (podem ocorrer a qualquer momento – dependem de entidades externas). • As rotinas de tratamento de exceção podem ser escritas pelo próprio programador. Interrupções do Sistema Operacional • IRQ – Interrupt Request ou Requisição de interrupção: Quando o controlador de interrupções recebe um IRQ de algum dispositivo é gerado um sinal para o processador. O controlador também faz a gerência das prioridades entre as interrupções que leva em consideração interrupções concorrentes. • Referências: – Fototeca e videoteca do Prof. Sérgio Teixeira – http://www.guiadohardware.net/termos/irq – http://www.laercio.com.br/artigos/HARDWARE/HARD-010/HARD-010.HTM – http://www.laercio.com.br/artigos/HARDWARE/HARD-019/HARD-019.HTM DMA (Direct Memory Access) • Acesso direto à memória (DMA) – Quando um processo vai fazer I/O é possível liberar a CPU. Esse processo é feito por meio do DMA que é capaz de transferir dados da memória direto para o dispositivo sem ocupar o tempo da CPU. A imagem mostra o uso dos canais de DMA no Gerenciador de Dispositivos do Windows . • Referências: – http://www.laercio.com.br/artigos/HARDWARE/HARD-010/HARD-010.HTM – http://www.laercio.com.br/artigos/HARDWARE/HARD-019/HARD-019.HTM Operações de E/S • Nos primeiros computadores, a comunicação entre o processador e os periféricos era controlada por um conjunto de instruções especiais executada pelo próprio processador. • Estas instruções tinham detalhes específicos de cada periférico, como trilha e setor de um disco. • O surgimento do controlador permitiu ao processador agir de maneira independente dos dispositivos de E/S Operações de E/S Memória Principal UCP Controlador Dispositivos de E/ S Operações de E/S • Abordagens para a transferência de dados: • Busy wait – o processador se sincroniza com o periférico e fica permanentemente testando o periférico para saber se ele já terminou • Polling – de tempos em tempos o processador testa se o periférico terminou a operação • Por interrupção – o controlador interrompe o processador para notificar o fim da operação. • DMA – para evitar que na transferência de grandes volumes de dados o processador seja interrompido toda vez que o buffer do controlador acabar ou encher, com o DMA (Direct Memory Access) o próprio controlador acessa a memória para buscar ou gravar os dados. Operações de E/S • Como o acesso ao barramento é exclusivo, enquanto o controlador estiver acessando a memória, o processo fica impedido de fazê-lo. • Usa-se também um processador de E/S para criar um canal de E/S. Este processador executa programas de E/S. Operações de E/S Memória Principal UCP Canal de E/ S Controlador Controlador Dispositivos de E/ S Dispositivos de E/ S Buffer • memória que ajuda no problema de diferença de velocidade entre os dispositivos Memória Principal gravação UCP gravação Controlador Buffer leitura leitura Spooling • A técnica de spooling foi utilizada nos computadores antigos para gravar os programas numa fita, que era executada, e os resultados eram gravados em outra fita, que depois era impressa. • Esta mesma técnica é usada hoje por exemplo com impressoras. Um área em disco é utilizada como se fosse um grande buffer. Antes de serem impressos, os dados são gravados em arquivo, conhecido como arquivo de spool, liberando o programa para outras atividades, enquanto o S.O. direciona o conteúdo do arquivo para a impressora. Spooling Sistema Operacional Programa Arquivo de Spool Impressora • O uso do spooling também desvincula o programa do dispositivo de impressão, impedindo que um programa reserve a impressora de modo exclusivo. • O S.O. gerencia as impressões solicitadas pelos programas, mesmo que sejam ao mesmo tempo. Reentrância • É comum em sistemas multitarefa, várias cópias de um mesmo programa (ex. processador de texto, navegador) em memória, seja do mesmo usuário ou de usuários distintos. • Diversas cópias do mesmo programa na memória é desperdício. • Reentrância é a capacidade de um código ser compartilhado por vários usuários, exigindo que apenas uma cópia esteja em memória. • Com a reentrância, cada usuário pode estar em um ponto do código, manipulando dados próprios. • Normalmente os utilitários do S.O tem esta capacidade. Reentrância usuário A usuário C código reentrante usuário B usuário D área de dados do usuário A área de dados do usuário B área de dados do usuário C área de dados do usuário D Memória Principal Proteção do sistema • A eficiência do ambiente multitarefa resulta em maior complexidade do sistema operacional, já que terá que cuidar de vários problemas de proteção. • Como vários programas ocupam a memória simultaneamente, cada um possui uma área reservada onde seu código e dados são armazenados. Se um programa tentar acessar uma posição de memória fora de sua área, um erro de violação de acesso deve ocorrer. • Da mesma forma, um programa não deve dominar o uso do processador. Cursos de Computação Sistemas Operacionais Prof. M.Sc. Sérgio Teixeira Aula 04 - Concorrência Obrigado e bons estudos!