Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouOrlando de Sequeira Bandeira Alterado mais de 8 anos atrás
1
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Prof: Gustavo Wagner gugawag@gmail.com
2
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 2 Processos e Threads Capítulo 2 2.1 Processos 2.2 Threads 2.3 Comunicação interprocesso 2.4 Problemas clássicos de IPC 2.5 Escalonamento
3
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 3 Threads Como fazer um jogo de computador? Como fazer cada boneco andar independentemente; Como atualizar a interface gráfica? Como se comunicar com os outros jogadores em outras máquinas?
4
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 4 Threads Em SO tradicionais (leia-se antigos), o processo representa uma única thread (único fluxo de execução); Há casos que são necessários múltiplos fluxos de execução: jogo de computador;
5
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 5 Threads O processo é um agrupamento de recursos relacionados: –Memória, arquivos abertos, processos filhos, etc; Thread é o fluxo de execução do processo: –Tem PC, PSW, registradores, pilha;
6
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 6 Processos x Threads Processos servem para agrupar recursos; Threads servem para serem escalonadas na CPU; Múltiplas threads (pertencentes a um único processo) em execução é análogo a ter múltiplos processos em execução; Threads: compartilham mesmo espaço de endereçamento do processo, arquivos abertos, etc; Processos: compartilham memória, impressora, discos, etc;
7
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 7 Threads Threads são chamadas de processos leves, pois são mais “baratas” de serem criadas;
8
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 8 Threads O Modelo de Thread (a)Três processos cada um com um thread (b) Um processo com três threads
9
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 9 Multithread Dá a mesma ilusão de paralelismo pela troca constante na CPU; Não há a mesma independência entre threads como há entre processos; Uma thread, por exemplo, pode apagar completamente a pilha de outra thread;
10
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 10 Proteção entre threads Não há, porque: –É impossível; –Não é necessário, pois o programador não será malicioso com ele mesmo;
11
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 11 O Modelo de Thread Items compartilhados por todas as threads em um processo Itens privativos de cada thread Passam pelos mesmos estados que os processos;
12
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 12 Início de um processo Há apenas uma única thread; Chamadas nas threads: –Thread_exit; –Thread_wait; –Thread_yield; Yield é necessário pois não há interrupção de relógio;
13
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 13 Benefícios de Threads Se uma thread bloquear, outras threads do processo podem continuar executando (só thread de núcleo); Compartilhamento de recursos: threads de um processo compartilham o mesmo espaço de endereçamento; Economia: mais fácil de serem criadas e destruídas (100x mais rápido);
14
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 14 Benefícios de Threads Execução de várias atividades de uma aplicação ao mesmo tempo; Processos com threads I/O bound (orientadas a I/O) e CPU bound (orientadas a CPU) terminam mais rápido; Paralelismo real, em sistemas com múltiplas CPUs;
15
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 15 Threads em processadores de texto Uma thread para receber comandos do usuário; Uma thread para formatar o texto; Uma thread para salvar o arquivo em disco temporariamente;
16
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 16 Processador de texto Um processador de texto com três threads
17
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 17 Threads em servidores web Um servidor web com múltiplos threads
18
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 18 Código de threads em servidores web Código simplificado do slide anterior (a)Thread despachante (b)Thread operário
19
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 19 Threads de Usuário e Threads de Núcleo Threads são dividas em Threads de Usuário e de Núcleo; Thread de Usuário: o núcleo não sabe o que é thread. O Sistema Supervisor é quem escalona as threads, no nível do usuário; Thread de Núcleo: o núcleo reconhece threads e pode escaloná-las;
20
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 20 Implementação de Threads de Usuário Um pacote de threads de usuário
21
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 21 Threads de usuário Threads ficam no espaço de usuário; Núcleo apenas faz gerenciamento comum de processos monothreads; Vantagem óbvia: threads de usuário podem ser implementadas em um SO que não suporta threads; As threads executam no topo do Sistema Supervisor;
22
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 22 Sistema Supervisor Contém uma coleção de procedimentos: –Thread_create; –Thread_exit; –Thread_wait; –Thread_yield;
23
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 23 Sistema Supervisor Há uma tabela de threads por processo; Quando uma thread executa uma instrução que possa bloqueá-lo (read), ele chama um procedimento do sistema supervisor; Caso o procedimento perceba que a chamada da thread vai bloqueá-la, o sistema supervisor coloca uma nova thread para executar (se não, bloquearia todo o processo);
24
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 24 Vantagens de Threads de usuário Cada processo pode ter um algoritmo de escalonamento personalizado; Já que o espaço da tabela de threads não é colocado no núcleo, escala melhor. Seria um problema caso houvesse muitas threads;
25
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 25 Problemas Se uma thread bloquear, bloqueia todas as outras; –Possível solução: usar comando Select (verifica se uma chamada read vai bloquear a thread); A thread inicial precisa ceder a vez de execução para outras threads (thread_yield);
26
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 26 Implementação de Threads de Núcleo Um pacote de threads gerenciado pelo núcleo
27
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 27 Threads de Núcleo Não há necessidade de sistema supervisor, já que o escalonador do SO já faz esse papel; Há uma única tabela de threads; Criação ou destruição de threads: chama-se o núcleo;
28
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 28 Threads de Núcleo O núcleo toma a decisão de qual thread irá executar após o bloqueio de outra (escalonador); Núcleo faz reciclagem de threads, visto que é “caro” criar uma thread de núcleo em comparação com threads de usuário; Não há mais o problema de uma thread bloquear as outras;
29
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 29 Implementações Híbridas Multiplexação de threads de usuário sobre threads de núcleo
30
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 30 Threads Pop-Up Criação de um novo thread quando chega uma mensagem (a) antes da mensagem chegar (b) depois da mensagem chegar
31
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 31 Implementação de Threads Unix: –Thread de Usuário; Linux: –Thread de Núcleo. É possível usar apenas Thread de Usuário para manter compatibilidade com Unix; –Uso da chamada ao sistema Clone; Windows: –Thread de Núcleo;
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.