Você está na página 1de 115

Sistema Operativo

Conferência 04
Processos e Thead

@Domingos Filipe de Oliveira

November 12, 2023


Introdução

 Todos os computadores modernos podem fazer várias coisas ao


mesmo tempo;

2 of 44
Introdução

 Todos os computadores modernos podem fazer várias coisas ao


mesmo tempo;
 Em um sistema de multi - programação, a CPU também altera de um
programa para outro, executando cada um por dezenas ou centenas
de mili - segundos;

2 of 44
Introdução

 Todos os computadores modernos podem fazer várias coisas ao


mesmo tempo;
 Em um sistema de multi - programação, a CPU também altera de um
programa para outro, executando cada um por dezenas ou centenas
de mili - segundos;
 Às vezes, as pessoas falam de pseudo - paralelismo querendo
referir-se a essa rápida alternância da CPU entre programas, em con-
traste com paralelismo verdadeiro em hardware dos sistemas multi
- processadores (que têm duas ou mais CPUs compartilhando a
mesma memória fı́sica).

2 of 44
Processos

3 of 44
 O conceito de processo é a base para a implementação de um sistema
multi - programado;

4 of 44
 O conceito de processo é a base para a implementação de um sistema
multi - programado;
 O processador é projectado apenas para executar instruções, não
sendo capaz de distinguir qual programa se encontra em execução;

4 of 44
 O conceito de processo é a base para a implementação de um sistema
multi - programado;
 O processador é projectado apenas para executar instruções, não
sendo capaz de distinguir qual programa se encontra em execução;
 A execução de um programa deve estar sempre associado a um
processo;

4 of 44
 O conceito de processo é a base para a implementação de um sistema
multi - programado;
 O processador é projectado apenas para executar instruções, não
sendo capaz de distinguir qual programa se encontra em execução;
 A execução de um programa deve estar sempre associado a um
processo;
 A gestão dos processos é uma das principais funções de um sistema
operativo. Através de processos, um programa pode alocar recursos,
compartilhar dados, trocar informações e sincronizar sua execução.

4 of 44
O que é Processos ?

5 of 44
 “Fluxo de actividade autónomo que executa um conjunto de acções
que são determinadas por um programa”;

6 of 44
 “Fluxo de actividade autónomo que executa um conjunto de acções
que são determinadas por um programa”;
 Um processo pode ser entendido inicialmente como um programa
em execução;

6 of 44
 “Fluxo de actividade autónomo que executa um conjunto de acções
que são determinadas por um programa”;
 Um processo pode ser entendido inicialmente como um programa
em execução;
 Um processo também pode ser definido como o ambiente onde um
programa é executado;

6 of 44
 “Fluxo de actividade autónomo que executa um conjunto de acções
que são determinadas por um programa”;
 Um processo pode ser entendido inicialmente como um programa
em execução;
 Um processo também pode ser definido como o ambiente onde um
programa é executado;
 Este ambiente, além das informações sobre a execução, possui também
recursos do sistema, como o espaço de endereçamento, tempo de
processador e área em disco.

6 of 44
Estrutura do Processo

 Um processo é formado por três partes, conhecidas como:

7 of 44
Estrutura do Processo

 Um processo é formado por três partes, conhecidas como:


 contexto de hardware;
 contexto de software;
 espaço de endereçamento.

7 of 44
Estrutura do Processo

 Um processo é formado por três partes, conhecidas como:


 contexto de hardware;
 contexto de software;
 espaço de endereçamento.
 Que juntos mantêm todas as informações necessárias à execução de
um programa.

7 of 44
Estrutura do Processo

8 of 44
Contexto de Hardware

 O contexto de hardware constitui-se, basicamente, do conteúdo de


registadores;

9 of 44
Contexto de Hardware

 O contexto de hardware constitui-se, basicamente, do conteúdo de


registadores;
 Quando um processo está em execução, o seu contexto de hardware
está armazenado nos registadores do processador;

9 of 44
Contexto de Hardware

 O contexto de hardware constitui-se, basicamente, do conteúdo de


registadores;
 Quando um processo está em execução, o seu contexto de hardware
está armazenado nos registadores do processador;
 O contexto de hardware é fundamental para a implementação dos
