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

Sistemas Operacionais

Processos e Threads

Contedo
Processos Threads InterProcess Communication Algoritmos de escalonamento

PROCESSOS
Processo nome que se d a um programa em execuo Um processo controla os valores atuais dos registradores da CPU, bem como variveis em memria Cada processo possui sua prpria CPU virtual Em sistemas multiprogramveis, os processos dividem a ateno da CPU Processos so comutados (chaveados) a fim de criar a iluso de que cada usurio tem a CPU exclusivamente para si

Processos (cont.)
Exemplo de 4 processos competindo pela CPU Somente um processo por vez, pois s h uma CPU e assim s um registrador PC real
Cada processo possui seu prprio registrador PC lgico Chavemento de contexto Iluso de que os 4 processos esto em paralelo

Criao de um Processo
Processos so criados por 4 eventos principais: Inicializao do sistema
Processos foreground e background (daemons)

Processos em execuo que usam uma system call para criar outros processos
Ex.: leitura de grandes quantidades de dados via um buffer

Solicitao de usurio para criao de um novo processo


Ex.: disparo de novos processos via teclado ou mouse

Inicializao de um job em sistemas batch


Para cada job um processo criado pelo processo SO

Criao de um Processo (cont.)


Processos so sempre criados por um processo em execuo via a system call correspondente
fork p2 p3

System call:
No unix fork No windows CreateProcess

p1

Quando criado, um processo filho tem o seu prprio espao de endereamento


No unix, isso ocorre em duas etapas

Destruio de um Processo
H 4 situaes em que um processo terminado Finalizao normal ao trmino da sua tarefa (voluntrio)
O prprio processo fecha seus arquivos abertos, e termina

Finalizao por erro detectado durante a sua execuo (voluntrio)


Processo detecta um erro externo e aborta execuo

Finalizao por erro fatal (involuntariamente)


Processo contm um erro (bug)

Finalizao por outro processo (involuntariamente)


O outro processo tem que ter privilgio para tal

Estados de um Processo

Um processo pode se encontrar nos seguintes estados


Execuo (running) Processo ocupa a CPU (exclusivamente) Pronto (ready) Processo est pronto para ocupar a CPU, mas deve esperar pela sua vez em fila Bloqueado (blocked) Processo no pode executar enquanto um evento externo (por exemplo, a resposta do controlador de HD) no ocorrer

Informaes agregadas a um Processo


O SO possui uma tabela contendo o ID de cada processo Cada registro da tabela refere-se a um processo Tais registros so chamados de PCB (Process Control Block)
PCB1 PCB2 PCB3

Tabela de processos

Todas as informaes relevantes aos processos esto nos seus PCBs. Ex.: o registrador PC, o registrador de pilha, os arquivos abertos, o usurio dono do processo, etc

THREADS
As threads otimizam o desempenho dos processos
Vrias tarefas podem ser executadas em paralelo dentro do processo Chaveamento entre processos muito dispendioso quando desnecessrio Nesse contexto, os processos agrupam recursos e as threads executam as tarefas junto CPU Uma thread representa um fluxo de execuo dentro do processo

Multithreading
info compartilhada por todas as threads
O S Proc ess
D ata Code
D escriptor

PROCESSO

chaveamento entre threads muito mais simples e rpido!

Stack

Stack D escriptor

Stack D escriptor

D escriptor
Thread 1

Thread 2

Thread n

as threads trabalham em cooperao e pertencem a um mesmo usurio

Caractersticas das Threads


Tal qual um processo, uma thread pode estar em um dos seguintes estados:
Execuo Pronto Bloqueado

Uma thread pode criar outras threads, mas o espao de endereamento comum a todas Todas as threads de um processo podem acessar/alterar um arquivo ou alocar memria Cada thread tem a sua prpria pilha para que o chaveamento entre threads ocorra eficientemente Como as threads so cooperativas, elas podem ceder a CPU umas s outras voluntariamente

Motivao para uso das Threads


