SlideShare uma empresa Scribd logo
1 de 58
Baixar para ler offline
Sistemas operacionais
modernos
Terceira edição
ANDREW S. TANENBAUM
Capítulo 2
Processos e
Threads
Adaptado por:
Prof. Esp. Rodrigo Ronner
rodrigoronner@gmail.com
http://rodrigoronner.blogspot.com
Processos
Processos
• Processo – entidade dinâmica que consiste num programa em
execução, os seus valores correntes, informação de estado e
recursos utilizados pelo sistema operativo na gestão da execução
do processo;
• Um processo constitui uma atividade. Ele possui programa,
entrada, saída e um estado. Um único processador pode ser
compartilhado entre os vários processos, com algum algoritmo
de escalonamento usado para determinar quando parar o
trabalho sobre um processo e servir um outro;
• Todos computadores modernos são capazes de fazer várias coisas
ao mesmo tempo;
• Em qualquer sistema multiprogramado, a CPU chaveia de
programa para programa, executando cada um deles por dezenas
ou centenas de milissegundos;
4
Processos - O Modelo de Processo
• (a) Multiprogramação de quatro programas
• (b) Modelo conceitual de 4 processos sequenciais, independentes
• (c) Somente um programa está ativo a cada momento
5
Processos – LINUX
• Comandos da shell
• ps – listar processos
• pstree – ver hierarquia dos processos
• top – ver informações adicionais sobre os processos
• kill – enviar sinal a um processo (pode ser um sinal para terminar
outro processo)
• Chamadas ao sistema
• fork() – criar um novo processo filho
• exit(.) – terminar processo
• kill(.) – enviar sinal a um outro processo
6
Processos – Windows 2000
• TaskManager
• visualizar os processos que estão a correr
• possibilita ao utilizador a terminação de processos
• Chamadas ao sistema
• CreateProcess(.) – criação de processos
• ExitProcess(.) – saída voluntária
• TerminateProcess(.) – terminação de outro processo
Processos – Criação de Processos
Há quatro eventos principais que fazem com que processos sejam
criados:
1. Inicio do sistema
2. Execução de uma chamada ao sistema de criação de
processo por um processo em execução
3. Uma requisição do usuário para criar um novo processo
4. Inicio de um Job em lote.
Tecnicamente, em todos estes casos, um novo processo e criado por
um processo existente executando uma chamada ao sistema de
criação de processo.
Processos – Término de Processos
Depois de criado, um processo começa a executar e faz o seu trabalho.
Mais cedo ou mais tarde o processo terminara, normalmente por uma
das seguintes razoes:
• Saída normal (voluntária) – Na maioria das vezes os processos
terminam porque fizeram o seu trabalho. Outra saída normal e por
exemplo quando o utilizador sai do programa como deve ser. (A cruz da
janela por exemplo)
• Saída por erro (voluntária) – Quando o processo descobre um erro fatal.
O processo emite uma chamada de saída ao sistema.
• Erro fatal (involuntário) – Quando o erro e causado pelo processo,
muitas vezes um erro de programa. Exemplos: quando encontra uma
divisão por zero, instrução ilegal, etc.
• Cancelamento por um outro processo (involuntário) – Quando um
processo executa uma chamada ao sistema dizendo para cancelar algum
outro processo. Em linux: kill
9
Processos – Hierarquias de Processos
• Pai cria um processo filho, processo filho pode criar seu próprio
processo;
• Formam uma hierarquia;
• UNIX chama isso de “grupo de processos”.
• Windows não possui o conceito de hierarquia de processos;
• Todos os processos são criados iguais.
10
Processos - Estados de Processos (1)
• Possíveis estados de processos
• Em execução (Realmente usando a CPU naquele instante).
• Bloqueado (Incapaz de executar enquanto não ocorrer um
evento externo).
• Pronto (executável; temporariamente parado para dar lugar a
outro processo).
• Mostradas as transições entre os estados
11
Processos - Estados de Processos (2)
Mostradas as transições entre os estados
• Execução -> Bloqueado: quando um processo
descobre que não pode prosseguir passa para o
estado de bloqueado:
• Ex: cat teste | grep tree o processo do grep tem de
esperar pela saída do processo cat. Se o processo
grep tem tempo de CPU e o processo cat ainda não
terminou então o grep passa para o estado de
bloqueado.
12
Processos - Estados de Processos (3)
Mostradas as transições entre os estados
• Execução -> Pronto e Pronto -> Execução: transições
causadas pelo escalonador de processos,
gerenciamento de tempo de CPU, Execução -> Pronto
ocorre quando o escalonador de processos decide
que o processo em execução já teve o seu tempo de
CPU, e Pronto -> Execução ocorre quando já todos os
processos estiveram em execução volta novamente
para o mesmo.
13
Processos - Estados de Processos (4)
Mostradas as transições entre os estados
• Bloqueado -> Pronto: ocorre quando o processo que
estava no estado bloqueado tem disponível aquilo
que estava à espera. Se o CPU estiver livre esse
processo passa logo para o estado de Execução,
senão fica a aguardar até chegar a sua vez.
Processos: I/O-bound x CPU-bound
•CPU-bound (ligado à CPU)
–Maior parte do tempo em estado de execução
–Ou seja: usando o processador
•I/O-bound (ligado à E/S)
–Maior parte do tempo em estado de bloqueado
–Ou seja: fazendo E/S
•Pode: iniciar CPU-bound e tornar-se I/O-bound (e vice-versa)
•Mais eficiente: revezamento entre CPU-bound e I/O-bound
Gerenciamento de processos
•SO organiza os processos da fila de prontos
•Periodicamente o ESCALONADOR de processos:
–Escolhe um processo da fila para executar
–Critério de escolha pode variar
•Alguns critérios usados para escalonamento
–Ordem de chegada dos processos
–Fatia de tempo demandada pelo processo
–Prioridade do processo
•Outros nomes para ESCALONADOR/ESCALONAMENTO:
–Despachante/despacho
–Dispatcher/dispatch
•Quando um processo solicita uma operação de E/S
–Ele é interrompido e desviado para a fila de bloqueado
–Posteriormente, ele retornará para o fim da fila de pronto
–Então, será submetido ao critério de escalonamento da fila
•Preempção: capacidade do SO de
–Interromper um processo a qualquer instante (a seu critério)
–Retomar a execução a partir do ponto de interrupção
Bloco de controle do processo (PCB)
• Ao criar um processo, o SO cria um BCP (PCB)
–É uma tabela com informações relativas ao processo
–Reside na RAM enquanto o processo existe
–Acesso exclusivo do SO
Bloco de Controle do Processo (ou Descritor do Processo)
Threads
Threads
• É o fluxo de controle de um processo. Permitem que múltiplas
execuções ocorram no mesmo ambiente do processo com um
grande grau de independência uma da outra.
• Cada thread tem a sua própria pilha. Isso e fácil e perceber porque
normalmente cada thread chama procedimentos diferentes… ou se
chamam os mesmos o que se vai passar, e diferente para cada
thread, então e necessário que cada thread tenha a sua pilha.
• A pilha tem uma estrutura aonde são guardadas as variáveis locais
de um procedimento e o endereço de retorno para usa-lo quando o
procedimento terminar
Threads – O uso de thread
• A principal razão para existirem threads é que em muitas aplicações
ocorrem múltiplas atividades ao mesmo tempo.
• Algumas dessas atividades podem bloquear de tempos em tempos.
• O modelo de programação torna-se mais simples se decompormos
uma aplicação em varias threads sequenciais que executam quase
em paralelo.
• O paralelismo das threads é o mesmo que existe para os processos
mas neste caso as threads de um mesmo processo utilizam todas o
mesmo espaço de endereçamento.
• Uma segunda razão para o uso de threads tem a ver com o fato de
serem mais fáceis de criar e de destruir do que os processos, pois
não tem quaisquer recursos associados a eles.
• Em muitos sistemas criar threads e muito mais rápido que criar
processos. Esta propriedade e útil quando o numero de threads
necessários se altera dinâmica e rapidamente.
• O desempenho também e uma razão para o uso e threads pois
quando existe uma grande quantidade de computação e de ES, os
threads permitem que essas atividades se sobreponham e desse
modo aceleram a aplicação.
Aplicações típicas de threads
•Servidor WEB
–Cada solicitação de cliente: ativa uma thread (operária)
–Processo pai
• Atende às novas solicitações que chegam
• Despacham threads operárias para execução
•Servidor de BD
–Cada query de usuário: ativa uma thread (operária)
–Processo pai: igual ao exemplo anterior
•Processador de texto
–Uma rotina básica de captura de teclas (principal)
–Com menor prioridade, pode implementar threads para:
• Formatar o texto
• Fazer revisão ortográfica
• Fazer revisão gramatical
• Salvar automaticamente o texto (a cada 15 minutos)
•Paralelismo: visa aumentar o desempenho (processo e SO)
21
Threads - Uso de Thread (1)
Um processador de texto com três threads
22
Threads - O Modelo de Thread (2)
Cada thread tem sua própria pilha
23
Threads - Uso de Thread (3)
Um servidor web com múltiplos threads
24
Threads – O Modelo de Thread Clássico (1)
(a) Três processos cada um com um thread
(b) Um processo com três threads
25
Threads – O Modelo de Thread Clássico (2)
• Items compartilhados por todos os threads em um
processo;
• Itens privativos de cada thread;
26
Threads – Implementação de threads no
espaço do usuário
Sucintamente: O usuário cria um processo e depois é o próprio
processo que gerência as suas threads. O processo tem uma tabela
de threads, gerida por um sistema supervisor, para manter o
controle sobre elas, tabela essa que é em tudo parecida a tabela de
processos do núcleo.
Vantagens: quando uma thread decide parar de executar, a
informação da thread e guardada na tabela de threads e o
escalonador de threads pode ser chamado pela parada daquela
thread e selecionar outra thread para executar.
A vantagem disto é que é mais eficiente, o escalonador de threads e
o guardar a informação da thread na tabela assim do que fazer uma
chamada ao núcleo.
Outra vantagem e cada processo pode ter o seu algoritmo de
escalonamento personalizado.
27
Threads – Implementação de threads de
núcleo
• Contrariamente a implementação de threads de usuário, a
implementação de threads de núcleo funciona com o
núcleo a gerir as duas tabelas, a de processos bem como a
das threads.
• Esta tabela das threads acompanha todas as threads do
sistema, enquanto que na implementação de threads de
usuário cada tabela de threads apenas gerência as threads
correspondentes a um processo.
28
Threads – Implementação de threads no
espaço do usuário
Threads – Implementações Híbridas
Comunicação entre processos
31
Comunicação entre processos
Frequentemente processos precisam se comunicar com outros.
Há três tópicos em relação a isso:
• O primeiro é como um processo passa informação para um outro;
• O Segundo é como garantir que dois ou mais processos não
entrem em conflito;
• O Terceiro é como como uma sequência adequada quando
existirem dependências: se o processo A produz dados e o
processo B os imprime, B deve esperar até que A produza alguns
dados antes de iniciar a impressão.
Pipe
33
Comunicação entre processos: Condições de Disputa
(ou de Corrida)
• Situações que 2 ou mais processos estão lendo ou escrevendo
algum dado compartilhado e cujo resultado final depende da
ordem de execução;
• Pergunta: isso quer dizer que uma máquina no Brasil e outra no
Japão, cada uma com processos que se comunicam, nunca terão
Condições de Disputa?
34
Ex.:Vagaemavião
1. Operador OP1 (no Brasil) lê Cadeira1 vaga;
2. Operador OP2 (no Japão) lê Cadeira1 vaga;
3. Operador OP1 compra Cadeira1;
4. Operador OP2 compra Cadeira1;
Comunicação entre processos: Condições de Disputa
(ou de Corrida)
35
Exemplo:
As vagas 0 a 3 estão vazias (os arquivos já foram impressos) e as vagas 4 e 6 estão preenchidas
(com os nomes dos arquivos na fila de impressão). Mais ou menos simultaneamente, os
processos A e B decidem que querem colocar um arquivo na fila de impressão.
• O processo A lê in e armazena o valor 7, na variável local;
• Logo em seguida ocorre interrupção do relógio e a CPU decide que o Processo A já executou
suficiente. Então chaveia para processo B;
• Este também lê entrada e obtém igualmente um 7;
• Ele do mesmo modo, armazena o 7 em sua variável local;
• Neste instante, ambos os processos pensam que a próxima vaga disponível é a 7;
• O processo B prossegue sua execução. Ele armazena o nome de seu arquivo na vaga 7 e
atualiza in com 8. A partir disso, ele fará outras coisas.
• Eventualmente, o processo A executa novamente a partir de onde parou.
• Verifica próxima vaga livre, encontra lá um 7 e escreve seu nome de arquivo na vaga 7.
• Apagando o nome que o processo B acabou de por lá.
• Então ele calcula próxima vaga livre + 1, que é 8, e põe 8 em in.
O que aconteceu com processo B???
Comunicação entre processos: Condições de Disputa
(ou de Corrida)
36
Comunicação entre processos:
Condição de Corrida
Dois processos querem ter acesso simultaneamente à memória
compartilhada
37
Comunicação entre processos:
Regiões críticas
As regiões criticas são a resposta para evitar o problema das condições de
disputa.
Dando-lhe outro nome: exclusão-mutua é um modo de assegurar que
outros processos sejam impedidos de usar uma variável ou arquivo que já
esteja a ser utilizado por um outro processo.
Região critica e aquela parte do programa em que existe acesso à memoria
partilhada.
Para chegar a uma boa solução de evitar as condições de disputa
precisamos satisfazer quatro soluções.
1. Nunca dois processos podem estar simultaneamente nas suas regiões
criticas;
2. Nada pode ser afirmado sobre a velocidade ou sobre o número de CPU’s ;
3. Nenhum processo executando fora da sua região critica pode bloquear
outros processos;
4. Nenhum processo deve esperar eternamente para entrar na sua região
critica;
38
Comunicação entre processos:
Exclusão mútua com espera ociosa
• Varias soluções para o problema das regiões critica. Mas todas elas
com o problema da espera ociosa. Quer isto dizer que quando um
processo entra na sua região critica nenhum outro pode entrar
nessa mesma região invadindo-a e causando danos.
• A espera ociosa faz com que os processos que querem entrar na
região estejam constantemente a perguntar se podem (averiguar
uma variável por exemplo) e isto não e muito bom pois assim
consome o tempo de CPU desnecessário.
Propostas para obtenção de exclusão mútua:
Soluções de hardware
–Desabilitar interrupções
–Instrução test-and-set (atomicidade): “variável global” na RAM
•Soluções de software
–Algoritmo de Dekker
–Algoritmo de Peterson
–Algoritmo de Lamport
Comunicação entre processos:
Exclusão mútua com espera ociosa
Solução de Peterson
Comunicação entre processos:
Exclusão mútua com espera ociosa
56
Semáforos
•Conceito proposto por E. W. Dijkstra (déiquistra), em 1965
•Mecanismo de sincronização não estruturado e complexo
•Permite implementar, de forma simples:
–Exclusão mútua e
–Sincronização entre processos
•Um dos principais mecanismos utilizados
–Nos projetos de SO e nas aplicações concorrentes
–Nas linguagens de programação (rotinas para semáforos)
•Um semáforo (S) é:
–Uma variável especial protegida pelo SO (não-negativa)
–Manipulada por duas instruções atômicas (indivisíveis)
• Down (decremento) e
• Up (incremento)
•Se S=zero e Down: thread fica em espera (não ocupada)
•Instruções são implementadas no hardware do processador
•Semáforo está associado a um recurso e pode ser
–binário (ou Mutex): {0;1}
–contador: qq valor inteiro, não-negativo
Semáforos
Semáforos
• Pipes
Exemplo: ps awux | grep httpd
Exemplos Semafóros
60
Monitores
• Conceito proposto por Brinch Hansen, em 1972
• Mecanismos de sincronização de alto nível que tentam tornar
mais fácil o desenvolvimento e correção de programas
concorrentes;
• Conjunto de procedimentos, variáveis e estrutura de dados
definidos dentro de um módulo;
• Somente um processo pode estar executando um dos
procedimentos do monitor em um determinado instante;
• Implementação da exclusão mútua nos monitores é realizada
pelo compilador;
• WAIT – Faz um processo entrar em estado de espera quando
uma variável de condição (estrutura de dados tipo fila) está
impedindo a liberação para outros processo;
• SIGNAL – Liberação do recurso pelo processo que o alocou.
Monitores
62
Troca de Mensagens
• Mecanismo de comunicação e sincronização entre processos.
• SEND – Envia uma mensagem a um processo receptor
• SEND (Receptor, Mensagem)
• RECEIVE – Recebe uma mensagem de um processo transmissor
• RECEIVE (Emissor, Mensagem)
• Não ocorre exclusão mútua;
• Uma mensagem só pode ser lida apos Ter sido enviada;
• Pode ocorrer perda de mensagens ACK (acknowledgement) – enviada
pelo processo receptor para informar o recebimento da mensagem;
• Se o emissor não receber um ACK em determinado tempo, reenvia a
mensagem;
• Endereçamento direto – só permite a comunicação entre dois processos;
• Endereçamento indireto – utiliza uma área compartilhada (buffer
conhecido como mailbox) onde as mensagens podem ser colocadas pelo
emissor e retiradas pelo receptor.
63
• Quando os dois processo se comunicam de forma síncrona, dizemos que
eles fazem um rendezvous (encontro, em francês “randevu”). Um
processo envia uma mensagem e fica esperando até que o receptor leia a
mensagem.
• Um receptor tenta receber uma mensagem e fica esperando até que o
processo transmissor grave alguma mensagem.
• Dispensa necessidade de buffers.
• A necessidade de espera reduz o grau de concorrência.
• Comunicação assíncrona: O transmissor não aguarda o recebimento da
mensagem.
• O receptor não aguarda o envio de uma mensagem.
• Necessita de buffers
• Maior paralelismo na execução dos processos em relação a síncrona.
Troca de Mensagens
64
Escalonamento
• Quando um computador é multiprogramado, ele muitas vezes tem
varias processos que competem pela CPU ao mesmo tempo;
• Está situação ocorre sempre que dois processos estão no estado
de pronto;
• Se apenas um CPU se encontra disponível, devera ser feita uma
escolha de qual processo executara primeiro;
• A parte do sistema operacional que faz essa escolha é chamada de
escalonador e o algoritmo que ele usa é o algoritmo de
escalonamento.
65
Escalonamento
• Quando um computador é multiprogramado, ele muitas vezes tem
varias processos que competem pela CPU ao mesmo tempo;
• Está situação ocorre sempre que dois processos estão no estado
de pronto;
• Se apenas um CPU se encontra disponível, devera ser feita uma
escolha de qual processo executara primeiro;
• A parte do sistema operacional que faz essa escolha é chamada de
escalonador e o algoritmo que ele usa é o algoritmo de
escalonamento.
66
Escalonamento: Objetivos do escalonador
67
• Filósofos comem/pensam
• Cada um precisa de 2
garfos para comer
• Cada filósofo tenta pegar
um garfo por vez
• Como prevenir deadlock?
Problemas Clássicos de IPC: Jantar dos Filósofos
68
• Jantar dos filósofos não é um problema estudado apenas
porque é legal;
• Ele representa a necessidade de alocar vários recursos para
diferentes processos, sem que ocorra deadlock e/ou
starvation;
• Ou mesmo de alocar recursos escassos;
Problemas Clássicos de IPC: Jantar dos Filósofos
69
Uma solução errada para o problema do jantar dos
filósofos - deadlock
Problemas Clássicos de IPC: Jantar dos Filósofos
70
• Que tal pegarmos um garfo e se não conseguir pegar o outro,
devolver o garfo e esperar um tempo fixo?
• Problema de espera de tempo:
• pode chegar a um caso de Starvation;
• E se esperar por um tempo aleatório?
• A maioria das vezes dá certo, mas nem sempre;
• Essas solução é usada em rede local Ethernet quando há
colisão de pacotes;
• Mas há problemas que exigem que a solução dê certo sempre:
controle de segurança de uma usina nuclear;
Problemas Clássicos de IPC: Jantar dos Filósofos
71
Jantar dos filósofos
• Que tal usarmos semáforo?
• Vamos proteger as 5 chamadas após o think() com um
semáforo;
• O que acontece?
72
Jantar dos Filósofos
Uma solução para o problema do jantar dos filósofos (parte 1)
73
Jantar dos Filósofos
Uma solução para o problema do jantar dos filósofos (parte 2)