sistemas de tempo compartilhado (time-sharing ), onde os processos
alternam na utilização do processador, podendo ser interrompidos
e, posteriormente, restaurados como se nada tivesse acontecido.

9 of 44
 A troca de um processo por outro na CPU, realizada pelo sistema
operativo, é denominada mudança de contexto;

10 of 44
 A troca de um processo por outro na CPU, realizada pelo sistema
operativo, é denominada mudança de contexto;
 A mudança de contexto consiste em salvar o conteúdo dos regista-
dores da CPU e carregá-los com os valores referentes ao do processo
que esteja ganhando a utilização do processador;

10 of 44
 A troca de um processo por outro na CPU, realizada pelo sistema
operativo, é denominada mudança de contexto;
 A mudança de contexto consiste em salvar o conteúdo dos regista-
dores da CPU e carregá-los com os valores referentes ao do processo
que esteja ganhando a utilização do processador;
 Essa operação resume-se, então, em substituir o contexto de hard-
ware de um processo pelo outro.

10 of 44
Mudança de contexto

11 of 44
Contexto de Software

 Especifica caracterı́sticas do processo que vão influenciar na ex-


ecução de um programa;

12 of 44
Contexto de Software

 Especifica caracterı́sticas do processo que vão influenciar na ex-


ecução de um programa;
 A maior parte das informações do contexto de software do processo
são provenientes de um arquivo do SO, conhecido como arquivo de
contas.

12 of 44
Contexto de Software

 Especifica caracterı́sticas do processo que vão influenciar na ex-


ecução de um programa;
 A maior parte das informações do contexto de software do processo
são provenientes de um arquivo do SO, conhecido como arquivo de
contas.
 O contexto de software define basicamente três grupos de informações
sobre um processo:

12 of 44
Contexto de Software

 Especifica caracterı́sticas do processo que vão influenciar na ex-


ecução de um programa;
 A maior parte das informações do contexto de software do processo
são provenientes de um arquivo do SO, conhecido como arquivo de
contas.
 O contexto de software define basicamente três grupos de informações
sobre um processo:
 sua identificação;
 suas quotas;
 seus privilégios.

12 of 44
 Identificação – Cada processo criado pelo sistema recebe uma iden-
tificação única (PID), representada por um número;

13 of 44
 Identificação – Cada processo criado pelo sistema recebe uma iden-
tificação única (PID), representada por um número;
 Quotas – As quotas são os limites de cada recurso do sistema que
um processo pode alocar.

13 of 44
 Identificação – Cada processo criado pelo sistema recebe uma iden-
tificação única (PID), representada por um número;
 Quotas – As quotas são os limites de cada recurso do sistema que
um processo pode alocar.
 Alguns exemplos de quotas são:
 Número máximo de arquivos abertos simultaneamente;
 Número máximo de processos e subprocessos que podem ser criados;

13 of 44
 Identificação – Cada processo criado pelo sistema recebe uma iden-
tificação única (PID), representada por um número;
 Quotas – As quotas são os limites de cada recurso do sistema que
um processo pode alocar.
 Alguns exemplos de quotas são:
 Número máximo de arquivos abertos simultaneamente;
 Número máximo de processos e subprocessos que podem ser criados;
 Privilégios – Definem o que o processo pode ou não fazer em
relação ao sistema e aos outros processos:
 Existem privilégios associados à segurança;
 Existem outros privilégios associados à operação e à gerência do
sistema.

13 of 44
 A maioria dos SO possui uma conta de acesso com todos estes
privilégios disponı́veis, com o propósito de o administradores gestão
do SO;

14 of 44
 A maioria dos SO possui uma conta de acesso com todos estes
privilégios disponı́veis, com o propósito de o administradores gestão
do SO;
 No Unix existe a conta root, no Windows a conta administrator e
no OpenVMS a conta system.

14 of 44
Espaço de endereçamento

 O espaço de endereçamento é a área de memória do processo onde


o programa será executado;

15 of 44
Espaço de endereçamento

 O espaço de endereçamento é a área de memória do processo onde


o programa será executado;
 Cada processo possui seu próprio espaço de endereçamento, que
