Вы находитесь на странице: 1из 26

Infra-Estrutura de Software

Processos e Threads

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

Trmino de Processos
Condies que levam ao trmino de processos Sada normal (voluntria) programado Sada por erro (voluntria) programado Erro fatal (involuntrio) Cancelamento por um outro processo (involuntrio)

Estados de Processos

Possveis estados de processos


em execuo bloqueado pronto

Camadas de Processos

Camada mais inferior de um SO estruturado por processos


trata interrupes, escalonamento, espao de endereamento

Acima daquela camada esto os processos sequenciais

Escalonamento de processos
Qual processo executa quando Processos prontos A parte do sistema operacional responsvel por essa deciso chamada escalonador
O algoritmo usado para tal chamado de algoritmo de escalonamento

Para que um processo no execute tempo demais, so usadas interrupes de relgio


Praticamente todos os computadores do suporte a isso

Implementao de Processos

Campos da entrada de uma tabela de processos Processo = estrutura de dados

Mltiplos processos

PCB = Process Control Block


Mantm info. de gerenciamento do processo

Implementao de Processos

Esqueleto do que o nvel mais baixo do SO faz quando ocorre uma interrupo

Utilizao de CPU
Modelada em termos do tempo bloqueado de um processo Um processo passa uma frao p de seu tempo esperando por E/S Considerando-se que h n processos na memria A utilizao mdia da CPU seria dada por: Utilizao CPU = 1 - pn

Threads
O Modelo de Thread (1)

Trs processos, cada um com um thread Um processo com trs threads

Threads: Motivao Concorrncia


Problemas:
Programas que precisam de mais poder computacional Dificuldade de implementao de CPUs mais rpidas Processos gastam tempo demais com entrada e sada

Soluo:
Construo de computadores capazes de executar vrias tarefas simultaneamente

Problemas com Concorrncia


No-determinismo
x = 1 || x = 2
Qual o valor de x aps a sua execuo?

Dependncia de Velocidade
[[ f(); x = 1 ]] || [[ g(); x = 2 ]] O valor final de x depende de qual das funes, f() e g(), terminar primeiro

Starvation
Processo de baixa prioridade precisa de um recurso que nunca fornecido a ele...

Problemas com Concorrncia (cont.)


Deadlock
Um sistema de bibliotecas s fornece o nada consta para alunos matriculados e o sistema de matricula s matricula os alunos perante a apresentao do nada consta

Definio: dois ou mais processos bloqueiam sua execuo pois um precisa de um recurso bloqueado pelo outro
Dependncia circular

Tcnicas para lidar com no determinismo podem levar a deadlock


Exigem que os processos reservem os recursos antes de us-los

O Modelo de Thread (2)

compartilhados

privados

Processos vs. Threads

Fonte: https://computing.llnl.gov/tutorials/pthreads/

O Modelo de Thread (3)

Cada thread tem sua prpria pilha Concorrncia cooperativa

Uso de Threads (1)

Um processador de texto com trs threads

Uso de Threads (2)

Um servidor web com mltiplas threads

Implementao de Threads de Usurio

Um pacote de threads de usurio

Por que threads em modo usurio?


+ so mais escalveis
(sem espao de tabela ou de pilha no ncleo -- diminui o tamanho deste ltimo)

+ permitem personalizao do escalonamento + exigem menos transies entre modo usurio e modo ncleo
trocas de contexto eficientes entre threads

Por que no?


- difcil implementar chamadas de sistema com bloqueio.
Necessrio antever se a chamada causaria bloqueio
ou todas as threads do processo podem ser bloqueadas por causa de apenas uma.

- Page faults bloqueiam todas as threads de um processo - Exigem uma infraestrutura adicional de tempo de execuo - No se beneficiam de suporte de hardware para acelerar mltiplas threads

Implementao de Threads de Ncleo

Um pacote de threads gerenciado pelo ncleo

Threads em modo ncleo

No apresentam vrios dos problemas das threads em modo usurio Mas so pesadssimas

Em termos de consumo de recursos

Java: no mximo, poucos milhares de threads Erlang: milhes de threads (limitadas apenas pela mquina)

Overhead na criao

Pouca flexibilidade para gerenciar o escalonamento So comumente recicladas

Implementaes Hbridas

Multiplexao de threads de usurio sobre threads de ncleo

Criao de um novo thread quando chega uma mensagem