Mais conteúdo relacionado

Mais procurados

Resumo de S.O.
Resumo de S.O.Resumo de S.O.
Resumo de S.O.
dannas_06
 
Processos threads senai
Processos threads senaiProcessos threads senai
Processos threads senai
Carlos Melo
 
Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1
Cristiano Pires Martins
 

Mais procurados (20)

Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)Sistemas Operacionais - Aula 06 (Estrutura do S.O)
Sistemas Operacionais - Aula 06 (Estrutura do S.O)
 
Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
sistemas operativos.ppt
sistemas operativos.pptsistemas operativos.ppt
sistemas operativos.ppt
 
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de OliveiraSistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
Sistemas Operacionais Processos e Threads - Wellington Pinto de Oliveira
 
Gerências de Processos: Threads
Gerências de Processos: ThreadsGerências de Processos: Threads
Gerências de Processos: Threads
 
Resumo de S.O.
Resumo de S.O.Resumo de S.O.
Resumo de S.O.
 
Sistemas operativos trabalho 10ºano
Sistemas operativos trabalho 10ºanoSistemas operativos trabalho 10ºano
Sistemas operativos trabalho 10ºano
 
Sistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockSistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 Deadlock
 
Processos threads senai
Processos threads senaiProcessos threads senai
Processos threads senai
 
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre ProcessosSistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
Sistemas Operacionais - Aula 8 - Sincronização e Comunicação entre Processos
 
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
 
