Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal....

23
Sistemas Operacionais Prof. Fabio Augusto Oliveira

Transcript of Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal....

Page 1: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Sistemas Operacionais

Prof. Fabio Augusto Oliveira

Page 2: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Threads

• Um processo representa uma sequênciade instruções única, executada paralelamente a outra seqüências de instruções.

• Um thread é uma maneira de um programa dividir a si mesmo em duas ou mais tarefas simultâneas.

Page 3: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Monothread

• Um programa é uma seqüência de instruções, composta por desvios, repetições e chamadas a procedimentos e funções.

• Em ambiente monothread, um processo suporta apenas um programa no seu espaço de endereçamento.

Page 4: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Monothread

• Neste ambiente, aplicações concorrentes são implementadas apenas com o uso de múltiplos processos independentes ou subprocessos.

• Esta utilização permite dividir uma aplicação em partes que podem trabalhar de forma concorrente.

Page 5: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Monothread

• Exemplo:– Uso de software de gerenciamento de e-

mails. Neste ambiente, um usuário pode estar lendo suas mensagens antigas, ao mesmo tempo que pode estar enviando e-mails e recebendo novas mensagens.

• Com o uso de múltiplos processos, cada funcionalidade do software implicaria a criação de um novo processo para atendê-la, aumentando o desempenho da aplicação.

Page 6: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Monothread

Subprocessos Processos Independentes

Page 7: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Monothread

• O problema neste tipo de implementação é que o uso de processos no desenvolvimento de aplicações concorrentes demanda consumo de diversos recursos do sistema.

• Sempre que um novo processo é criado, o sistema deve alocar recursos para cada processo.

Page 8: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Monothread

• Outro problema a ser considerado équanto ao compartilhamento do espaço de endereçamento.

• Cada processo possui seu próprio espaço de endereçamento, a comunicação entre processos torna-se difícil e lenta, pois utiliza mecanismos como pipes, sinais, semáforos, memória compartilhada ou troca de mensagem.

Page 9: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Monothread

• Na figura abaixo existem três processos monothreads, cada um com seu próprio contexto de hardware, contexto de software e espaço de endereçamento.

Thread ThreadThread

Page 10: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Monothread

• São exemplos de sistemas monothread o Microsoft MS-DOS e as primeiras versões do MS-Windows. Mesmo em ambientes multiprogramáveis e multiusuário, encontramos exemplos de implementações monothread, como nas versões mais antigas dos sistemas VAX/VMS e Unix .

Page 11: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

• 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 execução, mas pode compartilhar o seu espaço de endereçamento com inúmeros outros threads.

Page 12: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

Contextode hardware

Contextode hardware

Contextode hardware

Espaço deendereçamento

Con

text

o de

softw

are

Thread 3Thread 2Thread 1

Page 13: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

• 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.

• Desta forma um ambiente multithread possibilita a execução concorrente de sub-rotinas dentro de um mesmo processo.

Page 14: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

• Na figura abaixo existe um programa principal que realiza a chamada de duas sub-rotinas assíncronas (Sub_1 e Sub_2). Inicialmente, o processo é criado apenas com o Thread_1 para execução do programa principal.

• Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados os Thread_2 e Thread_3, respectivamente, e executados independentemente do programa principal. Neste processo, os três threads são executados concorrentemente.

Page 15: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

Espaço deendereçamento

Processo

Programa Principal

Con

text

o de

Har

dwar

eC

onte

xto

deH

ardw

are

Con

text

o de

Har

dwar

e

Call Sub_1

Call Sub_2

Thread_1

Thread_2

Thread_3

PCSP

PCSP

PCSP

Fim

Sub_2

Variáveis

Ret

Sub_1

Ret

......

Page 16: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

• No ambiente multithread, cada processo pode responder a várias solicitações concorrentemente ou mesmo simultaneamente, caso haja mais de um processador.

• Grande vantagem no uso de threads é a possibilidade de minimizar a alocação de recursos do sistema, além de diminuir o overhead na criação, troca e eliminação de processos.

Page 17: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

• Threads compartilham o processador da mesma maneira que processos e passam pelas mesmas mudanças de estado.

• Exemplo:– Enquanto um thread espera por uma

operação de E/S, outro thread pode ser executado.

Page 18: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

• A grande diferença entre aplicações monothread e multithread está no uso do espaço de endereçamento.

• Processos independentes e subprocessospossuem espaços de endereçamento individuais e protegidos, enquanto threads compartilham o espaço dentro de um mesmo processo.

Page 19: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

• Esta característica permite que o compartilhamento de dados entre threads de um mesmo processo seja mais simples e rápido, se comparado a ambientes monothreads.

• Como threads de um mesmo processo compartilham o mesmo espaço de endereçamento, não existe qualquer proteção no acesso à memória, permitindo que um thread possa alterar facilmente dados de outros.

Page 20: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

• O uso de multithreads proporciona uma série de benefícios. Programas concorrentes com múltiplos threads são mais rápidos do que programas concorrentes implementados com múltiplos processos, pois operações de criação, troca de contexto e eliminação dos threads geram menor overhead.

Page 21: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

Implementação Tempo de Criação (µs) Tempo de sincronização (µs)

Processo 1700 200

Processo Lightweight 350 390

Thread 52 66

Page 22: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

• A utilização do processador, dos discos e de outros periféricos pode ser feita de forma concorrente pelos diversos threads, significando melhor utilização dos recursos computacionais disponíveis.

• Em algumas aplicações, a utilização de threads pode melhorar o desempenho da aplicação apenas executando tarefas em background enquanto operações de E/S estão sendo processadas.

Page 23: Prof. Fabio Augusto Oliveira écriado apenas com o Thread_1 para execução do programa principal. • Quando o programa principal chama as sub-rotinas Sub_1 e Sub_2, são criados

Ambiente Multithread

• Aplicações como editores de texto, planilhas, aplicativos gráficos e processadores de imagens são especialmente beneficiados quando desenvolvidos com base em threads.

• Em ambientes cliente-servidor, threads são essenciais para solicitações de serviços remotos.