deve ser protegido do acesso dos demais processos.

15 of 44
Bloco de controle de processo

 Um processo é implementado pelo SO através de uma estrutura de


dados chamada bloco de controle do processo;

16 of 44
Bloco de controle de processo

 Um processo é implementado pelo SO através de uma estrutura de


dados chamada bloco de controle do processo;
 É partir dele, que o SO mantém todas as informações sobre o con-
texto de hardware, contexto de software e espaço de endereçamento
de cada processo.

16 of 44
Bloco de controle de processo

17 of 44
Bloco de controle de processo

Toda a gestão de processo é feita através de chamadas de sistema, que


realizam operações como criação, alteração de caracterı́sticas, visualização,
eliminação, sincronização de processos.
17 of 44
Estados do Processo

 Um processo pode encontrar-se em três estados diferentes:

18 of 44
Estados do Processo

 Um processo pode encontrar-se em três estados diferentes:


 Running - um processo é dito no estado de execução quando está
sendo processado pela CPU.

18 of 44
Estados do Processo

 Um processo pode encontrar-se em três estados diferentes:


 Running - um processo é dito no estado de execução quando está
sendo processado pela CPU.
 Ready - um processo está no estado de disponı́vel quando ele tem
condições lógicas de executar e apenas aguarda para ser executado.

18 of 44
Estados do Processo

 Um processo pode encontrar-se em três estados diferentes:


 Running - um processo é dito no estado de execução quando está
sendo processado pela CPU.
 Ready - um processo está no estado de disponı́vel quando ele tem
condições lógicas de executar e apenas aguarda para ser executado.
 Wait - um processo no estado de espera aguarda por algum evento
externo ou por algum recurso para prosseguir seu processamento, ou
seja, ele não tem condições lógicas de executar.

18 of 44
Estados do Processo

 Um processo pode encontrar-se em três estados diferentes:


 Running - um processo é dito no estado de execução quando está
sendo processado pela CPU.
 Ready - um processo está no estado de disponı́vel quando ele tem
condições lógicas de executar e apenas aguarda para ser executado.
 Wait - um processo no estado de espera aguarda por algum evento
externo ou por algum recurso para prosseguir seu processamento, ou
seja, ele não tem condições lógicas de executar.
 Quando um processo espera por um recurso do sistema que não
se encontra disponı́vel, é dito que o processo está no estado de
bloqueado (blocked).

18 of 44
Mudanças de Estado do Processo

 Um processo muda de estado durante seu processamento em função


de eventos originados por ele próprio (eventos voluntários) ou pelo
SO (eventos involuntários).

19 of 44
Mudanças de Estado do Processo

 Um processo muda de estado durante seu processamento em função


de eventos originados por ele próprio (eventos voluntários) ou pelo
SO (eventos involuntários).
 Basicamente, existem quatro mudanças de estado que podem ocor-
rer a um processo:
 Pronto – Execução;
 Execução – Espera;
 Espera – Pronto;
 Execução – Pronto.

19 of 44
quatro mudanças de estado
 Pronto – Execução: após a criação de um processo, o sistema o
coloca em uma lista de processos no estado de pronto, onde aguarda
uma oportunidade para ser executado.

20 of 44
quatro mudanças de estado
 Pronto – Execução: após a criação de um processo, o sistema o
coloca em uma lista de processos no estado de pronto, onde aguarda
uma oportunidade para ser executado.
 Execução – Espera: um processo em execução passa para o estado
de espera por eventos gerados pelo próprio processo, como uma
operação de E/S, ou por eventos externos (SO suspende por um
perı́odo de tempo a execução do processo).

20 of 44
quatro mudanças de estado
 Pronto – Execução: após a criação de um processo, o sistema o
coloca em uma lista de processos no estado de pronto, onde aguarda
uma oportunidade para ser executado.
 Execução – Espera: um processo em execução passa para o estado
de espera por eventos gerados pelo próprio processo, como uma
operação de E/S, ou por eventos externos (SO suspende por um
perı́odo de tempo a execução do processo).
 Espera – Pronto: um processo no estado de espera passa para o
