Escolar Documentos
Profissional Documentos
Cultura Documentos
Processos e Theards
Processos e Theards
2.1 Processos 2.2 Threads 2.3 Comunicao interprocesso 2.4 Problemas clssicos de IPC 2.5 Escalonamento
1
Processos
O Modelo de Processo
Multiprogramao de quatro programas Modelo conceitual de 4 processos sequenciais, independentes Somente um programa est ativo a cada momento
2
Criao de Processos
Principais eventos que levam criao de processos
- Incio do sistema - Execuo de chamada ao sistema de criao de processos - Solicitao do usurio para criar um novo processo - Incio de um job em lote
3
Trmino de Processos
Condies que levam ao trmino de processos
Sada normal (voluntria) Sada por erro (voluntria) Erro fatal (involuntrio) Cancelamento por um outro processo (involuntrio)
4
Hierarquias de Processos
Pai cria um processo filho, processo filho pode criar seu prprio processo Formam uma hierarquia
UNIX chama isso de grupo de processos
CPU
E/S
Fila de E/S
Solicitao de E/S
Quantum Expirado
Filho executa
Interrupo ocorre
Espera interrupo
O Modelo da Thread
Recursos particulares (PC, registradores, pilha) Recursos compartilhados (espao de endereo variveis globais, arquivos etc) Mltiplas execues no mesmo ambiente do processo com certa independncia entre as execues
Analogia
Execuo de mltiplos threads em paralelo em um processo (multithreading) e Execuo de mltiplos processos em paralelo em um computador
11
(a) Trs processos cada um com um thread (b) Um processo com trs threads
12
Items compartilhados por todos os threads em um processo Itens privativos de cada thread
13
thread_wait (thread2)
thread 1 bloqueia at que thread 2 termine
thread yield
Renuncia CPU em prol de outro thread
thread_status
Retorna o estado atual do thread
16
23
24
Threads podem ser implementados em S.O. que no suporta thread Cada processo precisa ter sua tabela de threads So gerenciados pelo sistema de gerenciamento de threads (runtime system) atravs de coleo de procedimentos de biblioteca Criao de thread novo, chaveamento entre threads e sincronizao de threads => feitos via chamada de procedimento Aes de uma chamada de procedimento:
Verifica se thread muda para estado bloqueado Salva PC, pilha, registradores Busca na tabela de threads prontos para rodar Carrega PC e ponteiro de pilha => novo thread comea a rodar
Chaveamento de thread uma ordem de magnitude mais rpido que mudar para o modo ncleo (grande vantagem sobre implementao no ncleo) Cada processo pode ter seu prprio algoritmo de escalonamento de threads personalizado
26
Solues Possveis:
Alterar todas as chamadas do sistema para no bloqueantes
Requer alterao do sistema operacional Requer alteraes em vrios programas do usurio (alterao da semntica da chamada)
Envelopar as chamadas do sistema com procedimento que verifica se a chamada vai bloquear ou no
Ex.: select do Unix read substitudo por outro read que primeiro faz a chamada select se a chamada vai bloquear, adiada => roda outro thread
27
Gerenciamento de threads atravs de chamadas para o ncleo (tabela de threads) reciclagem de threads Chamadas que podem bloquear um thread
implementadas como chamadas ao sistema
O que faz o ncleo quando um thread bloqueia? No requer modificaes nas chamadas ao sistema
Desvantagem
Custo alto => chamadas ao sistema
30
Implementaes Hbridas(1)
Implementaes Hbridas(2)
Threads no usurio no usam truques como chamadas especiais no bloqueantes
Se tiver que bloquear => deve ser possvel rodar outros threads do mesmo processo (se prontos)
Thread espera por outro thread => no envolve o ncleo (sistema de execuo runtime system trata isso) Uso de upcall
ncleo sabe que thread bloqueou ncleo notifica sistema de execuo (passa ID do thread e descrio do evento ocorrido) ncleo ativa sistema de execuo (num endereo conhecido) Sistema de execuo re-escala seus threads (pega da lista de prontos, seta registradores e inicializa)
32
Ativaes do Escalonador
Objetivo imitar a funcionalidade dos threads de ncleo
ganha desempenho de threads de usurio
Evita transies usurio/ncleo desnecessrias Ncleo atribui processadores virtuais para cada processo
deixa o sistema supervisor alocar threads para processadores
Problema: Baseia-se fundamentalmente nos upcalls - o ncleo (camada inferior) chamando procedimentos no espao do usurio (camada superior)
33
Threads Pop-Up
Cdigo de procedimentos de biblioteca no so reentrantes (segunda chamada para procedimento no feita enquanto primeira no foi finalizada)
Reescrever a bilbioteca Flag que indica que biblioteca est em uso elimina paralelismo Reprojetar o sistema (no mnimo redefinir semntica das chamadas, reescrever bibliotecas) mantendo compatibilidade com programas e aplicaes atuais.
36
Comunicao Interprocesso
Condies de Disputa
42
Dormir e Acordar
44
Semforos
45
Mutexes
Monitores (1)
Exemplo de um monitor
47
Monitores (2)
Monitores (3)
Soluo para o problema do produtorconsumidor em Java
49
Monitores (4)
50
Troca de Mensagens
51
Barreiras
52
53
54
56
57
58
59
Escalonamento
Introduo ao Escalonamento (1)
Tempo de retorno
(a) 8 para A 12 para B 16 para C 56 4 14 20 para D (b) 4 para B 8 para C 12 para D 20 para A 44 4 11
(b)
1 1
C D E
1 + 2 + 3 + 5 + 9 = 20
5 4
23
5 4.6
22
5 4.4
63
i?1
Ci ?1 Pi
67