Sistemas de arquivos
Sistemas de arquivosSistemas de arquivos
Sistemas de arquivos
 
Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Pseudoparalelismo
PseudoparalelismoPseudoparalelismo
Pseudoparalelismo
 
Barramento do Sistema - Arquitetura e Organização de Computadores
Barramento do Sistema - Arquitetura e Organização de ComputadoresBarramento do Sistema - Arquitetura e Organização de Computadores
Barramento do Sistema - Arquitetura e Organização de Computadores
 
Escalonamento no Windows
Escalonamento no WindowsEscalonamento no Windows
Escalonamento no Windows
 
Aula 5 manipulacao de arquivos e pastas
Aula 5   manipulacao de arquivos e pastasAula 5   manipulacao de arquivos e pastas
Aula 5 manipulacao de arquivos e pastas
 
Sistema operacional introdução
Sistema operacional introduçãoSistema operacional introdução
Sistema operacional introdução
 

Destaque

2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
Computação Depressão
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
Glaucio Scheibel
 
Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2
Cristiano Pires Martins
 
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
Computação Depressão
 
Hardware apresentação 5 - cpu e sockets
Hardware   apresentação 5 - cpu e socketsHardware   apresentação 5 - cpu e sockets
Hardware apresentação 5 - cpu e sockets
Luiz Pereira de Souza
 
