Sistemas Operacionais

Threads
Parte III

Prof. Lázaro
maio/2012

SOp-Apres08

 Propriedades das Threads
 Visão Geral
 O estado de um processo é definido pelos recursos que ele está usando e pela posição na qual está sendo executado.  Existem muitos casos, entretanto, em que seriam úteis o acesso e o compartilhamento simultâneo de recursos.
Discos

Sistemas Operacionais

Recursos
Memória Processador
Canais Comunic.

Concorre por

Processo A

2

 Propriedades das Threads
 Esquema das threads

Sistemas Operacionais

Fonte: http://java.sun.com/docs/hotspot/threads/threads.html

3

cgi?coll=0650&db=bks&fname=/SGI_Developer/Cos3C_PG/ch13.html 4 .com/library/tpl/cgi-bin/getdoc. Propriedades das Threads  Esquema das threads Sistemas Operacionais Fonte: http://techpubs.sgi.

pelo menos.Sistemas Operacionais  Propriedade das Threads  Thread – É uma linha de execução de controle. É uma parte de um processo que pode ser executada independentemente. Arq2. Num2=0 Exibe_Tela() Molda Tela e Exibe Cálculos() Calc1= -------Inicio Thread Única Abre_Arquivos() Limpa_Variáveis() Exibe_Tela() Cálculos() 5 .  Todo processo tem. Arq3 Open Trab1. uma thread. Trab2 Limpa_Variáveis() Area1=space(10) NUm1=0. Inicio Abre_Arquivos() Limpa_Variáveis() Exibe_Tela() Cálculos() Abre_Arquivos() Open Arq1.

você deverá instruir o navegador para estabelecer uma conexão entre dois sites e fazer o download de uma foto por vez. das Threads Foto1 Sistema Operacional P1 Foto1 Foto2 Foto3 .Sistemas Operacionais  Propriedade  Por exemplo:  Se você deseja conferir uma série de fotos no website de um amigo e seu sistema operacional permite que os processos tenham uma única linha de execução de controle.

Foto1 Sistema Operacional P1 Foto1 P1 Foto2 P1 Foto3 Foto2 Foto3 7 . você poderá requisitar várias fotos simultaneamente e o navegador estabelecerá múltiplas conexões para fazer o download de várias fotos ao mesmo tempo.Sistemas Operacionais  Propriedade das Threads  No entanto. se seu sistema permite que os processos tenham múltiplas linhas de execução de controle.

é uma unidade básica de utilização da CPU e consiste em um contador de instruções. um conjunto de registradores e um espaço de pilha.algumas vezes chamada de processo leve ( lightweigth process ) . Sistemas Operacionais 8 . Propriedades das Threads  Visão Geral  Um fluxo de execução ( thread ) .

como arquivos abertos e sinais. conhecidos coletivamente como uma tarefa.  Um processo tradicional ou pesado (heavyweight process) é igual a uma tarefa com um único fluxo de execução. a seção de dados e os recursos do Sistema Operacional. Propriedades das Threads  Visão Geral  Ele compartilha com fluxos irmãos sua seção de código. Sistemas Operacionais .

 Propriedades das Threads  Visão Geral código dados arquivos código dados arquivos Sistemas Operacionais registradores pilha Registr. pilha Registr. pilha thread Registr. pilha Único Thread Multithreads .

Eles podem estar em um dos vários estados: iniciados. da mesma maneira que os processos. pronto. Sistemas Operacionais 11 .  Os threads (fluxos de execução) operam. Propriedades das Threads  Visão Geral  Como qualquer ambiente de processamento paralelo. em muitos aspectos. execução ou finalizados. espera. a existência de vários fluxos de execução para um processo pode introduzir problemas de controle de concorrência que necessitam do uso de regiões críticas ou semáforos.

os threads não são Sistemas Operacionais  Como os threads podem usar os mesmos endereços em uma tarefa. 12 . independentes uns dos outros. um thread pode ler e escrever sobre pilhas de outros threads. Propriedades das Threads  Visão Geral  Em contraste com os processos.