estado pronto quando a operação solicitada é atendida ou o recurso
esperado é concedido, sempre terá que passar pelo estado de pronto
antes de poder ser novamente seleccionado para execução.

20 of 44
quatro mudanças de estado
 Pronto – Execução: após a criação de um processo, o sistema o
coloca em uma lista de processos no estado de pronto, onde aguarda
uma oportunidade para ser executado.
 Execução – Espera: um processo em execução passa para o estado
de espera por eventos gerados pelo próprio processo, como uma
operação de E/S, ou por eventos externos (SO suspende por um
perı́odo de tempo a execução do processo).
 Espera – Pronto: um processo no estado de espera passa para o
estado pronto quando a operação solicitada é atendida ou o recurso
esperado é concedido, sempre terá que passar pelo estado de pronto
antes de poder ser novamente seleccionado para execução.
 Execução – Pronto: Um processo em execução passa para o estado
de pronto por eventos gerados pelo sistema, como o término da fatia
de tempo que o processador possui para sua execução.
20 of 44
Mudanças de estados do processo

21 of 44
Criação e Eliminação de Processos

 A criação de um processo ocorre a partir do momento em que o


SO adiciona um novo PCB a sua estrutura e aloca um espaço de
endereçamento na memória para uso;

22 of 44
Criação e Eliminação de Processos

 A criação de um processo ocorre a partir do momento em que o


SO adiciona um novo PCB a sua estrutura e aloca um espaço de
endereçamento na memória para uso;
 A partir da criação do PCB, o sistema operativo já reconhece a
existência do processo, podendo geri-lo e associar programas ao seu
contexto para serem executados;

22 of 44
Criação e Eliminação de Processos

 A criação de um processo ocorre a partir do momento em que o


SO adiciona um novo PCB a sua estrutura e aloca um espaço de
endereçamento na memória para uso;
 A partir da criação do PCB, o sistema operativo já reconhece a
existência do processo, podendo geri-lo e associar programas ao seu
contexto para serem executados;
 No caso da eliminação de um processo, todos os recursos associa-
dos ao processo são desalocados e o PCB eliminado pelo sistema
operativo.

22 of 44
Criação e Eliminação de Processos

 A maioria dos SO estabelece dois estados adicionais para os momen-


tos da criação e eliminação de processos:

23 of 44
Criação e Eliminação de Processos

 A maioria dos SO estabelece dois estados adicionais para os momen-


tos da criação e eliminação de processos:
 Criação (new) - um processo e dito no estado de criação quando o
SO já criou um novo PCB, porém ainda nao pode coloca-lo na lista de
processos no estado de pronto.

23 of 44
Criação e Eliminação de Processos

 A maioria dos SO estabelece dois estados adicionais para os momen-


tos da criação e eliminação de processos:
 Criação (new) - um processo e dito no estado de criação quando o
SO já criou um novo PCB, porém ainda nao pode coloca-lo na lista de
processos no estado de pronto.
 Terminado (exit) - um processo no estado de terminado nao poderá
ter mais nenhum programa executado no seu contexto, porém o SO
ainda mantém suas informações de controle presentes em memória.
Como o PCB ainda existe, o SO pode recuperar informações sobre a
contabilização de uso de recursos do processo, como o tempo total
gasto do processador.

23 of 44
Sinais

 São mecanismo que permite notificar processos de eventos gerados


pelo SO ou por outros processos;

24 of 44
Sinais

 São mecanismo que permite notificar processos de eventos gerados


pelo SO ou por outros processos;
 O uso de sinais é fundamental para a gestão de processos, além
de possibilitar a comunicação e sincronização entre processos;

24 of 44
Sinais

 São mecanismo que permite notificar processos de eventos gerados


pelo SO ou por outros processos;
 O uso de sinais é fundamental para a gestão de processos, além
de possibilitar a comunicação e sincronização entre processos;
 O sinal esta para o processo assim como as interrupções e exceções
estao para o SO.

24 of 44
Threads

25 of 44
 Ate o final da decada de 1970, os SO suportavam apenas processos
com um unico thread, ou seja, um processo com apenas um unico
programa fazendo parte do seu contexto;

26 of 44
 Ate o final da decada de 1970, os SO suportavam apenas processos
