faculdade pernambucana - fape sistemas operacionais prof. flávio gonçalves da rocha
TRANSCRIPT
![Page 1: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/1.jpg)
Faculdade Pernambucana - FAPE
Sistemas Operacionais
Prof. Flávio Gonçalves da Rocha
![Page 2: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/2.jpg)
Processos Um processo é uma abstração de um
programa em execução. O compartilhamento de tempo/multitarefa
possibilita a ilusão de paralelismo para sistemas com 1 processador
Para simplificar o monitoramento de atividades paralelas foi desenvolvido um modelo (processos sequenciais) que torna o paralelismo mais fácil de tratar
![Page 3: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/3.jpg)
ProcessosModelo de Processo
Todo o software executável é organizado em um número de processos seqüenciais ou somente processos
Um processo inclui os valores atuais do controlador de programa, registradores e variáveis.
![Page 4: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/4.jpg)
Processos
A
B
C
D
Um contador de Programa
Alternânciade Processo
A CB D
Quatro Contadoresde Programa
D
C
B
A
Tempo
Processo
(a) Multiprogramação de quatro programas. (b) Modelo conceitual de quatro processos seqüenciais independentes. (c) Só um programa está ativo emqualquer dado instante
![Page 5: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/5.jpg)
ProcessosModelo de Processo
A diferença entre um processo e um programa é sutil:
Um programa é um algoritmo expresso em alguma notação conveniente
Um processo é um tipo de atividade que faz com que o programa seja executado usando para isso, entrada e saída. Além disso, ele apresenta um estado
![Page 6: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/6.jpg)
ProcessosHierarquia de Processos
Na maioria dos SOs é preciso dispor de alguma maneira de criar e de destruir processos conforme necessário.
Os processos precisam de uma maneira de criar outros processos (chamadas de sistemas por exemplo)
Cada processo tem um pai, mas zero, um dois ou mais filhos formando assim, uma hierarquia de processos
![Page 7: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/7.jpg)
ProcessosEstado de um Processo
Os processos, apesar de independentes, freqüentemente precisam interagir entre si
Ex: um processo gera uma saída que outro processo utiliza como entrada
Um processo pode ficar bloqueado se a entrada e saída que estiver esperando ainda não estiver disponível
![Page 8: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/8.jpg)
ProcessosEstado de um Processo
Os três estados que um processo pode estar são:
1. Executando – Utilizando a cpu2. Pronto – Temporariamente pára para permitir que outro
processo execute3. Bloqueado – Incapaz de executar até que algum
evento externo aconteça (chamada BLOCK)
![Page 9: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/9.jpg)
Processos
Executando
ProntoBloqueado
1 23
4
1. O processo bloqueia a entrada2. O agendador seleciona outro processo3. O agendador seleciona esse processo4. A entrada torna-se disponível
Um processo pode estar em execução,em estado bloqueado ou pronto
![Page 10: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/10.jpg)
ProcessosEstado de um Processo
Usando o modelo de processos, torna-se muito mais fácil pensar no que está ocorrendo dentro do sistema
O nível mais baixo do SO é o agendador de processos com uma variedade de processos nele
0 1 ... N-2 N-1
Agendador
dfs A camada mais baixa de um SO estruturado em processosgerencia interrupções e agendamento
![Page 11: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/11.jpg)
ProcessosComunicação entre Processos
Freqüentemente os processos precisam se comunicar com outros processo
Ex: dir | find “05/05/2008” Na comunicação entre processo,
resumidamente, há três questões básicas:1. Como um processo pode passar informações para
outro
![Page 12: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/12.jpg)
ProcessosComunicação entre Processos
2. Como certificar-se que dois ou mais processos não interfiram um com outro quando envolvidos em atividades críticas
3. Sequenciamento adequado quando estão presentes dependências entre processos
![Page 13: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/13.jpg)
fg
Comunicação entre Processos
Condições de Corrida
Processos que trabalham juntos podem compartilhar área comum de armazenamento (memória principal ou arquivo) onde cada um pode ler ou gravar
4567
...
...DiretórioDe Spooler
Out = 4
In = 7
Processo A
Processo B
Se dois processos quiserem colocarsimultaneamente um arquivo na fila de impressão pode haver problema.
![Page 14: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/14.jpg)
Comunicação entre Processos
Condições de corrida
Situações em que dois ou mais processos estão lendo ou gravando alguns dados compartilhados, e o resultado final depende de quem executa precisamente quando, são chamadas condições de corrida (race conditions).
![Page 15: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/15.jpg)
Comunicação entre Processos
Sessões Críticas
Como evitamos condições de corrida? A chave é encontrar alguma maneira de proibir que
mais de um processo leia e grave os dados compartilhados ao mesmo tempo, ou seja, precisamos de uma exclusão mútua.
A parte do programa em que a memória compartilhada é acessada é chamada região crítica ou seção crítica
![Page 16: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/16.jpg)
Comunicação entre Processos
Sessões Críticas
Para se ter processos paralelos que cooperam correta e efetivamente, utilizando dados compartilhados, precisamos sustentar quatro condições:
1. Nenhum dos dois processos pode estar simultaneamente dentro de suas regiões críticas
2. Nenhuma suposição pode ser feita sobre as velocidades ou sobre o número de CPUs
![Page 17: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/17.jpg)
Comunicação entre Processos
Sessões Críticas
3. Nenhum processo que executa fora de sua região crítica pode bloquear outro processo
4. Nenhum processo deve ter de esperar eternamente para entrar em sua região crítica
![Page 18: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/18.jpg)
Comunicação entre Processos
Exclusão Mútua com Espera Ativa/Ocupada Algumas propostas para obter exclusão mútua
Desativando as interrupções Variáveis de bloqueio Alternância estrita A solução de Peterson
![Page 19: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/19.jpg)
lkjo
Comunicação entre Processos
Desativando as interrupções
A solução mais simples é fazer cada processo desativar todas as interrupções imediatamente depois de ele entrar em sua região crítica e reativá-las imediatamente depois de ele sair dela
Nenhuma interrupção ou relógio pode ocorrer A CPU não alternará de um processo para outro
Problemas: E se o processo do usuário não ativar novamente as
interrupções
![Page 20: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/20.jpg)
Comunicação entre Processos
Desativando as interrupções
Em sistemas multiprocessados apenas uma CPU é afetada. A outra pode continuar gerando interrupções para a área compartilhada.
É conveniente para o kernel desativar interrupções por um determinado período enquanto está atualizando variáveis ou listas
Para o SO é útil desativar instruções, mas não é apropriado como um mecanismo geral de exclusão mútua para processos de usuário.
![Page 21: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/21.jpg)
Comunicação entre Processos
Variáveis de Bloqueio
Solução de software Utilizar uma variável (bloqueio) para controlar o
acesso à região crítica. Se a variável for 0 significa que o processo pode
entrar na região crítica, se for 1 não Problema:
Mesmo problema do spooler. A variável pode ser lida simultaneamente
![Page 22: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/22.jpg)
jkjçl
Comunicação entre Processos
Alternância Estrita
Testar continuamente o valor de uma variável até que algum valor apareça é chamado espera ativa
Desperdício de CPU Interessante quando a expectativa for de uma espera
curta
While( TRUE ){ while ( turn != 0 ); critical_region( ); turn = 1; noncritical_region( );}
While( TRUE ){ while ( turn != 1 ); critical_region( ); turn = 0; noncritical_region( );}
Processo 0 Processo 1
![Page 23: Faculdade Pernambucana - FAPE Sistemas Operacionais Prof. Flávio Gonçalves da Rocha](https://reader033.vdocuments.net/reader033/viewer/2022051519/570638471a28abb8238f3bb1/html5/thumbnails/23.jpg)
Comunicação entre Processos
Alternância Estrita
A utilização de turn não é uma boa idéia quando um dos processos é muito mais lento do que o outro.
Um processo na região não crítica poderá bloquear outro (viola a condição 3).