Buscar

Aula 6

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Operacionais
Sistemas de Informação
Estácio Cabo Frio
Prof. Me. Victor Barreto
victornqs@gmail.com
Aula 6:
Processos
Tópicos
Subprocessos e Threads: Conceitos Básicos e Herança
Threads
Por que alguém desejaria ter um tipo de processo dentro de um processo? Constata-se que há várias razões para
existirem esses miniprocessos, chamados threads.
Threads
Por que alguém desejaria ter um tipo de processo dentro de um processo? Constata-se que há várias razões para
existirem esses miniprocessos, chamados threads.
Thread ou processo leve, é a unidade básica de utilização da CPU, consistindo de: contador de programa, conjunto de
registradores e uma pilha de execução. Threads são estruturas de execução pertencentes a um processo e assim
compartilham os segmentos de código e dados e os recursos alocados ao sistema operacional pelo processo.
Threads
Uma thread representa um fluxo de controle de execução dentro de um programa.
Segmento de 
Texto
Segmento de 
Dados
Segmento de 
Pilha
Espaço de 
Endereçamento 
Lógico
Informações para 
Gerência do Processo
Informações para 
Gerência de Memória
Informações para 
Gerência de Arquivos
Process Control
Block (PCB)
Programa em Execução - Processo
Processo com apenas uma Thread
Texto
Pilha de Execução
Registradores
Thread
Threads
Com múltiplas threads um programa possui múltiplos pontos de execução.
Texto
Pilha de Execução
Registradores
Thread
Segmento de 
Texto
Segmento de 
Dados
Segmento de 
Pilha
Espaço de 
Endereçamento 
Lógico
Informações para 
Gerência do Processo
Informações para 
Gerência de Memória
Informações para 
Gerência de Arquivos
Process Control
Block (PCB)
Programa em Execução - Processo
Processo com múltiplas Threads
Texto
Pilha de Execução
Registradores
Thread
...
Threads
Texto
Pilha de Execução
Registradores
Thread
Segmento de 
Texto
Segmento de 
Dados
Segmento de 
Pilha
Espaço de 
Endereçamento 
Lógico
Informações para 
Gerência do Processo
Informações para 
Gerência de Memória
Informações para 
Gerência de Arquivos
Process Control
Block (PCB)
Programa em Execução - Processo
Processo com múltiplas Threads
Texto
Pilha de Execução
Registradores
Thread
...
Existem threads de instrução ou threads de controle;
Os threads compartilham espaço de endereços e outras informações globais com seu próprio processo.
Threads
Threads de usuário: Os threads de usuário executam operações de suporte a threads no espaço do usuário. Isso significa
que os threads são criados por bibliotecas em tempo de execução que não podem executar instruções privilegiadas
nem acessar as primitivas do núcleo diretamente.
Threads
Threads de núcleo: Os threads de núcleo tentam resolver as limitações dos threads de usuário mapeando cada thread
para o seu próprio contexto de execução. O thread de núcleo oferece mapeamento de thread um-para-um.
• Vantagens: maior escalabilidade, interatividade e rendimento.
• Desvantagens: sobrecarga decorrente do chaveamento de contexto e menor portabilidade em virtude de as APIs
serem específicas ao sistema operacional.
Os threads de núcleo nem sempre são a solução ideal para as aplicações.
Threads
Combinação de threads de usuário e de núcleo: Implementação da combinação de threads de usuário (TMU) e de
núcleo (TMK). Em comparação com os mapeamentos de threads um-para-um, esse mapeamento consegue reduzir a
sobrecarga implementando o reservatório de threads.
Um processo pode ter vários TMKs, e por sua vez, um TMK pode ter vários TMUs. O núcleo do SO reconhece os TMKs e
pode escalona-los individualmente. Um TMU pode ser executado em um TMK,em um determinado momento, e no
instante seguinte ser executado em outro.
Threads
Vantagens das threads:
• Desempenho:
• Não existe necessidade de comunicação entre processos;
• Utilização de multiprocessadores para um mesmo processo;
• Um programa pode continuar sendo executado mesmo se parte dele estiver bloqueada (um navegador pode
permitir a interação do usuário em um thread enquanto uma imagem é carregada em outro thread);
Desvantagem:
• O desenvolvimento de aplicações não é simples;
Threads
Threads são extremamente utilizadas em ambientes cliente/servidor. Exemplo: SGBD;
Um único processo no servidor gera uma thread para cada solicitação de cliente;
Threads
A execução de uma thread pode passar por quatro estados:
1) Novo
2) Executável
3) Bloqueado
4) Encerrado
Threads
Em sistemas operacionais, preemptividade ou preempção é a capacidade de alterar a ordem de (ou tirar de execução)
um processo em detrimento de outro com uma prioridade maior.
Threads
Fila de Prioridade
O estado pronto para executar (ready) de uma thread não é garantia de execução, threads são regidas por prioridades.
As threads de mais alta prioridade têm mais chances de executar primeiro.
Threads
A thread está no estado de novo quando é criada, ou seja, quando é alocado um descritor para a ela através do
operador new.
A thread está no estado de executável quando é ativada.
O processo de ativação é originado pelo método start(). É importante frisar que uma thread executável não está
necessariamente sendo executada, pois quem determina o tempo de sua execução é a JVM (no caso de threads do Java)
ou o S.O. (no caso das threads criadas pela JVM).
Threads
A thread está no estado de bloqueado quando é desativada. Para desativar uma thread é necessário que ocorra uma
das quatro operações a seguir:
1) Sleep (long tempo) da thread;
2) Suspend() da thread;
3) A thread chamou o método wait();
4) A thread chamou uma operação de I/O (chamada bloqueante)
A thread está no estado de encerrado quando encerrar sua execução. Isto pode ocorrer pelo término do método run(),
ou pela chamada do método stop().
Threads
Para a thread sair do estado de bloqueado e voltar para o estado de executável, uma das seguintes operações deve
ocorrer:
• Retornar após o tempo especificado, caso a thread estiver adormecida;
• Retornar através do método resume(), caso a thread tiver sido suspensa (método suspend());
• Retornar com o método notify() (ou notifyAll()), caso a thread estiver em espera;
• Retornar após a conclusão da operação de I/O.
Threads
Recursos compartilhados da therad
Recursos compartilhados devem ser protegidos.
A palavra chave para isso é o synchronized que permite que blocos sensíveis ao acesso simultâneo possam estar
protegidos de corrupção.
O synchronized faz isso para impedir que threads diferentes que possuem ambientes sincronizados relacionados
executem estes ambientes ao mesmo tempo.
Por uma questão de desempenho trechos synchronized devem ser limitados aos trechos realmente críticos (chamados
região crítica)
Motivação na criação de threads
Os threads tornaram-se proeminentes por causa de tendências subsequentes em relação:
Ao projeto de software: Maior simplicidade para exprimir tarefas inerentemente paralelas.
Ao desempenho: Maior escalonamento para sistemas com múltiplos processadores.
À cooperação: O custo operacional do espaço de endereço compartilhado é menor.
Todo thread transita entre uma série de estados de thread distintos.
Os threads e os processos têm muitas operações em comum (por exemplo, criar, sair, retomar e suspender).
A criação de thread não requer que o sistema operacional inicialize recursos compartilhados entre os processos-pai e
os respectivos threads.
Isso reduz o esforço de criação e término de threads, em comparação à criação e ao término de processo.
Threads
Processadores Multithread: Resumidamente, os threads definem como um processador funciona, recebendo e
executando instruções. Isso acontece muito rapidamente e passa a sensação de que as ações são simultâneas. Portanto,
uma CPU com um thread tem apenas uma linha de trabalho – e realiza uma ação por vez. Logo, processadores
multithread são mais vantajosos, já que dão a possibilidade de operar em diversas frentes ao mesmo tempo.
Quando se fala que um determinado processadoré dual-core, quad-core, hexa-core, e assim por diante, significa que a
CPU tem diversos núcleos independentes que funcionam como processadores individuais. Cada um desses corresponde
a uma thread, ou linha de execução. Nesse caso, os chips podem executar tarefas simultâneas, já que cada um fica
encarregado de uma sequência de informações diferente, aumentando a performance do sistema.
Threads
É importante lembrar que os processadores multicore podem, mas nem sempre executam múltiplas linhas de instruções
ao mesmo tempo. Isso acontece porque o suporte a essa característica depende diretamente do tipo de aplicação a ser
usada. Muitos programas não tiram proveito da presença de diferentes núcleos, utilizando apenas uma thread.
Threads
Do ponto de vista de um processador que possui mais de um núcleo (que é o padrão atualmente), um processo poderia
ter, por exemplo, três threads rodando simultaneamente em três diferentes núcleos:
Threads
Exemplo: Classe em C++ que cria threads através de um método spawn. O método privado HelloMessage é utilizado para
ser executado em cada thread criada.
Internamente o método HelloMessage espera por um período randômico de tempo (sleep) a fim de simular uma carga
de trabalho aleatória para a thread corrente. Ao final imprime na tela uma mensagem com o identificador da thread que
acabou de executar.
Threads
Threads
É possível notar que tivemos vários números de threads
repetidos. O que nos leva a concluir que temos um problema
de concorrência onde várias threads podem estar acessando
ou modificando a variável thread_no ao mesmo tempo
Threads
É possível notar que tivemos vários números de threads
repetidos. O que nos leva a concluir que temos um problema
de concorrência onde várias threads podem estar acessando
ou modificando a variável thread_no ao mesmo tempo.
Threads
A máquina onde esse programa foi rodado possui 2 processadores de 2 núcleos cada. Em função disso, podemos
afirmar que no melhor cenários nosso programa esteve paralelamente sendo executado em no máximo 4 threads.
Essa noção de paralelismo pode ser notada nos resultados da execução de nosso programa, que foi completamente
fora de ordem.
Threads
Condição de Corrida:
Quando mais de uma thread tenta acessar uma variável ao mesmo tempo temos uma condição de corrida. Ou seja,
elas concorrem por algum recurso. O impacto dessa condição, é que o resultado da computação dessas threads
depende de quem executou primeiro. Não há como garantir que independente do número de execuções o
resultado será o mesmo.
Threads
Seções Críticas:
As regiões críticas de um programa são as partes do código em que condições de corrida podem ocorrer. Aquele
trecho de código ou sequência de instruções que, ao serem escalonadas pelo sistema operacional, threads distintas
podem estar executando de maneira concorrente.
Referências
BALIEIRO, R. Sistemas Operacionais[BV:RE]. 1. Rio de Janeiro: SESES, 2015. Disponível em: http://repositorio.savaestacio.com.br/site/index.html#/objeto/detalhes/80FEA820-1CB5-4982-863F-25F09ADBDD0C
CASTRO, Arleys. Threads. Disponível em https://slideplayer.com.br/slide/10572685/, acessado em 27/08/2020.
Córdova Junior, Ramiro Sebastião. Sistemas Operacionais[BV:MB]. 1ª Edição. Porto Alegre:: SAGAH,, 2018.Disponível em:
https://integrada.minhabiblioteca.com.br/#/books/9788595027336/cfi/1!/4/4@0.00:58.4
Deitel, Harvey M.; Deitel, Paul J.; Choffnes, David R. Sistemas Operacionais[BV:PE]. 3. São Paulo: Pearson Prentice Hall, 2005. Disponível em: https://plataforma.bvirtual.com.br/Leitor/Publicacao/315/pdf
Francis Berenger Machado, Luiz Paulo Maia. Arquitetura de Sistemas Operacionais[BV:MB]. 5. ed. - [Reimpr.].. Rio de Janeiro: LTC, 2017. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/978-
85-216-2288-8/cfi/5!/4/4@0.00:0.00
Oliveira, Romulo Silva de. Sistemas Operacionais[BV:MB]. 4ª. Porto Alegre: Bookman, 2010. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788577806874/cfi/0!/4/4@0.00:0.00
Organizador, Paulo Henrique M. Bittencourt. Ambientes Operacionais[BV:PE]. 1. São Paulo: Pearson Education do Brasil, 2013. Disponível em:
https://plataforma.bvirtual.com.br/Acervo/Publicacao/21293#pageContent
Padro, Sergio. Sistemas de Tempo Real – Parte 1. Disponível em https://sergioprado.org/sistemas-de-tempo-real-part-1/, acessado em 11/08/2020.
PANTUZA, Gustavo. O que são e como funcionam as Threads. Disponível em https://blog.pantuza.com/artigos/o-que-sao-e-como-funcionam-as-threads, acessado em 27/08/2020.
Puhman, Henrique. Sistemas Operacionais de Tempo Real. Disponível em https://www.embarcados.com.br/sistemas-operacionais-de-tempo-real-rtos/, acessado em 11/08/2020.
Referências
Silberschatz, Abraham. Fundamentos de sistemas operacionais [BV:MB]. 9. ed. -. Rio de Janeiro: LTC, 2015. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/978-85-216-3001-
2/cfi/6/2!/4/2/2@0:0
Siqueira, Fernando. Sistemas Operacionais. Disponível em https://sites.google.com/site/proffernandosiqueiraso/aulas/5-processo, acessado em 11/08/2020.
Tanenbaum, Andrew S.; Bos, Herbert. Sistemas Operacionais Modernos[BV:PE]. 4. ed. São Paulo: Pearson Education do Brasil, 2016.Disponível em:
https://plataforma.bvirtual.com.br/Leitor/Publicacao/36876/pdf
UFPE. O Escalonamento de Tempo Real. Disponível em https://www.cin.ufpe.br/~if728/sistemas_tempo_real/livro_farines/cap2.pdf, acessado em 11/08/2020.

Continue navegando