com um unico thread, ou seja, um processo com apenas um unico
programa fazendo parte do seu contexto;
 Em 1979, durante o desenvolvimento do Toth, foi introduzido o
conceito de processos lightweight (peso leve), onde o espaço de
endereçamento de um processo era compartilhado por vários pro-
gramas;

26 of 44
 Ate o final da decada de 1970, os SO suportavam apenas processos
com um unico thread, ou seja, um processo com apenas um unico
programa fazendo parte do seu contexto;
 Em 1979, durante o desenvolvimento do Toth, foi introduzido o
conceito de processos lightweight (peso leve), onde o espaço de
endereçamento de um processo era compartilhado por vários pro-
gramas;
 Apesar do conceito revolucionario, a ideia nao foi utilizada comer-
cialmente, e somente em meados de 1980 ficou clara a separação
entre o conceito de processo e thread;

26 of 44
 Ate o final da decada de 1970, os SO suportavam apenas processos
com um unico thread, ou seja, um processo com apenas um unico
programa fazendo parte do seu contexto;
 Em 1979, durante o desenvolvimento do Toth, foi introduzido o
conceito de processos lightweight (peso leve), onde o espaço de
endereçamento de um processo era compartilhado por vários pro-
gramas;
 Apesar do conceito revolucionario, a ideia nao foi utilizada comer-
cialmente, e somente em meados de 1980 ficou clara a separação
entre o conceito de processo e thread;
 A partir do conceito de múltiplos threads e possı́vel projetar e im-
plementar aplicações concorrentes de forma eficiente, pois um pro-
cesso pode ter partes diferentes do seu codigo sendo execu-
tadas em paralelo.

26 of 44
 Processos: programa em execução que contém um único fluxo de
execução.

27 of 44
 Processos: programa em execução que contém um único fluxo de
execução.
 Threads: programa em execução com múltiplos fluxos de execução.

27 of 44
 Processos: programa em execução que contém um único fluxo de
execução.
 Threads: programa em execução com múltiplos fluxos de execução.
 Thread ou linha de execução é uma das maneiras utilizadas por um
processo para dividir a si mesmo em duas ou mais tarefas que podem
ser executadas simultaneamente.

27 of 44
Processos Independentes, Sub-processos e Threads
 Processos independentes, subprocessos e threads são maneiras difer-
entes de implementar a concorrência dentro de uma aplicação.

28 of 44
Processos Independentes, Sub-processos e Threads
 Processos independentes, subprocessos e threads são maneiras difer-
entes de implementar a concorrência dentro de uma aplicação.
 Neste caso, busca-se subdividir o codigo em partes para trabalharem
de forma cooperativa.

28 of 44
Processos Independentes, Sub-processos e Threads
 Processos independentes, subprocessos e threads são maneiras difer-
entes de implementar a concorrência dentro de uma aplicação.
 Neste caso, busca-se subdividir o codigo em partes para trabalharem
de forma cooperativa.
 O uso de processos independentes e a forma mais simples de imple-
mentar a concorrência em sistemas multiprográmaveis;

28 of 44
Processos Independentes, Sub-processos e Threads
 Processos independentes, subprocessos e threads são maneiras difer-
entes de implementar a concorrência dentro de uma aplicação.
 Neste caso, busca-se subdividir o codigo em partes para trabalharem
de forma cooperativa.
 O uso de processos independentes e a forma mais simples de imple-
mentar a concorrência em sistemas multiprográmaveis;
 Subprocessos sao processos criados dentro de uma estrutura hierárquica;

28 of 44
Processos Independentes, Sub-processos e Threads
 Processos independentes, subprocessos e threads são maneiras difer-
entes de implementar a concorrência dentro de uma aplicação.
 Neste caso, busca-se subdividir o codigo em partes para trabalharem
de forma cooperativa.
 O uso de processos independentes e a forma mais simples de imple-
mentar a concorrência em sistemas multiprográmaveis;
 Subprocessos sao processos criados dentro de uma estrutura hierárquica;
 Neste modelo, o processo criador e chamado de processo pai en-
quanto o novo processo e chamado de processo filho.