Aula 22 caches associativas e associativas por conjunto
Aula 22   caches associativas e associativas por conjuntoAula 22   caches associativas e associativas por conjunto
Aula 22 caches associativas e associativas por conjunto
a Nunes
 
Esquema motherboard
Esquema motherboardEsquema motherboard
Esquema motherboard
cabaldreams
 

Destaque (20)

2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
 
Condições de corrida e regiões críticas
Condições de corrida e regiões críticasCondições de corrida e regiões críticas
Condições de corrida e regiões críticas
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: Sincronização
 
Prioridades de processos - nice e renice
Prioridades de processos - nice e renicePrioridades de processos - nice e renice
Prioridades de processos - nice e renice
 
Teste para alunos
Teste para alunosTeste para alunos
Teste para alunos
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
Criatividade e Processos de Criação
Criatividade e Processos de CriaçãoCriatividade e Processos de Criação
Criatividade e Processos de Criação
 
Criatividade e processos de criação - Fayga Ostrower
Criatividade e processos de criação - Fayga OstrowerCriatividade e processos de criação - Fayga Ostrower
Criatividade e processos de criação - Fayga Ostrower
 
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
 
Percepção Visual
Percepção VisualPercepção Visual
Percepção Visual
 
Criatividade e Processos de Criação, capítulo 1.
Criatividade e Processos de Criação, capítulo 1.Criatividade e Processos de Criação, capítulo 1.
Criatividade e Processos de Criação, capítulo 1.
 
Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2
 
Percepção visual
Percepção visualPercepção visual
Percepção visual
 
Motherboard: resumen gráfico
Motherboard: resumen gráficoMotherboard: resumen gráfico
Motherboard: resumen gráfico
 
Expandindo as oportunidades com Software Livre
Expandindo as oportunidades com Software LivreExpandindo as oportunidades com Software Livre
Expandindo as oportunidades com Software Livre
 
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
 
Hardware apresentação 5 - cpu e sockets
Hardware   apresentação 5 - cpu e socketsHardware   apresentação 5 - cpu e sockets
Hardware apresentação 5 - cpu e sockets
 
Aula 22 caches associativas e associativas por conjunto
Aula 22   caches associativas e associativas por conjuntoAula 22   caches associativas e associativas por conjunto
Aula 22 caches associativas e associativas por conjunto
 
Esquema motherboard
Esquema motherboardEsquema motherboard
Esquema motherboard
 

Semelhante a Processos e threads cap 02 (i unidade)

2 organização do sistema operativo - sistemas operativos
2   organização do sistema operativo - sistemas operativos2   organização do sistema operativo - sistemas operativos
2 organização do sistema operativo - sistemas operativos
Maria194536
 
Fso parte iii
Fso parte iiiFso parte iii
Fso parte iii
paulocsm
 
Aula3 escalonamento
Aula3 escalonamentoAula3 escalonamento
Aula3 escalonamento
Bruno Rick
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
Silvino Neto
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional
Rodrigo Rodrigues
 

Semelhante a Processos e threads cap 02 (i unidade) (20)

Apresentacao Aula04 So
Apresentacao Aula04 SoApresentacao Aula04 So
Apresentacao Aula04 So
 
Arquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsArquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e Threads
 
Processos
ProcessosProcessos
Processos
 
Processos+threads.2pp
Processos+threads.2ppProcessos+threads.2pp
Processos+threads.2pp
 
2 organização do sistema operativo - sistemas operativos
2   organização do sistema operativo - sistemas operativos2   organização do sistema operativo - sistemas operativos
2 organização do sistema operativo - sistemas operativos
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
Fso parte iii
Fso parte iiiFso parte iii
Fso parte iii
 
Aula3 escalonamento
Aula3 escalonamentoAula3 escalonamento
Aula3 escalonamento
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Lecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptxLecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptx
 
Sistemas operacionais - aula8
Sistemas operacionais - aula8Sistemas operacionais - aula8
Sistemas operacionais - aula8
 
Regiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisRegiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas Operacionais
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de Código
 
