![Page 1: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/1.jpg)
IC - UFF
Sistemas Operacionais
4. Threads
Texto base: capítulo 4
Operating Systems: Internals and Design Principles
W. Stallings
![Page 2: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/2.jpg)
IC - UFF
Processos e threads
Vimos o conceito de processo englobando duas características básicas: propriedade de recursos: a um processo é
alocado um espaço de endereçamento virtual para manter a sua imagem; de tempos em tempos o processo pode ter mais memória, além do controle de arquivos, dispositivos de E/S, ...
![Page 3: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/3.jpg)
IC - UFF
Processos e threads (2)
unidade de despacho: um processo é uma linha de execução, intercalada com outras linhas de outros processos; cada uma delas tem um estado de execução e uma prioridade; é a entidade que é escalonada e despachada pelo SO
![Page 4: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/4.jpg)
IC - UFF
Processos e threads (3)
Estas duas características podem ser tratadas de forma independente pelo SO: thread ou processo peso leve (lightweight
process): é a unidade de despacho processo ou tarefa: é a unidade de alocação
de recursos
![Page 5: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/5.jpg)
IC - UFF
Multithreading
um processouma thread
múltiplos processosuma thread por processo
múltiplos processosmúltiplas threads por processo
um processomúltiplas threads
MS-DOS
Unix
máquinaJava
Windows NT,Solaris
![Page 6: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/6.jpg)
IC - UFF
Assim, ...
Em um ambiente multithreaded, um processo: é a unidade de alocação e proteção de
recursos tem um espaço de endereçamento virtual que
mantém a imagem do processo tem acesso controlado a outros processos,
arquivos e outros recursos
![Page 7: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/7.jpg)
IC - UFF
e ... Em um processo podem existir uma ou mais
threads com um estado de execução (pronta, ...) seu contexto salvo quando não estiver executando sua pilha de execução acesso a variáveis locais próprias acesso compartilhado com outras threads deste
processo aos recursos do processo
![Page 8: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/8.jpg)
IC - UFF
Modelos de processos
Pilhado
usuário
Pilhado
núcleo
Espaço deender. dousuário
PCB
Threadúnica
Espaço deender. dousuário
TCB
Pilhado
usuário
Pilhado
núcleo
PCB
Thread
Multithreaded
TCB
Pilhado
usuário
Pilhado
núcleo
Thread
TCB
Pilhado
usuário
Pilhado
núcleo
Thread
![Page 9: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/9.jpg)
IC - UFF
Benefícios de threads É mais rápido criar uma thread que um processo É mais rápido terminar uma thread que um
processo É mais rápido chavear entre threads de um
mesmo processo Threads podem se comunicar sem invocar o
núcleo já que compartilham memória e arquivos
![Page 10: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/10.jpg)
IC - UFF
Contudo,
Suspender um processo implica em suspender todas as threads deste processo já que compartilham o mesmo espaço de endereçamento
O término de um processo implica no término de todas as threads desse processo
![Page 11: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/11.jpg)
IC - UFF
Exemplos de aplicação
Trabalho em primeiro e segundo planos: E/S e cálculo em planilhas
Processamento assíncrono: salvamento periódico em editores de texto
Aumento de velocidade de execução: paralelismo
Organização: facilidade de projeto e implementação
![Page 12: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/12.jpg)
IC - UFF
Estados de uma thread
Estados fundamentais: executando, pronta e bloqueada
Faz sentido o estado “suspensa”? O que acontece com as threads de um
processo quando uma delas bloqueia?
![Page 13: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/13.jpg)
IC - UFF
Exemplo: RPC
serv serv
processo 1
tempo
pedidoRPC
pedidoRPC
serv
serv
thread A
thread B
(processo 1)
pedidoRPC
pedidoRPC
executando
bloqueado(a)
![Page 14: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/14.jpg)
IC - UFF
Outro exemplo
thread A(processo 1)
tempo
pedidoE/S
pedidoatendido
thread B(processo 1)
thread C(processo 2)
processocriado
quantumexpira
executando bloqueada
quantumexpira
pronta
![Page 15: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/15.jpg)
IC - UFF
Exemplo de uso#include <stdio.h>#include <pthread.h>
void thr_func(int *id); /* codigo threads 1 e 3 */void thr_yield(int *id); /* codigo thread 2 */
int main(){pthread_t thr1,thr2,thr3; /* declara as threads */int nThrID1,nThrID2,nThrID3;
nThrID1 = 1;nThrID2 = 2;nThrID3 = 3;
/* cria threads: id, inic, funcao, param funcao */pthread_create(&thr1,NULL,(void* )thr_func,&nThrID1);pthread_create(&thr2,NULL,(void* )thr_yield,&nThrID2);pthread_create(&thr3,NULL,(void* )thr_func,&nThrID3);
/* espera fim das threads: id, status de saida */pthread_join(thr3,NULL);pthread_join(thr2,NULL);pthread_join(thr1,NULL);
}
![Page 16: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/16.jpg)
IC - UFF
Exemplo de uso (2)
/* codigo das threads 1 e 3 */void thr_func(int *id){
printf("Eu sou a thread %d\n",*id);}
/* codigo da thread 2 */void thr_yield(int *id){
sched_yield();printf("Eu sou a thread %d\n",*id);
}
/* compilacao: gcc -o threads -lthread -lposix4 threads.c */
![Page 17: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/17.jpg)
IC - UFF
Em que nível implementar?
Nível do usuário gerenciamento das threads é feito pela
aplicação o núcleo desconhece a existência de threads chaveamento entre threads não requer
privilégio de modo núcleo; isso elimina o gasto de dois chaveamentos de modo
escalonamento é feito pela aplicação
![Page 18: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/18.jpg)
IC - UFF
e mais ...
implementadas através de bibliotecas: executam em qualquer SO
Porém: chamada ao sistema bloqueia todas as
threads de um processo não aproveita os benefícios do
multiprocessamento (estão em algum processo!)
![Page 19: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/19.jpg)
IC - UFF
Ainda o nível
Nível do núcleo gerenciamento das threads é feito pelo núcleo núcleo mantém a informação de contexto para
processo e threads escalonamento e chaveamento das threads é
feito pelo núcleo bloqueio de uma thread não bloqueia as outras
![Page 20: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/20.jpg)
IC - UFF
e ainda ...
threads podem aproveitar a capacidade de multiprocessamento
usuário enxerga uma API para threads do núcleo
Porém: a transferência de controle entre threads de
um mesmo processo requer chaveamento para modo núcleo
![Page 21: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/21.jpg)
IC - UFF
Comparando implementaçõesLatências de operação (s)
Operação Threads:nível usuário
Threads:nível núcleo
Processos
Fork nulo 34 948 11.300Signal-wait 37 441 1.840
Obs.:
1. VAX monoprocessador executando SO tipo Unix2. chamada de procedimento neste VAX: 7s3. trap ao núcleo: 17s
![Page 22: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/22.jpg)
IC - UFF
Combinando modos ...
espaço dousuário
espaço donúcleo
P
threadnível núcleo
threadnível usuário
P Processo P
bibliotecade threads
![Page 23: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/23.jpg)
IC - UFF
Leitura suplementar
Operating Systems Concepts, A. Silberschatz e P.B. Galvin, Addison-Wesley
Modern Operating Systems, A.S. Tanenbaum, Prentice Hall
![Page 24: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/24.jpg)
IC - UFF
Threads: nível usuário
espaço dousuário
espaço donúcleo
bibliotecade threads
P
P Processothreadnível usuário
![Page 25: IC - UFF Sistemas Operacionais 4. Threads Texto base: capítulo 4 Operating Systems: Internals and Design Principles W. Stallings](https://reader036.vdocuments.site/reader036/viewer/2022062418/552fc0fa497959413d8b8b82/html5/thumbnails/25.jpg)
IC - UFF
Threads: nível núcleo
espaço dousuário
espaço donúcleo
P
threadnível núcleo
threadnível usuário
P Processo