fundamentos de sistemas operacionais - 2º período · 6.4 arquitetura e implementação; 6 ......

25
Redes de Computadores Fundamentos de Sistemas Operacionais - 2º Período

Upload: hoangduong

Post on 09-Nov-2018

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Redes de Computadores

Fundamentos de Sistemas

Operacionais - 2º Período

Page 2: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

PARTE II: PROCESSOS

E THREADS

SUMÁRIO

6. THREAD:

6.1 Introdução;

6.2 Ambiente Monothread;

6.3 Ambiente Multithread;

6.4 Arquitetura e Implementação;

6.5 Modelos de Programação.

Page 3: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.1 Introdução

Até o final da década de 1970, os sistemas operacionais suportavam apenas

processos com um único thread (monothread).

A partir do conceito de múltiplos threads (multithread) é possível projetar e

implementar aplicações concorrentes de forma eficiente.

Existem diferentes modelos para a implementação de threads em um SO,

onde desempenho, flexibilidade e custo devem ser avaliados.

Atualmente, o conceito de multithread pode ser encontrado em diversos SOs,

em função do aumento de popularidade dos sistemas com múltiplos

processadores, do modelo cliente-servidor e dos sistemas distribuídos.

Page 4: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.2 Ambiente Monothread

Neste ambiente, um processo suporta apenas um programa no seu espaço

de endereçamento.

Dessa forma, as aplicações concorrentes são implementadas apenas com o

uso de múltiplos processos independentes ou subprocessos.

Problemas:

O uso de processos no desenvolvimento de aplicações concorrentes

demanda consumo de diversos recursos do sistema; (consumindo tempo

do processador para alocação e desalocação destes recursos)

Cada processo possui seu próprio espaço de endereçamento, tornando a

comunicação entre processos difícil e lenta (uso de pipes, sinais, troca de

mensagens, etc...).

Page 5: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.2 Ambiente Monothread

Subprocessos Processos Independentes

Page 6: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.2 Ambiente Monothread

Thread ThreadThread

Page 7: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.3 Ambiente Multithread

Neste ambiente, com múltiplos threads, não existe a ideia de programas

associados a processos, mas, sim, a threads.

Um thread pode ser definido como uma sub-rotina de um programa que pode

ser executada de forma assíncrona, ou seja, concorrentemente ao

programa chamador.

Threads compartilham o processador da mesma maneira que processos e

passam pelas mesmas mudanças de estado (espera, pronto e execução).

Dentro de um mesmo processo, threads compartilham o mesmo contexto de

software e espaço de endereçamento com os demais threads, porém cada

thread possui seu contexto de hardware individual.

Page 8: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.3 Ambiente Multithread

Contextode hardware

Contextode hardware

Contextode hardware

Espaço deendereçamento

Co

nte

xto

de

soft

wa

re

Thread 3Thread 2Thread 1

Page 9: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Espaço deendereçamento

Processo

Programa Principal

Co

nte

xto

de

Ha

rdw

are

Co

nte

xto

de

Ha

rdw

are

Co

nte

xto

de

Ha

rdw

are

Call Sub_1

Call Sub_2

Thread_1

Thread_2

Thread_3

PCSP

PCSP

PCSP

Fim

Sub_2

Variáveis

Ret

Sub_1

Ret

...

...

Capítulo 6 - Thread

6.3 Ambiente Multithread

Page 10: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.3 Ambiente Multithread

Threads são implementados através de uma estrutura de dados,

denominada bloco de controle do thread (Thread Control Block - TCB).

O TCB armazena, além do contexto do hardware, mais algumas informações

relacionadas ao thread.

Em um ambiente monothread, o processo é ao mesmo tempo a unidade de

alocação de recursos e a unidade de escalonamento.

Em um ambiente multithread, a unidade de alocação de recursos é o

processo e cada thread representa uma unidade de escalonamento

independente.

Page 11: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.3 Ambiente Multithread

A grande diferença entre aplicações monothread e multithread está no uso

do espaço de endereçamento.

Programas concorrentes com múltiplos threads são mais rápidos do que

implementados com múltiplos processos. Vantagens:

Operações de criação, troca de contexto e eliminação dos threads geram

menor overhead; (vide tabela no próximo slide)

Comunicação entre threads pode ser realizada de forma rápida e

eficiente; (uso do espaço de endereçamento compartilhado)

Podem compartilhar facilmente outros recursos em um mesmo processo.

(como temporizadores, sinais, atributos de segurança, etc...)

Page 12: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.3 Ambiente Multithread

Latência de processos e threads (Vahalia, 1996)

* Processo que compartilha o mesmo espaço de endereçamento

Implementação Tempo de

criação (µs) Tempo de sincronização

(µs)

Processo 1700 200

Processo Lightweight* 350 390

Thread 52 66

Page 13: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.3 Ambiente Multithread

Em algumas aplicações, a utilização de

threads pode melhorar o desempenho

da aplicação apenas executando

tarefas em background.

Aplicações como editores de texto,

planilhas, aplicativos gráficos e

processadores de imagens são

especialmente beneficiadas quando