SO02 - Sistemas-Operacionais - Gerencia de Processos.pdf
SO02 - Sistemas-Operacionais - Gerencia de Processos.pdfSO02 - Sistemas-Operacionais - Gerencia de Processos.pdf
SO02 - Sistemas-Operacionais - Gerencia de Processos.pdf
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Componentes do Sistema operacional
Componentes do Sistema operacional Componentes do Sistema operacional
Componentes do Sistema operacional
 
Sistemas operacionais 04
Sistemas operacionais   04Sistemas operacionais   04
Sistemas operacionais 04
 
(ACH2044) Sistemas Operacionais - Aula 05
(ACH2044) Sistemas Operacionais - Aula 05(ACH2044) Sistemas Operacionais - Aula 05
(ACH2044) Sistemas Operacionais - Aula 05
 
ProcessosEscalonamento.pdf
ProcessosEscalonamento.pdfProcessosEscalonamento.pdf
ProcessosEscalonamento.pdf
 
Coroutine e concorrência python
Coroutine e concorrência   python Coroutine e concorrência   python
Coroutine e concorrência python
 

Mais de Faculdade Mater Christi

Capítulo 6 e 8 comutação e multiplexação (3º unidade)
Capítulo 6 e 8   comutação e multiplexação (3º unidade)Capítulo 6 e 8   comutação e multiplexação (3º unidade)
Capítulo 6 e 8 comutação e multiplexação (3º unidade)
Faculdade Mater Christi
 
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
Capítulo 5 e 4   transmissão analógica e digital (2º unidade)Capítulo 5 e 4   transmissão analógica e digital (2º unidade)
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
Faculdade Mater Christi
 
Capítulo 3 dados e sinais (1º unidade)
Capítulo 3   dados e sinais (1º unidade)Capítulo 3   dados e sinais (1º unidade)
Capítulo 3 dados e sinais (1º unidade)
Faculdade Mater Christi
 
Capítulo 1 introdução a comunicação de dados(1º unidade)
Capítulo 1   introdução a comunicação de dados(1º unidade)Capítulo 1   introdução a comunicação de dados(1º unidade)
Capítulo 1 introdução a comunicação de dados(1º unidade)
Faculdade Mater Christi
 
Capítulo 10 detecção e correção de erros
Capítulo 10   detecção e correção de errosCapítulo 10   detecção e correção de erros
Capítulo 10 detecção e correção de erros
Faculdade Mater Christi
 
Capítulo 23 comunicação entre processos
Capítulo 23   comunicação entre processosCapítulo 23   comunicação entre processos
Capítulo 23 comunicação entre processos
Faculdade Mater Christi
 
Capítulo 19 camada de rede - end lógico
Capítulo 19   camada de rede - end lógicoCapítulo 19   camada de rede - end lógico
Capítulo 19 camada de rede - end lógico
Faculdade Mater Christi
 
Capítulo 15 conexões de lans, redes backbone e lans virtuais
Capítulo 15   conexões de lans, redes backbone e lans virtuaisCapítulo 15   conexões de lans, redes backbone e lans virtuais
Capítulo 15 conexões de lans, redes backbone e lans virtuais
Faculdade Mater Christi
 
Capítulo 20 camada de rede - internet protocol
Capítulo 20   camada de rede - internet protocolCapítulo 20   camada de rede - internet protocol
Capítulo 20 camada de rede - internet protocol
Faculdade Mater Christi
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)
Faculdade Mater Christi
 
Introdução aos sistemas operacionais cap 01 (i unidade)
Introdução aos sistemas operacionais cap 01 (i unidade)Introdução aos sistemas operacionais cap 01 (i unidade)
Introdução aos sistemas operacionais cap 01 (i unidade)
Faculdade Mater Christi
 
Conceitos de hardware e software cap 02 (i unidade)
Conceitos de hardware e software cap 02 (i unidade)Conceitos de hardware e software cap 02 (i unidade)
Conceitos de hardware e software cap 02 (i unidade)
Faculdade Mater Christi
 

Mais de Faculdade Mater Christi (16)

Capítulo 6 e 8 comutação e multiplexação (3º unidade)
Capítulo 6 e 8   comutação e multiplexação (3º unidade)Capítulo 6 e 8   comutação e multiplexação (3º unidade)
Capítulo 6 e 8 comutação e multiplexação (3º unidade)
 
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
Capítulo 5 e 4   transmissão analógica e digital (2º unidade)Capítulo 5 e 4   transmissão analógica e digital (2º unidade)
Capítulo 5 e 4 transmissão analógica e digital (2º unidade)
 
Capítulo 3 dados e sinais (1º unidade)
Capítulo 3   dados e sinais (1º unidade)Capítulo 3   dados e sinais (1º unidade)
Capítulo 3 dados e sinais (1º unidade)
 
Capítulo 1 introdução a comunicação de dados(1º unidade)
Capítulo 1   introdução a comunicação de dados(1º unidade)Capítulo 1   introdução a comunicação de dados(1º unidade)
Capítulo 1 introdução a comunicação de dados(1º unidade)
 
Capítulo 10 detecção e correção de erros
Capítulo 10   detecção e correção de errosCapítulo 10   detecção e correção de erros
Capítulo 10 detecção e correção de erros
 
Capítulo 23 comunicação entre processos
Capítulo 23   comunicação entre processosCapítulo 23   comunicação entre processos
Capítulo 23 comunicação entre processos
 
Capítulo 19 camada de rede - end lógico
Capítulo 19   camada de rede - end lógicoCapítulo 19   camada de rede - end lógico
Capítulo 19 camada de rede - end lógico
 
Capítulo 15 conexões de lans, redes backbone e lans virtuais
Capítulo 15   conexões de lans, redes backbone e lans virtuaisCapítulo 15   conexões de lans, redes backbone e lans virtuais
Capítulo 15 conexões de lans, redes backbone e lans virtuais
 
Capítulo 2 modelos de redes
Capítulo 2   modelos de redesCapítulo 2   modelos de redes
Capítulo 2 modelos de redes
 
Capítulo 20 camada de rede - internet protocol
Capítulo 20   camada de rede - internet protocolCapítulo 20   camada de rede - internet protocol
Capítulo 20 camada de rede - internet protocol
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)
 
Introdução aos sistemas operacionais cap 01 (i unidade)
Introdução aos sistemas operacionais cap 01 (i unidade)Introdução aos sistemas operacionais cap 01 (i unidade)
Introdução aos sistemas operacionais cap 01 (i unidade)
 
Introdução à sistemas distribuídos
Introdução à sistemas distribuídosIntrodução à sistemas distribuídos
Introdução à sistemas distribuídos
 
Impasses cap 06 (ii unidade)
Impasses cap 06 (ii unidade)Impasses cap 06 (ii unidade)
Impasses cap 06 (ii unidade)
 
Entrada e saida cap 05 (iii unidade)
Entrada e saida  cap 05 (iii unidade)Entrada e saida  cap 05 (iii unidade)
Entrada e saida cap 05 (iii unidade)
 