Fluxos de execução Sistemas Operacionais Segmento de código Segmento de dados 13 Diversos fluxos de execução em uma tarefa .  Essas várias threads são chamadas também de subprocessos. vários fluxos de execução. porque elas se subordinam a um processo principal. ou seja. Propriedades das Threads  Visão Geral  O exemplo ao lado mostra um processo que tem várias threads.

 Propriedades das Threads  Ciclo de vida do thread Novo Iniciar Esperar por evento Preempção Concluir Sistemas Operacionais Morto Pronto Despacho Conclusão E/S Notificar ou acordar Execução Requisição E/S Dormir Bloqueado por I/O Adormecido Acordar 14 Em Espera .

 Threads também chamado de processos leves.  Nos sistemas operacionais modernos há suporte para várias linhas de controle e vários contadores dentro de um único processo. Sistemas Operacionais 15 . Propriedades das Threads  Threads (fluxos de execução)  Nos processos tradicionais há apenas uma linha de controle e um único contador de programa em cada processo.

 Propriedades das Threads  Threads (fluxos de execução) Um processo com uma thread Um processo com três threads Sistemas Operacionais Contador de Programa A Processo thread B Thread 3 Thread 2 Thread 1 16 .

 Propriedades das Threads  Threads (fluxos de execução)  Exemplo de um processo servidor de arquivos. Sistemas Operacionais Servidor de Impressão Arquivos 17 .  Neste caso. nenhum outro processo servidor pode ser executado até que o primeiro seja desbloqueado. que está bloqueado e é executado em um sistema que pressupõe a utilização de apenas um único processo.

 Algumas threads tratam de resolver as questões das figuras. Propriedades das Threads  Threads (fluxos de execução)  Exemplo do navegador da Web.) Sistemas Operacionais comunicação Thread 2 (textos comuns) 18 . Vários fluxos de execução são disparados para atender aos vários tipos de dados que poderão estar chegando. Tela do usuário Navegador Web Thread 1 (figuras) Thread 2 (textos espec. outras de textos especiais e outras dos textos comuns.

 Propriedades das Threads  Benefícios das Threads  Capacidade de resposta – a estruturação de uma aplicação interativa em multithreads pode permitir a um programa continuar executando mesmo se parte dele estiver bloqueada ou realizando uma operação prolongada.  Por exemplo: um navegador de web multithread. aumentando desse modo a capacidade de resposta para o usuário. Thread 1 Thread 2 Navegador Web Intera ção com o usuário Arma zena mento de imagem Sistemas Operacionais 19 .

 Propriedades das Threads  Benefícios das Threads  Compartilhamento de recursos – os threads compartilham. todos dentro do mesmo espaço de endereçamento. Sistemas Operacionais Compartilhamento de memória e recursos do processo principal 20 .  A vantagem do compartilhamento de código é permitir que uma aplicação tenha diversos threads de atividade. a memória e os recursos do processo ao qual pertencem. por default.

é mais econômico criar threads e comutar seus contextos. como os threads compartilham recursos do processo ao qual pertencem.  Por outro lado. Propriedades das Threads  Benefícios das Threads  Economia – a alocação de memória e de recursos para a criação de processos é custosa. Sistemas Operacionais 21 .

B Thread 1 Thread 2 Processo Principal 22 . Sistemas Operacionais Proc. Propriedades das Threads  Benefícios das Threads  Utilização de arquiteturas de multiprocessadores – as vantagens de criação de multithreads podem ser bastante aumentadas em uma arquitetura de multiprocessadores.  Um processo com um único thread pode executar somente em uma CPU. onde cada thread pode ser executado em paralelo em um processador diferente. A Proc.

23 Sistemas Operacionais .  Dessa forma. toda criação é feita no espaço do usuário. os threads de usuário são mais ágeis para criar e gerenciar. Propriedades das Threads  Threads do Usuário e do Kernel  Os threads do Usuário – são suportados acima do kernel e são implementados por uma biblioteca de threads no nível de usuário.  O kernel não tem consciência dos threads de nível de usuário.

o scheduling e o gerenciamento dos threads. Sistemas Operacionais Sistema Operacional (Kernel) 24 .  Como o gerenciamento dos threads é feito pelo sistema operacional. no espaço do kernel. Propriedades das Threads  Threads do Usuário e do Kernel  Os threads do Kernel – são suportados diretamente pelo sistema operacional.  O kernel realiza a criação. sua criação e schedulagem é mais lenta do que as do usuário.

 Propriedades das Threads  Criação de Threads Sistemas Operacionais  Chamadas Fork e Exec – quando um thread chama a rotina fork para criar um processo. há duas modalidades de operação:  Uma será a duplicação total do processo onde a thread está com todas as threads sendo duplicada. 25 .  outra será duplicar apenas a thread que está invocando a rotina fork.  A utilização das duas versões depende da aplicação.

possibilitando ao threadalvo uma oportunidade de terminar a si próprio de modo ordenado.  Cancelamento Assíncrono – um thread imediatamente termina o thread-alvo. os threads remanescentes podem ser cancelados. Propriedades das Threads  Criação de Threads  Cancelamento de threads – corresponde à tarefa de terminar um thread antes que se complete.  Por exemplo. 26 Sistemas Operacionais . se múltiplos threads estão pesquisando concorrentemente um banco de dados e um thread retorna o resultado.  Cancelamento adiado – o thread-alvo pode verificar periodicamente se deveria terminar.

 O sinal deve ser manipulado. Propriedades das Threads  Criação de Threads  Manipulação de sinais – é usado em sistemas Unix para notificar um processo sobre a ocorrência de um evento em particular. Sistemas Operacionais 27 .  É liberado para um processo.  Processamento de um sinal:  Pela ocorrência de um evento em particular.  Todo sinal pode ser manipulado por:  Um manipulador de sinal default  Um manipulador de sinais definido pelo usuário.

28 . onde eles permanecem e aguardam para entrar em funcionamento. Criação de Threads  Propriedades das Threads Sistemas Operacionais  Cadeias de Threads – é criar um número de threads na inicialização do processo e colocá-los em uma cadeia. passando a ele a solicitação para ser atendida. sendo que. ele desperta um thread desta cadeia.  Exemplo: a criação de processo init com os vários terminais alocados na rede multiusuária. se um estiver disponível.  Usado em servidores. quando um servidor recebe uma solicitação.

um sistema moderno. SOLARIS 2 API Pthread Thread do Usuário 29 . multiprocessamento simétrico e seleção de processos em tempo real. Propriedades das Threads  Threads no Solaris 2 Sistemas Operacionais  A nova versão. com suporte de processos em tempo real e no nível de usuários.

 Propriedades das Threads  Threads no Solaris 2  Os fluxos de operação no Solaris 2 é feita no nível de usuários. sem que o núcleo saiba coisa alguma sobre eles.  O Solaris 2 prevê que milhares de fluxos de execução no nível de usuários possam ser criados.  São criados e selecionados por rotinas de biblioteca. passando a competir pelo uso da CPU. Sistemas Operacionais 30 .

 Propriedades das Threads  Threads no Solaris 2  O Solaris 2 define também fluxos de execução de nível intermediário. entre os fluxos de execução do núcleo e no nível de usuários. Sistemas Operacionais  O Processo de funcionamento dos fluxos de execução no Solaris 2. 31 . chamados de processos leves.

 Propriedades das Threads Tarefa 1 Tarefa 2 Sistemas Operacionais Tarefa 3 Fluxo de execução no nível de usuários Processo leve Fluxo de execução do núcleo núcleo CPU Fluxos de execução no Solaris 2 32 .

R3 AB2387F 33 .  Contador de programa porque threads podem ser suspensos e retomados  Registradores porque threads suspensos tem que ter registradores salvos. Processo Thread Status contador Registradores Memória Observações PC-A Tr-1 Exec P01 R1. R2. R2. R3 45D12 Tr-3 Pronto P03 R1. Propriedades das Threads Sistemas Operacionais  Tabela de Threads . R2. R3 23A9F Tr-2 Wait P02 R1.contem uma entrada por thread com contador de programa. registradores e estado do thread.

Sistemas Operacionais 34 . Propriedades das Threads  Tabela de Threads  Sistemas Operacionais que não reconhecem threads interage apenas entre processos.  Sistemas Operacionais que reconhecem threads interage entre threads do mesmo processo ou com de outros processos.

Sistemas Operacionais FIM 35 .