desenvolvidas com base em threads.

Thread deentrada

Thread degravação

Thread deexibição

Buffer

Page 14: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.3 Ambiente Multithread

Em ambientes cliente-servidor, threads são essenciais para solicitações de

serviços remotos.

Em um ambiente multithread, um thread pode solicitar o serviço remoto,

enquanto a aplicação pode continuar realizando outras atividades.

Para o processo que atende a solicitação, múltiplos threads permitem que

diversos pedidos sejam atendidos simultaneamente.

O núcleo do sistema também pode ser implementado em um ambiente

multithread. (como na arquitetura microkernel)

Page 15: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.3 Ambiente Multithread

Solicitações

Processo servidor

ThreadThread

Processo clienteProcesso cliente Processo cliente

Thread

Page 16: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.4 Arquitetura e Implementação

Threads podem ser oferecidos por uma biblioteca de rotinas fora do núcleo

do SO (modo usuário), pelo próprio núcleo do sistema (modo kernel), por

uma combinação de ambos (modo híbrido) ou por um modelo conhecido

como scheduler activations.

Page 17: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.4.1 Threads em Modo Usuário

TMU são implementados pela aplicação e não pelo SO. Para isso, deve

existir uma biblioteca de rotinas que possibilite à aplicação realizar tarefas

como criação/eliminação de threads, troca de mensagens e escalonamento.

Vantagens: possibilidade de implementar aplicações multithreads em SOs

que não suportam threads. São rápidos por dispensarem acessos ao kernel.

Problemas:

Tratamento individual de sinais;

O SO gerencia cada processo como se existisse apenas um único thread;

Em ambientes com múltiplos processadores, não é possível que múltiplos

threads de um processo possam ser executados simultaneamente.

Page 18: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.4.1 Threads em Modo Usuário

Modousuário

Modokernel

Kernel

Biblioteca

Th

rea

d 0

Th

rea

d 4

Th

rea

d 3

Th

rea

d 2

Th

rea

d 1

Page 19: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.4.2 Threads em Modo Kernel

TMK são implementados diretamente pelo núcleo do SO, através de

chamadas a rotinas do sistema que oferecem todas as funções de

gerenciamento e sincronização.

Problema para pacotes em modo kernel é o seu baixo desempenho.

Pacotes em modo kernel utilizam chamadas a rotinas do sistema e,

consequentemente, várias mudanças no modo de acesso.

Page 20: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.4.2 Threads em Modo Kernel

Modousuário

ModokernelKernel

Th

rea

d 0

Th

rea

d 4

Th

rea

d 3

Th

rea

d 2

Th

rea

d 1

Page 21: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.4.3 Threads em Modo Híbrido

Combina as vantagens de threads implementados em modo usuário (TMU) e

threads em modo kernel (TMK). Um processo pode ter vários TMKs e, por

sua vez, um TMK pode ter vários TMUs.

O programador desenvolve a aplicação em termos de TMUs e especifica

quantos TMKs estão associados ao processo.

Os TMUs são mapeados em TMK enquanto o processo está sendo

executado.

O modo híbrido, apesar da maior flexibilidade, apresenta problemas

herdados de ambas as implementações.

Page 22: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.4.3 Threads em Modo Híbrido

Modousuário

Modokernel

Kernel

TMK 0 TMK 3TMK 2TMK 1

Biblioteca

TM

U 0

TM

U 4

TM

U 5

TM

U 3

TM

U 2

TM

U 1

Page 23: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.4.4 Scheduler Activations

Os problemas apresentados no pacote de threads em modo híbrido existem

devido à falta de comunicação entre os threads em modo usuário e em modo

kernel.

A estrutura de dados chamada scheduler activations combina o melhor das

duas arquiteturas, realizando a troca informações do núcleo do sistema com

a biblioteca de threads.

A maneira de alcançar um melhor desempenho é evitar as mudanças de

modos de acesso desnecessárias (usuário-kernel-usuário).

Cada camada (biblioteca e kernel) implementa seu escalonamento de forma

independente, porém trocando informações quando necessário.

Page 24: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.4.4 Scheduler Activations

Modousuário

ModokernelKernel

Biblioteca

Th

rea

d 0

Th

rea

d 4

Th

rea

d 3

Th

rea

d 2

Th

rea

d 1

Page 25: Fundamentos de Sistemas Operacionais - 2º Período · 6.4 Arquitetura e Implementação; 6 ... Thread 6.1 Introdução Até o final da década de 1970, os sistemas operacionais suportavam

Capítulo 6 - Thread

6.5 Programação Multithread

O conjunto de rotinas disponíveis para que uma aplicação utilize as

facilidades dos threads é chamado de pacotes de threads.

O desenvolvimento de aplicações multithread exige que a comunicação e o

compartilhamento de recursos entre os diversos threads sejam feitos de

forma sincronizada.

Um fator importante em aplicações multithread é o número total de threads e

a forma como são criados e eliminados.

Para obter os benefícios do uso de threads, uma aplicação deve permitir que

partes do seu código sejam executadas concorrentemente de forma

independente.