processos e threads - ipsltodi.est.ips.pt/nribeiro/lecturing/so_02-03/a02.pdf · processos e...

25
Processos e Threads

Upload: others

Post on 12-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

Processos e Threads

Page 2: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 2

ProcessosO modelo de processo

Multiprogramação de quatro programasModelo conceptual de 4 processos sequenciais independentesApenas 1 processo está activo em dado instante

Page 3: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 3

Criação de processos

Eventos principais que causam a criação de processos

– Inicialização de sistema

– Execução de um processo de criação do sistema

– Pedido de utilizador

– Inicialização de uma tarefa por batch

Page 4: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 4

Terminação de processos

Condições que terminam um processo:

– Saida Normal (voluntaria)

– Saida com erro (voluntaria)

– Erro fatal (involuntaria)

– Morto por outro processo (involuntaria)

Page 5: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 5

Hierarquia de processos

Pai cria processos filhos e processos filhos podemcriar os seus processos

Forma uma hierarquia– Em UNIX chama-se “grupo de processos"

Windows não tem a conceito de hierarquia de processos– Todos os processos são iguais

Page 6: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 6

Estado de processo (1)

Possiveis estados– running– blocked– ready

Transições entre estados na figura acima

Page 7: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 7

Estado de processo(2)

Lowest layer of process-structured OS– handles interrupts, scheduling

Above that layer are sequential processes

Page 8: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 8

Implementação de processos (1) Campos da tabela de processos

Page 9: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 9

Implementação de processos (2)

Lista de operações que um SO realizaquando recebe uma interrupção

Page 10: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 10

ThreadsO modelo de Thread (1)

(a) Três processos cada com um thread(b) Um processo com três threads

Page 11: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 11

O modelo de thread (2)

Items são partilhados por todos os threads de um processoItems privados por cada processo

Page 12: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 12

O modelo de thread (3) Cada thread tem o seu stack

Page 13: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 13

Utilização de thread (1) Um processador de texto com três threads

Page 14: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 14

Utilização de thread (2) Um servidor Web multi-threaded

Page 15: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 15

Utilização de thread (3)

Codigo para figura anterior:(a) Dispatcher thread(b) Worker thread

Page 16: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 16

Utilização de thread (4) Três formas de construir um servidor

Page 17: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 17

Implementação de threads no espaço do utilizadorUm grupo de threads do nível de utilizadores

Page 18: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 18

Implementação de threads no espaço KernelUm grupo de threads gerido pelo kernel

Page 19: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 19

Implementações hibridasMultiplexagem de threads do nível de utilizador em threads do nível do kernel

Page 20: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 20

Scheduler Activations

Goal – mimic functionality of kernel threads– gain performance of user space threads

Avoids unnecessary user/kernel transitionsKernel assigns virtual processors to each process– lets runtime system allocate threads to processors

Problem:– Fundamental reliance on kernel (lower layer) – calling procedures in user space (higher layer)

Page 21: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 21

Threads “pop-up”

Quando uma mensagem chega, é processada por outro thread:– (a) antes de a mensagem chegar– (b) depois de a mensagem chegar

Page 22: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 22

Conver. código single-thread em multi-thread (1)

Conflitos entre threads para acesso a variaveis globais

Page 23: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 23

Conver. código single-thread em multi-thread (2)

Threads podem ter variaveis globais privadas

Page 24: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 24

Posix threads#include<pthreads.h>

Void first_function(int*) {...}Void second_function(int*) {...}Void final_function(int*) {...}Main(){

pthread_t th1,th2;

pthread_create(&th1,..., first_function,...);pthread_create(&th1,..., second_function,...);

/* Quantos threads tems nesta altura em execução? */pthread_join(th1);pthread_join(th2);final_function();

}

Page 25: Processos e Threads - IPSltodi.est.ips.pt/nribeiro/Lecturing/SO_02-03/A02.pdf · Processos e Threads. 12/16/2002 2001/2002 2 Processos O modelo de processo Multiprogramação de quatro

12/16/2002 2001/2002 25

Exemplos de aplicação

SequencialWhile (TRUE){

Receber_questao();Obter_resposta();enviar_resposta();

}

ConcurrenteWhile (TRUE){

Receber_questao();if (fork == 0){

Obter_resposta();enviar_resposta();exit();

}

}

Multi-thread#include <pthread.h>

Void processar_um_pedido(){Obter_resposta();

enviar_resposta();}Main(){...While (TRUE){

Receber_questao();pthread_create(...,processar_um_pedido,...)

}

}