Muitas aplicaes possuem mltiplas atividades que devem ser realizadas ao mesmo tempo Algumas dessas threads podem estar bloqueadas em alguns momentos Decompondo tais aplicaes em mltiplas threads seqnciais (rodando em paralelo) facilita a programao O fato de se compartilhar o espao de endereamento e todos os dados, torna as threads insubstituveis A criao de uma thread pode ser at 100 vezes mais rpido do que a criao de um processo Threads so muito teis em sistemas multiprocessados, onde o paralelismo real ocorre

Exemplo de uso das Threads


1- PROCESSADOR DE TEXTO (EX.: WORD)
Cada thread trabalha independentemente Usar 3 processos no funcionaria aqui: dados devem ser manipulados simultneamente ! Controla info vinda do teclado Controla formatao do texto na tela do micro

Controla backup automtico

Outro exemplo de uso das Threads


2- Um web server com multithread
A thread Dispatcher monitora solicitaes de acesso pgina e invoca uma thread worker Usa pgina em cache se possvel, SENO busca no Disco e fica bloqueado at recepo do disco

Possibilita iluso de paralelismo

Implementao de Threads
Threads podem ser implementadas como: Biblioteca de pacotes em espao de usurio Pacote gerenciado pelo kernel Pacote hbrido

IPC (InterProcess Communications)


Processos normalmente se comunicam
Uma padronizao para troca de info necessria Proteo entre os processos precisa ser garantida Sincronizao fundamental

Threads tambm se comunicam entre si, e as solues so similares s apresentadas aqui p/ processos
Processo A Processo B

O Problema da Seo Crtica


Quando dois our mais processos compartilham um recurso, pode haver problemas, como ilustrado aqui:
Exemplo: Impresso de arquivos Indentifica a 1a info ser impressa 1- Processo A l out=4 e in=7 2- A interrompido por B 3- B coloca sua info na posio 7 e atualiza in=8 4- Quando A retorna, ele sobrescreve a info de B, pois ele ainda entende que in=7

Identifica onde o dado a ser impresso pode ser inserido

Soluo ao Problema da Seo Crtica


Evitar que mais de um processo acesse a seo crtica ao mesmo tempo
EXCLUSO MTUA

Uma soluo completa e eficiente deve satisfazer as 4 condies seguintes:


A seo crtica no deve jamais estar sendo acessada por dois processos simultaneamente Nenhuma considerao a respeito da velocidade ou quantidade de CPUs deve existir Nenhum processo rodando fora de sua seo crtica pode bloquear outros processos Nenhum processo deveria esperar indefinidamente para acessar a sua seo crtica

Soluo ao Problema da Seo Crtica (cont.)


A excluso mtua evitando conflitos de acesso seo (regio) crtica

O Problema do produtor Consumidor


Um produtor produz dados que so consumidos por um consumidor (ex.:, spooler e impressora) Os dados produzidos e ainda no consumidos so armazenados em um BUFFER Podem haver vrios produtores e consumidores Idealmente o BUFFER de tamanho infinito
Variveis: in onde dado dever ser Inserido out dado a ser retirado

Algoritmos para Excluso mtua


Desabilitando interrupes Busy Waiting Varivel lock Instruo Test and Set Semforos Passagem de messagens

Desabilitando interrupes
Quando um processo entra na sua seo crtica, o mesmo desabilita todas a interrupes Fica assim garantido a esse processo acesso exclusivo seo crtica Ao sair da seo crtica, as interrupes so habilitadas Problemas
H que se permitir que processos de usurios desabilitem interrupes Em sistemas multiprocessados (mais de uma CPU), somente uma CPU ter as interrupes suspensas, os processos nas demais CPU podem acessar a seo crtica normalmente

Somente vivel para processos do sistema!

Busy Waiting variveis de trava (lock)


Existe uma varavel lock que inicializada com zero Um processo desejando acessar a seo crtica verifica se lock=0 Se sim, o processo entra na seo crtica e ajusta lock=1 Demais processos devem aguardar at que lock retorne a zero Apresenta os mesmos problemas vistos no exemplo do servidor de impresso Busy waiting significa um processo executando um loop para detectar seo crtica livre Busy wating desperdcio de CPU

Instruo TSL (hardware)


TSL (Test and Set Lock) existe na maioria dos computadores Ocorre busy waiting! TSL RX, LOCK (RXLOCK e LOCK1)