Conceitos de hardware e software cap 02 (i unidade)
Conceitos de hardware e software cap 02 (i unidade)Conceitos de hardware e software cap 02 (i unidade)
Conceitos de hardware e software cap 02 (i unidade)
 

Processos e threads cap 02 (i unidade)

  • 1. Sistemas operacionais modernos Terceira edição ANDREW S. TANENBAUM Capítulo 2 Processos e Threads Adaptado por: Prof. Esp. Rodrigo Ronner rodrigoronner@gmail.com http://rodrigoronner.blogspot.com
  • 3. Processos • Processo – entidade dinâmica que consiste num programa em execução, os seus valores correntes, informação de estado e recursos utilizados pelo sistema operativo na gestão da execução do processo; • Um processo constitui uma atividade. Ele possui programa, entrada, saída e um estado. Um único processador pode ser compartilhado entre os vários processos, com algum algoritmo de escalonamento usado para determinar quando parar o trabalho sobre um processo e servir um outro; • Todos computadores modernos são capazes de fazer várias coisas ao mesmo tempo; • Em qualquer sistema multiprogramado, a CPU chaveia de programa para programa, executando cada um deles por dezenas ou centenas de milissegundos;
  • 4. 4 Processos - O Modelo de Processo • (a) Multiprogramação de quatro programas • (b) Modelo conceitual de 4 processos sequenciais, independentes • (c) Somente um programa está ativo a cada momento
  • 5. 5 Processos – LINUX • Comandos da shell • ps – listar processos • pstree – ver hierarquia dos processos • top – ver informações adicionais sobre os processos • kill – enviar sinal a um processo (pode ser um sinal para terminar outro processo) • Chamadas ao sistema • fork() – criar um novo processo filho • exit(.) – terminar processo • kill(.) – enviar sinal a um outro processo
  • 6. 6 Processos – Windows 2000 • TaskManager • visualizar os processos que estão a correr • possibilita ao utilizador a terminação de processos • Chamadas ao sistema • CreateProcess(.) – criação de processos • ExitProcess(.) – saída voluntária • TerminateProcess(.) – terminação de outro processo
  • 7. Processos – Criação de Processos Há quatro eventos principais que fazem com que processos sejam criados: 1. Inicio do sistema 2. Execução de uma chamada ao sistema de criação de processo por um processo em execução 3. Uma requisição do usuário para criar um novo processo 4. Inicio de um Job em lote. Tecnicamente, em todos estes casos, um novo processo e criado por um processo existente executando uma chamada ao sistema de criação de processo.
  • 8. Processos – Término de Processos Depois de criado, um processo começa a executar e faz o seu trabalho. Mais cedo ou mais tarde o processo terminara, normalmente por uma das seguintes razoes: • Saída normal (voluntária) – Na maioria das vezes os processos terminam porque fizeram o seu trabalho. Outra saída normal e por exemplo quando o utilizador sai do programa como deve ser. (A cruz da janela por exemplo) • Saída por erro (voluntária) – Quando o processo descobre um erro fatal. O processo emite uma chamada de saída ao sistema. • Erro fatal (involuntário) – Quando o erro e causado pelo processo, muitas vezes um erro de programa. Exemplos: quando encontra uma divisão por zero, instrução ilegal, etc. • Cancelamento por um outro processo (involuntário) – Quando um processo executa uma chamada ao sistema dizendo para cancelar algum outro processo. Em linux: kill
  • 9. 9 Processos – Hierarquias de Processos • Pai cria um processo filho, processo filho pode criar seu próprio processo; • Formam uma hierarquia; • UNIX chama isso de “grupo de processos”. • Windows não possui o conceito de hierarquia de processos; • Todos os processos são criados iguais.
  • 10. 10 Processos - Estados de Processos (1) • Possíveis estados de processos • Em execução (Realmente usando a CPU naquele instante). • Bloqueado (Incapaz de executar enquanto não ocorrer um evento externo). • Pronto (executável; temporariamente parado para dar lugar a outro processo). • Mostradas as transições entre os estados
  • 11. 11 Processos - Estados de Processos (2) Mostradas as transições entre os estados • Execução -> Bloqueado: quando um processo descobre que não pode prosseguir passa para o estado de bloqueado: • Ex: cat teste | grep tree o processo do grep tem de esperar pela saída do processo cat. Se o processo grep tem tempo de CPU e o processo cat ainda não terminou então o grep passa para o estado de bloqueado.
  • 12. 12 Processos - Estados de Processos (3) Mostradas as transições entre os estados • Execução -> Pronto e Pronto -> Execução: transições causadas pelo escalonador de processos, gerenciamento de tempo de CPU, Execução -> Pronto ocorre quando o escalonador de processos decide que o processo em execução já teve o seu tempo de CPU, e Pronto -> Execução ocorre quando já todos os processos estiveram em execução volta novamente para o mesmo.
  • 13. 13 Processos - Estados de Processos (4) Mostradas as transições entre os estados • Bloqueado -> Pronto: ocorre quando o processo que estava no estado bloqueado tem disponível aquilo que estava à espera. Se o CPU estiver livre esse processo passa logo para o estado de Execução, senão fica a aguardar até chegar a sua vez.
  • 14. Processos: I/O-bound x CPU-bound •CPU-bound (ligado à CPU) –Maior parte do tempo em estado de execução –Ou seja: usando o processador •I/O-bound (ligado à E/S) –Maior parte do tempo em estado de bloqueado –Ou seja: fazendo E/S •Pode: iniciar CPU-bound e tornar-se I/O-bound (e vice-versa) •Mais eficiente: revezamento entre CPU-bound e I/O-bound
  • 15. Gerenciamento de processos •SO organiza os processos da fila de prontos •Periodicamente o ESCALONADOR de processos: –Escolhe um processo da fila para executar –Critério de escolha pode variar •Alguns critérios usados para escalonamento –Ordem de chegada dos processos –Fatia de tempo demandada pelo processo –Prioridade do processo •Outros nomes para ESCALONADOR/ESCALONAMENTO: –Despachante/despacho –Dispatcher/dispatch •Quando um processo solicita uma operação de E/S –Ele é interrompido e desviado para a fila de bloqueado –Posteriormente, ele retornará para o fim da fila de pronto –Então, será submetido ao critério de escalonamento da fila •Preempção: capacidade do SO de –Interromper um processo a qualquer instante (a seu critério) –Retomar a execução a partir do ponto de interrupção
  • 16. Bloco de controle do processo (PCB) • Ao criar um processo, o SO cria um BCP (PCB) –É uma tabela com informações relativas ao processo –Reside na RAM enquanto o processo existe –Acesso exclusivo do SO Bloco de Controle do Processo (ou Descritor do Processo)
  • 18. Threads • É o fluxo de controle de um processo. Permitem que múltiplas execuções ocorram no mesmo ambiente do processo com um grande grau de independência uma da outra. • Cada thread tem a sua própria pilha. Isso e fácil e perceber porque normalmente cada thread chama procedimentos diferentes… ou se chamam os mesmos o que se vai passar, e diferente para cada thread, então e necessário que cada thread tenha a sua pilha. • A pilha tem uma estrutura aonde são guardadas as variáveis locais de um procedimento e o endereço de retorno para usa-lo quando o procedimento terminar
  • 19. Threads – O uso de thread • A principal razão para existirem threads é que em muitas aplicações ocorrem múltiplas atividades ao mesmo tempo. • Algumas dessas atividades podem bloquear de tempos em tempos. • O modelo de programação torna-se mais simples se decompormos uma aplicação em varias threads sequenciais que executam quase em paralelo. • O paralelismo das threads é o mesmo que existe para os processos mas neste caso as threads de um mesmo processo utilizam todas o mesmo espaço de endereçamento. • Uma segunda razão para o uso de threads tem a ver com o fato de serem mais fáceis de criar e de destruir do que os processos, pois não tem quaisquer recursos associados a eles. • Em muitos sistemas criar threads e muito mais rápido que criar processos. Esta propriedade e útil quando o numero de threads necessários se altera dinâmica e rapidamente. • O desempenho também e uma razão para o uso e threads pois quando existe uma grande quantidade de computação e de ES, os threads permitem que essas atividades se sobreponham e desse modo aceleram a aplicação.
  • 20. Aplicações típicas de threads •Servidor WEB –Cada solicitação de cliente: ativa uma thread (operária) –Processo pai • Atende às novas solicitações que chegam • Despacham threads operárias para execução •Servidor de BD –Cada query de usuário: ativa uma thread (operária) –Processo pai: igual ao exemplo anterior •Processador de texto –Uma rotina básica de captura de teclas (principal) –Com menor prioridade, pode implementar threads para: • Formatar o texto • Fazer revisão ortográfica • Fazer revisão gramatical • Salvar automaticamente o texto (a cada 15 minutos) •Paralelismo: visa aumentar o desempenho (processo e SO)
  • 21. 21 Threads - Uso de Thread (1) Um processador de texto com três threads
  • 22. 22 Threads - O Modelo de Thread (2) Cada thread tem sua própria pilha
  • 23. 23 Threads - Uso de Thread (3) Um servidor web com múltiplos threads
  • 24. 24 Threads – O Modelo de Thread Clássico (1) (a) Três processos cada um com um thread (b) Um processo com três threads
  • 25. 25 Threads – O Modelo de Thread Clássico (2) • Items compartilhados por todos os threads em um processo; • Itens privativos de cada thread;
  • 26. 26 Threads – Implementação de threads no espaço do usuário Sucintamente: O usuário cria um processo e depois é o próprio processo que gerência as suas threads. O processo tem uma tabela de threads, gerida por um sistema supervisor, para manter o controle sobre elas, tabela essa que é em tudo parecida a tabela de processos do núcleo. Vantagens: quando uma thread decide parar de executar, a informação da thread e guardada na tabela de threads e o escalonador de threads pode ser chamado pela parada daquela thread e selecionar outra thread para executar. A vantagem disto é que é mais eficiente, o escalonador de threads e o guardar a informação da thread na tabela assim do que fazer uma chamada ao núcleo. Outra vantagem e cada processo pode ter o seu algoritmo de escalonamento personalizado.
  • 27. 27 Threads – Implementação de threads de núcleo • Contrariamente a implementação de threads de usuário, a implementação de threads de núcleo funciona com o núcleo a gerir as duas tabelas, a de processos bem como a das threads. • Esta tabela das threads acompanha todas as threads do sistema, enquanto que na implementação de threads de usuário cada tabela de threads apenas gerência as threads correspondentes a um processo.
  • 28. 28 Threads – Implementação de threads no espaço do usuário
  • 31. 31 Comunicação entre processos Frequentemente processos precisam se comunicar com outros. Há três tópicos em relação a isso: • O primeiro é como um processo passa informação para um outro; • O Segundo é como garantir que dois ou mais processos não entrem em conflito; • O Terceiro é como como uma sequência adequada quando existirem dependências: se o processo A produz dados e o processo B os imprime, B deve esperar até que A produza alguns dados antes de iniciar a impressão.
  • 32. Pipe
  • 33. 33 Comunicação entre processos: Condições de Disputa (ou de Corrida) • Situações que 2 ou mais processos estão lendo ou escrevendo algum dado compartilhado e cujo resultado final depende da ordem de execução; • Pergunta: isso quer dizer que uma máquina no Brasil e outra no Japão, cada uma com processos que se comunicam, nunca terão Condições de Disputa?
  • 34. 34 Ex.:Vagaemavião 1. Operador OP1 (no Brasil) lê Cadeira1 vaga; 2. Operador OP2 (no Japão) lê Cadeira1 vaga; 3. Operador OP1 compra Cadeira1; 4. Operador OP2 compra Cadeira1; Comunicação entre processos: Condições de Disputa (ou de Corrida)
  • 35. 35 Exemplo: As vagas 0 a 3 estão vazias (os arquivos já foram impressos) e as vagas 4 e 6 estão preenchidas (com os nomes dos arquivos na fila de impressão). Mais ou menos simultaneamente, os processos A e B decidem que querem colocar um arquivo na fila de impressão. • O processo A lê in e armazena o valor 7, na variável local; • Logo em seguida ocorre interrupção do relógio e a CPU decide que o Processo A já executou suficiente. Então chaveia para processo B; • Este também lê entrada e obtém igualmente um 7; • Ele do mesmo modo, armazena o 7 em sua variável local; • Neste instante, ambos os processos pensam que a próxima vaga disponível é a 7; • O processo B prossegue sua execução. Ele armazena o nome de seu arquivo na vaga 7 e atualiza in com 8. A partir disso, ele fará outras coisas. • Eventualmente, o processo A executa novamente a partir de onde parou. • Verifica próxima vaga livre, encontra lá um 7 e escreve seu nome de arquivo na vaga 7. • Apagando o nome que o processo B acabou de por lá. • Então ele calcula próxima vaga livre + 1, que é 8, e põe 8 em in. O que aconteceu com processo B??? Comunicação entre processos: Condições de Disputa (ou de Corrida)
  • 36. 36 Comunicação entre processos: Condição de Corrida Dois processos querem ter acesso simultaneamente à memória compartilhada
  • 37. 37 Comunicação entre processos: Regiões críticas As regiões criticas são a resposta para evitar o problema das condições de disputa. Dando-lhe outro nome: exclusão-mutua é um modo de assegurar que outros processos sejam impedidos de usar uma variável ou arquivo que já esteja a ser utilizado por um outro processo. Região critica e aquela parte do programa em que existe acesso à memoria partilhada. Para chegar a uma boa solução de evitar as condições de disputa precisamos satisfazer quatro soluções. 1. Nunca dois processos podem estar simultaneamente nas suas regiões criticas; 2. Nada pode ser afirmado sobre a velocidade ou sobre o número de CPU’s ; 3. Nenhum processo executando fora da sua região critica pode bloquear outros processos; 4. Nenhum processo deve esperar eternamente para entrar na sua região critica;
  • 38. 38 Comunicação entre processos: Exclusão mútua com espera ociosa • Varias soluções para o problema das regiões critica. Mas todas elas com o problema da espera ociosa. Quer isto dizer que quando um processo entra na sua região critica nenhum outro pode entrar nessa mesma região invadindo-a e causando danos. • A espera ociosa faz com que os processos que querem entrar na região estejam constantemente a perguntar se podem (averiguar uma variável por exemplo) e isto não e muito bom pois assim consome o tempo de CPU desnecessário.
  • 39. Propostas para obtenção de exclusão mútua: Soluções de hardware –Desabilitar interrupções –Instrução test-and-set (atomicidade): “variável global” na RAM •Soluções de software –Algoritmo de Dekker –Algoritmo de Peterson –Algoritmo de Lamport Comunicação entre processos: Exclusão mútua com espera ociosa
  • 40. Solução de Peterson Comunicação entre processos: Exclusão mútua com espera ociosa
  • 41. 56 Semáforos •Conceito proposto por E. W. Dijkstra (déiquistra), em 1965 •Mecanismo de sincronização não estruturado e complexo •Permite implementar, de forma simples: –Exclusão mútua e –Sincronização entre processos •Um dos principais mecanismos utilizados –Nos projetos de SO e nas aplicações concorrentes –Nas linguagens de programação (rotinas para semáforos) •Um semáforo (S) é: –Uma variável especial protegida pelo SO (não-negativa) –Manipulada por duas instruções atômicas (indivisíveis) • Down (decremento) e • Up (incremento) •Se S=zero e Down: thread fica em espera (não ocupada) •Instruções são implementadas no hardware do processador •Semáforo está associado a um recurso e pode ser –binário (ou Mutex): {0;1} –contador: qq valor inteiro, não-negativo
  • 44. • Pipes Exemplo: ps awux | grep httpd Exemplos Semafóros
  • 45. 60 Monitores • Conceito proposto por Brinch Hansen, em 1972 • Mecanismos de sincronização de alto nível que tentam tornar mais fácil o desenvolvimento e correção de programas concorrentes; • Conjunto de procedimentos, variáveis e estrutura de dados definidos dentro de um módulo; • Somente um processo pode estar executando um dos procedimentos do monitor em um determinado instante; • Implementação da exclusão mútua nos monitores é realizada pelo compilador; • WAIT – Faz um processo entrar em estado de espera quando uma variável de condição (estrutura de dados tipo fila) está impedindo a liberação para outros processo; • SIGNAL – Liberação do recurso pelo processo que o alocou.
  • 47. 62 Troca de Mensagens • Mecanismo de comunicação e sincronização entre processos. • SEND – Envia uma mensagem a um processo receptor • SEND (Receptor, Mensagem) • RECEIVE – Recebe uma mensagem de um processo transmissor • RECEIVE (Emissor, Mensagem) • Não ocorre exclusão mútua; • Uma mensagem só pode ser lida apos Ter sido enviada; • Pode ocorrer perda de mensagens ACK (acknowledgement) – enviada pelo processo receptor para informar o recebimento da mensagem; • Se o emissor não receber um ACK em determinado tempo, reenvia a mensagem; • Endereçamento direto – só permite a comunicação entre dois processos; • Endereçamento indireto – utiliza uma área compartilhada (buffer conhecido como mailbox) onde as mensagens podem ser colocadas pelo emissor e retiradas pelo receptor.
  • 48. 63 • Quando os dois processo se comunicam de forma síncrona, dizemos que eles fazem um rendezvous (encontro, em francês “randevu”). Um processo envia uma mensagem e fica esperando até que o receptor leia a mensagem. • Um receptor tenta receber uma mensagem e fica esperando até que o processo transmissor grave alguma mensagem. • Dispensa necessidade de buffers. • A necessidade de espera reduz o grau de concorrência. • Comunicação assíncrona: O transmissor não aguarda o recebimento da mensagem. • O receptor não aguarda o envio de uma mensagem. • Necessita de buffers • Maior paralelismo na execução dos processos em relação a síncrona. Troca de Mensagens
  • 49. 64 Escalonamento • Quando um computador é multiprogramado, ele muitas vezes tem varias processos que competem pela CPU ao mesmo tempo; • Está situação ocorre sempre que dois processos estão no estado de pronto; • Se apenas um CPU se encontra disponível, devera ser feita uma escolha de qual processo executara primeiro; • A parte do sistema operacional que faz essa escolha é chamada de escalonador e o algoritmo que ele usa é o algoritmo de escalonamento.
  • 50. 65 Escalonamento • Quando um computador é multiprogramado, ele muitas vezes tem varias processos que competem pela CPU ao mesmo tempo; • Está situação ocorre sempre que dois processos estão no estado de pronto; • Se apenas um CPU se encontra disponível, devera ser feita uma escolha de qual processo executara primeiro; • A parte do sistema operacional que faz essa escolha é chamada de escalonador e o algoritmo que ele usa é o algoritmo de escalonamento.
  • 52. 67 • Filósofos comem/pensam • Cada um precisa de 2 garfos para comer • Cada filósofo tenta pegar um garfo por vez • Como prevenir deadlock? Problemas Clássicos de IPC: Jantar dos Filósofos
  • 53. 68 • Jantar dos filósofos não é um problema estudado apenas porque é legal; • Ele representa a necessidade de alocar vários recursos para diferentes processos, sem que ocorra deadlock e/ou starvation; • Ou mesmo de alocar recursos escassos; Problemas Clássicos de IPC: Jantar dos Filósofos
  • 54. 69 Uma solução errada para o problema do jantar dos filósofos - deadlock Problemas Clássicos de IPC: Jantar dos Filósofos
  • 55. 70 • Que tal pegarmos um garfo e se não conseguir pegar o outro, devolver o garfo e esperar um tempo fixo? • Problema de espera de tempo: • pode chegar a um caso de Starvation; • E se esperar por um tempo aleatório? • A maioria das vezes dá certo, mas nem sempre; • Essas solução é usada em rede local Ethernet quando há colisão de pacotes; • Mas há problemas que exigem que a solução dê certo sempre: controle de segurança de uma usina nuclear; Problemas Clássicos de IPC: Jantar dos Filósofos
  • 56. 71 Jantar dos filósofos • Que tal usarmos semáforo? • Vamos proteger as 5 chamadas após o think() com um semáforo; • O que acontece?
  • 57. 72 Jantar dos Filósofos Uma solução para o problema do jantar dos filósofos (parte 1)
  • 58. 73 Jantar dos Filósofos Uma solução para o problema do jantar dos filósofos (parte 2)