28 of 44
Processos Independentes, Sub-processos e Threads
 Processos independentes, subprocessos e threads são maneiras difer-
entes de implementar a concorrência dentro de uma aplicação.
 Neste caso, busca-se subdividir o codigo em partes para trabalharem
de forma cooperativa.
 O uso de processos independentes e a forma mais simples de imple-
mentar a concorrência em sistemas multiprográmaveis;
 Subprocessos sao processos criados dentro de uma estrutura hierárquica;
 Neste modelo, o processo criador e chamado de processo pai en-
quanto o novo processo e chamado de processo filho.
 O conceito de thread foi introduzido na tentativa de reduzir o tempo
gasto na criação, eliminação e troca de contexto de processos nas
aplicações concorrentes, bem como economizar recursos do sistema
como um todo.

28 of 44
Ambiente Monothread

 Neste ambiente, aplicações concorrentes são implementadas apenas


com o uso de múltiplos processos independentes ou subprocessos;

29 of 44
Ambiente Monothread

 Neste ambiente, aplicações concorrentes são implementadas apenas


com o uso de múltiplos processos independentes ou subprocessos;
 A utilização de processos independentes e subprocessos permite di-
vidir a mesma em partes que podem trabalhar de forma concorrente
(exemplo de software de gestão de e-mails);

29 of 44
Ambiente Monothread

 Neste ambiente, aplicações concorrentes são implementadas apenas


com o uso de múltiplos processos independentes ou subprocessos;
 A utilização de processos independentes e subprocessos permite di-
vidir a mesma em partes que podem trabalhar de forma concorrente
(exemplo de software de gestão de e-mails);
 Com o uso de múltiplos processos, cada funcionalidade do software
implicaria a criação de um novo processo para atendé-la, aumen-
tando o desempenho da aplicação.

29 of 44
Monothread

 Ainda neste ambiente, um processo suporta apenas um programa


no seu espaço de endereçamento;

30 of 44
Monothread

 Ainda neste ambiente, um processo suporta apenas um programa


no seu espaço de endereçamento;
 Também aplicações concorrentes são implementadas apenas com o
uso de multiplos processos independentes ou subprocessos;

30 of 44
Monothread

 Ainda neste ambiente, um processo suporta apenas um programa


no seu espaço de endereçamento;
 Também aplicações concorrentes são implementadas apenas com o
uso de multiplos processos independentes ou subprocessos;
 A utilização de processos independentes e subprocessos permite di-
vider uma aplicação em partes que podem trabalhar de forma con-
corrente;

30 of 44
Monothread

 Ainda neste ambiente, um processo suporta apenas um programa


no seu espaço de endereçamento;
 Também aplicações concorrentes são implementadas apenas com o
uso de multiplos processos independentes ou subprocessos;
 A utilização de processos independentes e subprocessos permite di-
vider uma aplicação em partes que podem trabalhar de forma con-
corrente;
 São exemplos de sistemas monothread, o Microsoft MS-DOS, as
primeiras versões do MS-Windows, VAX/VMS e Unix.

30 of 44
!

31 of 44
Ambiente Multithread

 Em um ambiente multithread, ou seja, com multiplos threads, não


existe a idéia de programas associados a processos, mas, sim, a
threads;

32 of 44
Ambiente Multithread

 Em um ambiente multithread, ou seja, com multiplos threads, não


existe a idéia de programas associados a processos, mas, sim, a
threads;
 O processo, neste ambiente, tem pelo menos um thread de ex-
ecução, mas pode compartilhar o seu espaço de endereçamento com
inúmeros outros threads.

32 of 44
!

33 of 44
 De forma simplificada, um thread pode ser definido como uma sub-
rotina de um programa que pode ser executada de forma assı́ncrona,
ou seja, executada paralelamente ao programa chamador;

34 of 44
 De forma simplificada, um thread pode ser definido como uma sub-
rotina de um programa que pode ser executada de forma assı́ncrona,
ou seja, executada paralelamente ao programa chamador;
 O programador deve especificar os threads, associando-os as sub-
rotinas assı́ncronas;

34 of 44
 De forma simplificada, um thread pode ser definido como uma sub-