TSL indivisvel, no pode ser interrompida

Semforo (S)
Possui um contador (cont) e uma fila Somente duas operaes: UP e DOWN
DOWN(S){ s.count-- ; if(s.count<0){ coloque o processo na s.fila; entre em estado de bloqueio; } else {entra na seo crtica} } UP(S){ s.count++ ; if(s.count<=0){ remove um processo P da s.fila; coloque o processo P na lista de pronto; } }

semforo
fila cont

* Incialmente s.cont=1, a cada nova solicitao pela seo crtica o seu valor decrementado * O valor int. do contador representa qtidade de acessos pendentes Ex.: aps 3 solicitaes simultneas s.fila: 2 processos s.count: -2

Passagem de Mensagens
Mais appropriado sistemas distribudos e multiprocessados com memria compartilhada Mensagens
Send(destino,mensagem) Receive(origem,mensagem)

Perda de mensagens pode ocorrer Troca de mensagens pode ser


Direta Indireta via caixas de mensagens ou portas

comum em arquiteturas cliente servidor

Algoritmos de Escalonamento
Na multiprogramao, o escalonador decide qual processo deve obter a CPU Aspectos importantes Um bom escalonador !
Tempo de resposta Throughput Eficincia do processador

pronto bloqueado

- Prioriza processos importantes - No deixa processos esperando indefinidamente

pronto pronto escalonador

pronto execuo

Processos CPU-bound e I/O-bound


H processos que permanecem a maior parte do tempo em execuo, enquanto outros mais esperam por sinalizao de perifricos
(a) Processo CPU-bound (b) Processo I/O-bound

Escalonador deve considerar tais caractersticas !!!

Categorias de Escalonadores
Escalonadores especficos para os sistemas
Batch preempo no necessria Interativo preempo necessria Tempo real processos so normalmente limitados por definio

Preempo: possibilidade de um processo ser retirado de execuo pelo escalonador por limite de tempo

tempo real - predio

Todos - fairness - distr. carga interativo - t. Resposta - proporc.

Principal objetivo de cada escalonador

batch - throuhgput - turnaround - uso CPU

O Escalonador Shortest Job First (SJF)


O processo selecionado pelo tamanho, o menor primeiro Apropriado para sistemas batch No preemptivo Tempo de execuo dos processos deve ser conhecido a priori
FIFO SJF

SJF s mais eficiente se todos os processos estiverem disponveis simultaneamente

O Escalonador de 3 nveis
Possui trs escalonadores distintos:
de admisso, de memria e de CPU

Seleciona os processos verificando por ex. CPU e I/O-bound

periodicamete verifica os processos - Durao no disco - Tempo de uso da CPU - Tamanho do processo - Importncia do processo

O Escalonador Circular (Round-Robin)


Um dos mais simples, antigo, justo (fair) e usado algoritmo A cada processo atribudo uma fatia de tempo (quantum) H uma fila com os processos prontos para execuo Processos que usam a CPU alm da sua fatia so colocados no final da fila Definio do valor do quantum crtico
Se muito pequeno, ocorre perda de rendimento chaveamento de contexto Se muito grande, torna operaes interativas muito lentas Processo selecionado D C B A devido

O Escalonador com prioridades


Cada processo tem uma prioridade O de maior prioridade escolhido em primeiro lugar Normalmente processos tm suas prioridades reduzidas a cada execuo beneficiando processos de menor prioridade Podem ser agrupados em classes de prioridade
Como ajustar prioridades ? Exemplo: Fatia de tempo: 50 ms 1- Uso da fatia: 1ms Prioridade:50/1=50 2- Uso da fatia: 25ms Prioridade:50/25=2

Leitura Complementar
Sistemas Operacionais Modernos, 2a Andrew Tanenbaum, Editora Pearson, 2003. Operating Systems (4th edition), William Stallings, Prentice Hall, 2001 Sistemas Operacionais - Conceitos e Aplicaes, A, Silberschatz, P. Galvin, e G. Gane, Editora Campus, 2001. edio

Sistemas Operacionais R. S. Oliveira, A. Carissimi e S. Toscani, Editora Sagra Luzzatto, 2004