3. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 3
Concorrência
• É a possibilidade de o processador
executar instruções em paralelo com
operações de E/S.
• Isto permite que diversas tarefas sejam
executadas concorrentementeconcorrentemente.
• Este é o princípio básico para o projeto e
implementação dos sistemas
multiprogramáveis.
4. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 4
Concorrência
• Os SOs podem ser vistos como um conjunto de rotinas
que executam concorrentemente de forma ordenada. A
possibilidade de o processador executar instruções em
paralelo com operações de E/S permite que diversas
tarefas sejam executadas concorrentemente.
• Nos sistemas monoprogramáveis somente um programa
pode estar em execução por vez, permanecendo o
processador dedicado exclusivamente a uma tarefa,
com o consequente desperdício na utilização do mesmo.
• A Tabela 3.1 apresenta um exemplo de um programa
que lê registros de um arquivo e executa, em média,
100 instruções por registro lido.
• Neste caso, o processador gasta aproximadamente 93%
do tempo esperando o dispositivo de E/S concluir a
operação para continuar o processamento.
5. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 5
Exemplo de utilização do sistema
Leitura de um registro 0,0015s
Execução de 100 instruções 0,0001s
Total 0,0016s
% utilização da CPU (0,0001/0,0016)=0,0625=6,25%
A tabela abaixo apresenta um exemploA tabela abaixo apresenta um exemplo
de um programa que lê registros de umde um programa que lê registros de um
arquivo e executa, em média, 100arquivo e executa, em média, 100
instruções por registro.instruções por registro.
Neste caso o processador gasta aproximadamente 93% do
tempo esperando o dispositivo de E/S concluir a operação
para continuar o processamento.
6. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 6
Concorrência
• Outro aspecto a ser considerado é a
subutilização da memória principal. Um
programa que não ocupe totalmente a
memória ocasiona a existência de áreas
livres sem utilização.
• Nos sistemas multiprogramáveis, vários
programas podem estar residentes em
memória, concorrendo pela utilização do
processador. Dessa forma, quando um
programa solicita uma operação de E/S,
outros programas poderão usar o
processador.
7. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 7
concorrência
Sistema Monoprogramável x Sistema multiprogramável
livreUCP
E/S
tempo
Monoprogramável
tempo
Multiprogramável
1 1
1
2
A utilização concorrente da UCP é implementada no Sist.A utilização concorrente da UCP é implementada no Sist.
MultProg., de maneira que quando um programa perde oMultProg., de maneira que quando um programa perde o
uso da UCP e depois retorna para continuar sua execução,uso da UCP e depois retorna para continuar sua execução,
seu estado deve ser idêntico ao do momento em que foiseu estado deve ser idêntico ao do momento em que foi
interrompido.interrompido.
interrupçã
o
8. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 8
Concorrência
• As vantagens proporcionadas pela
multiprogramação podem ser
percebidas onde existe um sistema
computacional com um disco, um
terminal e uma impressora, como
mostra a figura seguinte.
• Neste ambiente, são executados três
programas (Prog1, Prog2 e Prog3)
que possuem características de
processamento distintas.
9. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 9
Características
Utilização da CPU
Operações de E/S
Tempo de processamento
Memória utilizada
Utilização do disco
Utilização do terminal
Utilização da impressora
Prog1 Prog2 Prog3
Alta
Poucas
5 min
50 Kb
Não
Não
Não
Baixa
Muitas
15 min
100 Kb
Não
Sim
Não
Baixa
Muitas
10 min
80 Kb
Sim
Não
Sim
Características de execução dos programas
Monoprogramaçã
oUtilização da CPU
Utilização de memória
Utilização de disco
Utilização de impressora
Tempo total processamento
Taxa de througput
Multiprogramaçã
o17%
30%
33%
33%
30 min
6 prog/hora
33%
67%
67%
67%
15 min
12 prog/hora
Comparação entre monoprogramação e
multiprogramação
10. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 10
Eventos
Após o sistema operacional ser carregado ele
geralmente espera a ocorrência de um evento inicial,
como por exemplo ‘init’, e espera que algum evento
ocorra.
Este evento geralmente é uma interrupção de
hardware ou software.
Interrupção por hardware = sinal para a CPU
através do barramento do sistema.
Interrupção por software = uma operação
especial denominada chamada ao sistema. (system
call) ou chamada ao monitor (monitor call).
11. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 11
Evento: Interrupção
• Durante a execução de um
programa, alguns eventos
inesperados podem ocorrer,
ocasionando um desvio forçado no
seu fluxo de execução.
• Este tipos de eventos são
chamados interrupções.
12. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 12
Interrupções
• 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.
13. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 13
Eventos que podem disparar uma
interrupção
• Conclusão de uma operação de
E/S.
• Divisão por zero.
• Acesso inválido à memória.
• Um pedido por algum serviço de
sistema operacional.
• Para cada interrupção, uma rotina
de serviço é designada responsável
para tratar a interrupção.
14. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 14
Tratamentos 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.
15. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 15
Mecanismos de interrupções
1. Um sinal de interrupção é gerado para o processador.
2. Após o término da execução da instrução corrente, o
processamento 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.
16. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 16
Programa
Obtém o endereço da rotina de
tratamento
Rotina de
Tratamento
Identifica a origem do evento
Instrução 1
Instrução 2
Instrução 3
Instrução 4
Instrução 5
Instrução 6
Instrução 7
Instrução 8
Instrução 9
Instrução n
Salva conteúdo dos registradores
Na pilha de controle
Restaura o conteúdo
Dos registradores
Mecanismos de interrupções
Interrupção
17. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 17
Tratamentos de interrupção
• Existem dois métodos utilizados para o
tratamento de interrupções.
• O primeiro 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.
• Um segundo método utiliza um registrador de
status que armazena o tipo do evento ocorrido.
Neste método só existe uma única rotina de
tratamento, que no seu início testa o registrador
para identificar o tipo de interrupção e tratá-la de
maneira adequada.
18. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 18
Tratamentos de interrupção
• As interrupções são decorrentes de eventos assíncronos,
ou seja não relacionados à instrução do programa
corrente.
• Esses eventos, por serem imprevisíveis, podem ocorrer
múltiplas vezes, como no caso de diversos dispositivos de
E/S informarem ao processador que estão prontos para
receber ou transmitir dados. Isto possibilita a ocorrência
de múltiplas interrupções simultâneas.
• Uma maneira de evitar esta situação é a rotina de
tratamento inibir as demais interrupções.
• Neste caso, na ocorrência de outras interrupções durante a
execução da rotina de tratamento, elas serão ignoradas,
ou seja, não receberão tratamento. Interrupções com esta
característica são denominadas interrupções mascaráveis.
19. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 19
Interrupções
• Sistemas operacionais modernos
são baseados em interrupções.
• Se não houver:
- processos para executar,
- nenhum dispositivo de E/S ao qual
fornecer serviço e,
- nenhum usuário a ser atendido,
• O sistema operacional ficará
parado, esperando que algo
aconteça.
21. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 21
Operações de E/S
1. Instruções de entrada/saída = todo o
controle do periférico era executado pelo
próprio processador.
2. Controlador ou interface = permitiu ao
processador agir de maneira independente do
dispositos de E/S.
3. E/S controlada por programa = mantinha o
processador ocupado até o término da
operação.
4. Polling E/S = o sistemas testava cada
dispositivo a certos intervalos de tempo. Esta
técnica permitiu o surgimento dos primeiros
sistemas multiprogramáveis.
22. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 22
Operações de E/S
• Canal de E/S
M e m ó r i a
P r i n c i p a l
U C P
C a n a l d e E / S
C o n t r o l a d o r
D i s p o s i t i v o s d e E / S
C o n t r o l a d o r
D i s p o s i t i v o s d e E / S
23. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 23
Operações de E/S
5. E/S controlada por interrupção = o próprio
controlador interrompia a CPU para avisar o
término da operação.
6. DMA(Direct Memory Access) = permite que
blocos de dados seja transferido entre a
memória principal e dispositivos de E/S, sem a
intervenção do processador.
24. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 24
Buffering
Consiste na utilização de uma área na
memória principal, denominada buffer, para
a transferência de dados entre os
dispositivos de E/S e a memória.
Controlador
Gravação
Leitura
Gravação
Leitura
Memória
Principal
BufferBuffer
25. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 25
Spooling
• A técnica de spooling (simultaneous peripheral
operation on-line) foi introduzida no final dos
anos de 1950 para aumentar o grau de
concorrência e a eficiência dos sistemas
operacionais.
• Esta técnica é semelhante à técnica de
buffering, utiliza uma área de disco como se
fosse um grande buffer.
Sistema
Operacional
Programa Arquivo
de Spool
Impressora
26. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 26
Reentrância
É a capacidade de um código executável (código reentrante) ser compartilhado
por diversos usuários, exigindo que apenas uma cópia do programa esteja na
memória.
Memória Principal
Á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
Usuário A
Usuário B
Usuário C
Código reentrante
Editor de Texto
Usuário D
Utilitários do sistema, como
editores de texto e
compiladores são exemplos de
código reentrante.
27. ArquiteturadeSistemasOperacionais–Machado/Maia
Cap. 3 – Concorrência 27
Proteção do sistema
• A eficiência proporcionada por um ambiente
multiprogramável resulta em maior complexidade do SO,
já que alguns problemas de proteção surgem como
decorrência desse tipo de implementação.
• Se considerarmos que diversos usuários estão
compartilhando os mesmos recursos, deve existir uma
preocupação em garantir a confiabilidade e a integridade
dos programas e dos dados dos usuários, além do próprio
SO.
• Como vários programas ocupam a memória
simultaneamente, cada usuário possui uma área reservada
onde seus dados e código são armazenados. O SO deve
possui mecanismos de proteção de forma a preservar
estas informações. Caso um programa tente acessar uma
posição de memória fora de sua área, um erro indicando
violação de acesso deve ocorrer.
• Para que diferentes programas tenham direitos de
compartilhar uma mesma área de memória, mecanismos
devem ser oferecidos pelo SO para que a comunicação
seja feita de forma sincronizada, evitando problemas de
consistência.