rotina de um programa que pode ser executada de forma assı́ncrona,
ou seja, executada paralelamente ao programa chamador;
 O programador deve especificar os threads, associando-os as sub-
rotinas assı́ncronas;
 Desta forma, um ambiente multithread, possibilita a execução con-
corrente de sub-rotinas dentro de um mesmo processo.

34 of 44
Arquitetura e Implementação

 conjunto de rotinas disponı́veis para que uma aplicação utilize as


facilidades dos threads é chamado de pacote de threads;

35 of 44
Arquitetura e Implementação

 conjunto de rotinas disponı́veis para que uma aplicação utilize as


facilidades dos threads é chamado de pacote de threads;
 Existem diferentes abordagens na implementação deste pacote em
um SO, o que influenciará no desempenho, na concorrência e na
modularidade das aplicações multithread;

35 of 44
Arquitetura e Implementação

 conjunto de rotinas disponı́veis para que uma aplicação utilize as


facilidades dos threads é chamado de pacote de threads;
 Existem diferentes abordagens na implementação deste pacote em
um SO, o que influenciará no desempenho, na concorrência e na
modularidade das aplicações multithread;
 Threads podem ser oferecidos por uma biblioteca de rotinas fora do
núcleo do SO (modo utilizador), pelo próprio núcleo do sistema
(modo kernel), por uma combinação de ambos (modo hı́brido) ou
por um modelo conhecido como scheduler activations

35 of 44
Threads em modo utilizador

 Threads em modo utilizador (TMU) são implementados pela aplicação


e não pelo SO;

36 of 44
Threads em modo utilizador

 Threads em modo utilizador (TMU) são implementados pela aplicação


e não pelo SO;
 Para isso, deve existir uma biblioteca de rotinas que possibilite à
aplicação realizar tarefas como criação/eliminação de threads, troca
de mensagens entre threads e uma polı́tica de escalonamento.

36 of 44
Threads em modo utilizador

 Threads em modo utilizador (TMU) são implementados pela aplicação


e não pelo SO;
 Para isso, deve existir uma biblioteca de rotinas que possibilite à
aplicação realizar tarefas como criação/eliminação de threads, troca
de mensagens entre threads e uma polı́tica de escalonamento.
 Neste modo, o SO não sabe da existência de múltiplos threads,
sendo responsabilidade exclusiva da aplicação a gestão e sincronizar
os diversos threads existentes.

36 of 44
Threads em modo kernel

 Threads em modo kernel (TMK) são implementados diretamente


pelo núcleo do SO, através de chamadas a rotinas do sistema que
oferecem todas as funções de gestão e sincronização;

37 of 44
Threads em modo kernel

 Threads em modo kernel (TMK) são implementados diretamente


pelo núcleo do SO, através de chamadas a rotinas do sistema que
oferecem todas as funções de gestão e sincronização;
 O SO sabe da existéncia de cada thread e pode escaloná-los indi-
vidualmente;

37 of 44
Threads em modo kernel

 Threads em modo kernel (TMK) são implementados diretamente


pelo núcleo do SO, através de chamadas a rotinas do sistema que
oferecem todas as funções de gestão e sincronização;
 O SO sabe da existéncia de cada thread e pode escaloná-los indi-
vidualmente;
 No caso de múltiplos processadores, os threads de um mesmo pro-
cesso podem ser executados simultaneamente.

37 of 44
!

38 of 44
Threads em Modo Hı́brido
 A arquitetura de threads em modo hı́brido combina as vantagens da
implementação dos outros dois modo (utilizador e kernel);

39 of 44
Threads em Modo Hı́brido
 A arquitetura de threads em modo hı́brido combina as vantagens da
implementação dos outros dois modo (utilizador e kernel);
 Um processo pode ter vários TMK e, por sua vez, um TMK pode
ter vários TMU.

39 of 44
Threads em Modo Hı́brido
 A arquitetura de threads em modo hı́brido combina as vantagens da
implementação dos outros dois modo (utilizador e kernel);
 Um processo pode ter vários TMK e, por sua vez, um TMK pode
ter vários TMU.
 O núcleo do sistema reconhece os TMK e pode escaloná-los individ-
ualmente;

39 of 44
Threads em Modo Hı́brido
 A arquitetura de threads em modo hı́brido combina as vantagens da
implementação dos outros dois modo (utilizador e kernel);
 Um processo pode ter vários TMK e, por sua vez, um TMK pode
ter vários TMU.
 O núcleo do sistema reconhece os TMK e pode escaloná-los individ-
ualmente;
 Um TMU pode ser executado em um TMK, em um determinado
momento, e no instante seguinte pode ser executado em outro.

39 of 44
Threads em Modo Hı́brido
 A arquitetura de threads em modo hı́brido combina as vantagens da
implementação dos outros dois modo (utilizador e kernel);
 Um processo pode ter vários TMK e, por sua vez, um TMK pode
ter vários TMU.
 O núcleo do sistema reconhece os TMK e pode escaloná-los individ-
ualmente;
 Um TMU pode ser executado em um TMK, em um determinado
momento, e no instante seguinte pode ser executado em outro.
 O programador desenvolve a aplicação em termos de TMU e especi-
fica quantos TMK estão associados ao processo;

39 of 44
Threads em Modo Hı́brido
 A arquitetura de threads em modo hı́brido combina as vantagens da
implementação dos outros dois modo (utilizador e kernel);
 Um processo pode ter vários TMK e, por sua vez, um TMK pode
ter vários TMU.
 O núcleo do sistema reconhece os TMK e pode escaloná-los individ-
ualmente;
 Um TMU pode ser executado em um TMK, em um determinado
momento, e no instante seguinte pode ser executado em outro.
 O programador desenvolve a aplicação em termos de TMU e especi-
fica quantos TMK estão associados ao processo;
 Os TMU são mapeados em TMK enquanto o processo está sendo
executado. O programador pode utilizer apenas TMK, TMU ou uma
combinação de ambos.

39 of 44
!

40 of 44
Scheduler activations

 Introduzido no inı́cio da década de 1990 na Universidade de Wash-


ington, este pacote combina o melhor das duas arquiteturas, mas em
vez de dividir os threads em modo utilizador entre os de modo kernel,
o núcleo do sistema troca informações com a biblioteca de threads
utilizando uma estrutura de dados chamada scheduler activations.

41 of 44
Modelos de Programação

 O desenvolvimento de aplicações multithread não é simples, pois


exige que a comunicação e o compartilhamento de recursos entre os
diversos threads seja feita de forma sincronizada para evitar proble-
mas de inconsistências;

42 of 44
Modelos de Programação

 O desenvolvimento de aplicações multithread não é simples, pois


exige que a comunicação e o compartilhamento de recursos entre os
diversos threads seja feita de forma sincronizada para evitar proble-
mas de inconsistências;
 Um factor importante em aplicações multithread é o número total
de threads e a forma como são criados e eliminados;

42 of 44
Modelos de Programação

 O desenvolvimento de aplicações multithread não é simples, pois


exige que a comunicação e o compartilhamento de recursos entre os
diversos threads seja feita de forma sincronizada para evitar proble-
mas de inconsistências;
 Um factor importante em aplicações multithread é o número total
de threads e a forma como são criados e eliminados;
 Se uma aplicação cria um número excessivo de threads, poderá ocor-
rer um overhead no sistema, ocasionando uma queda de desem-
penho.

42 of 44
Modelos de Programação

 Dependendo da implementação, a definição do número de threads


pode ser dinámica ou estática;

43 of 44
Modelos de Programação

 Dependendo da implementação, a definição do número de threads


pode ser dinámica ou estática;
 Quando a criação/eliminação é dinámica, os threads são criados/eliminado
conforme a demanda da aplicação, oferecendo grande flexibilidade;

43 of 44
Modelos de Programação

 Dependendo da implementação, a definição do número de threads


pode ser dinámica ou estática;
 Quando a criação/eliminação é dinámica, os threads são criados/eliminado
conforme a demanda da aplicação, oferecendo grande flexibilidade;
 Já em ambientes estáticos, o número de threads é definido na criação
do processo onde a aplicação será executada.

43 of 44
Duvidas ???

”A melhor forma de prever o futuro é criá-lo.”


Abraham Lincoln
44 of 44

Você também pode gostar