• Nenhum resultado encontrado

sistemasoperacionaiscap6

N/A
N/A
Protected

Academic year: 2021

Share "sistemasoperacionaiscap6"

Copied!
32
0
0

Texto

(1)

Arquitetura de

Sistemas

Operacionais

Professor Sandro Teixeira Pinto

E-mail: sandro.pinto@unifil.br

(2)

Thread

6.1

Um outro mecanismo para execução de tarefas concorrentes ;

Linhas de controle de um mesmo processo;

Independentes;

Podem ser executadas concorrentemente;

Compartilham o mesmo espaço de endereçamento;

(3)

Thread

6.1

Por definição uma THREAD são

várias linhas de execução DENTRO

de um mesmo processo;

(4)

Monothread

6.2

Em um ambiente monothread, um

processo suporta apenas um programa

no seu espaço de endereçamento.

Neste ambiente, aplicações concorrentes

são implementadas apenas com o uso de

múltiplos processos independentes ou

(5)

Monothread

(6)

Monothread

6.2

Na utilização de processos independentes

e subprocessos permite dividir uma

aplicação em partes que podem trabalhar

de forma concorrente.

EX: gerenciamento de e-mails.

Neste ambiente podemos estar lendo

mensagens antigas e ao mesmo tempo

enviando e recebendo novas mensagens.

(7)

Monothread

6.2

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.

(8)

Monothread

6.2

Um problema neste tipo de implementação é que o uso de processos no desenvolvimento de

aplicações concorrentes demanda consumo de diversos recursos do sistema.

Outro problema é quanto ao compartilhamento de espaço de endereçamento. Como cada processo possui seu próprio espaço de endereçamento a comunicação entre processos fica difícil e lenta.

(9)

Monothread

6.2

Nesta figura existem três processos

monothreads cada um com seu próprio

contexto de hardware, software e espaço

de endereçamento.

(10)

Ambiente Multithread

6.3

Em ambiente multithread, não existe a idéia de

programas associados a processos, mas a

threads.A figura mostra um processo com 3

threads em execução

compartilhando o mesmo espaço de

(11)

Ambiente Multithread

6.3

Um Thread pode ser definido como uma

sub-rotina de um programa que pode ser

executada de forma assíncrona, ou seja,

executada concorrentemente ao

programa chamador.

No ambiente multithread, cada processo

pode responder a várias solicitações

concorrentemente, caso haja mais de um

processador.

(12)

Ambiente Multithread

6.3

Existe sempre 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, quando o programa

principal chama as sub-rotinas são

criados novos threads.

(13)

Ambiente Multithread

(14)

Ambiente Multithread

Threads compartilham o processador da

mesma maneira que processos e passam

pelas mesmas mudanças de estado

(execução, espera e pronto).

Ex: quando um thread espera por uma

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

executado.

(15)

Ambiente Multithread

Threads são implementados internamente através de uma estrutura de dados denominada BLOCO DE CONTROLE DO THREAD( thread control block- TCB ).

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

exclusivamente ao thread, como:

• Prioridade;

• Estado de execução;

• Bits do estado;

(16)

Ambiente Multithread

A utilização do processador, discos e outros periféricos pode ser feita de forma concorrente pelos diversos threads.Em algumas aplicações a utilização de threads pode melhorar o desempenho da aplicação apenas executando tarefas em

Background(sem usuário), enquanto operações de E/S estão sendo

processadas.

Ex: editores de texto, planilhas, gráficos, etc.

(17)

Ambiente Multithread

Em ambientes cliente-servidor, os threads são

essenciais para solicitações de serviços

remotos.

Em ambiente multithread, um thread pode

solicitar o serviço remoto, enquanto a

aplicação pode continuar realizando outras

atividades, permitindo que diversos pedidos

sejam atendidos simultaneamente.

(18)

Ambiente Multithread

(19)

Programação Multithread

O conjunto de rotinas disponíveis para que uma

aplicação utilize as facilidades dos threads é

chamada de pacotes de Threads.

O escalonamento dos threads é realizada pelo

sistema operacional, independentemente da

ordem que foram criados.

Ver programa na página 94 e 95.

(20)

Programação Multithread

Um fator importante em aplicações multithread é o número total de threads e a forma como são criados e eliminados.

Se a aplicação cria um número excessivo de threads poderá ocorrer um overhead no sistema,

ocasionando uma queda no desempenho.

Dependendo da implementação, a definição do

número de threads pode ser dinâmica ou estática.Em dinâmica os Threads são criados e eliminados

conforme a demanda, já em estáticos, o número de threads é definido na criação do processo.

(21)

Arquitetura e Implementação

A arquitetura dos threads podem ser oferecidos

das seguintes formas:

Biblioteca de rotinas fora do núcleo do

sistema operacional ( modo usuário );

Núcleo do sistema ( modo Kernel );

Combinação de ambos ( modo Híbrido );

Modelo conhecido como Scheduler

Activations.

(22)

Arquitetura e Implementação

(23)

Arquitetura e Implementação

Threads em modo Usuário

Threads em modo usuário(TMU) são

implementados pela aplicação e não pelo

sistema operacional.

Existe uma biblioteca de rotinas que possibilite

à aplicação realizar tarefas como criação e

eliminação de threads, troca de mensagens

entre threads e uma política de

escalonamento.

(24)

Arquitetura e Implementação

Threads em modo Usuário

A vantagem deste modelo é a possibilidade de

implementar aplicações multithreads mesmo

em sistemas operacionais que não suportam

threads.

Utilizando de biblioteca, múltiplos threads

podem ser criados, compartilhando o mesmo

espaço de endereçamento do processo, além

de outros recursos.

TMU são rápidos e eficientes por dispensarem

acessos ao kernel do SO.

(25)

Arquitetura e Implementação

Threads em modo Usuário

(26)

Arquitetura e Implementação

Threads em modo Usuário

TMU possui uma grande limitação, pois o sistema operacional gerencia cada processo como se

existisse apenas um único thread.

No momento em que um thread chama uma rotina do sistema que o coloca em estado de espera, todo o processo é colocado em estado de espera, mesmo havendo outros threads prontos para execução.

Para contornar esta limitação, a biblioteca tem que possuir rotinas que substituam as rotinas

bloqueantes.

(27)

Arquitetura e Implementação

Threads em modo Kernel

Threads em modo Kernel (TMK) são implementados diretamente pelo núcleo do sistema operacional, através de chamadas de rotinas do sistema que oferecem todas as funções de gerenciamento e sincronização.

O sistema operacional sabe da existência de cada thread e pode escaloná-los

individualmente.

(28)

Arquitetura e Implementação

Threads em modo Kernel

Neste pacote em modo Kernel existe um grande problema: seu baixo desempenho.

Enquanto nos pacotes em modo usuário é feito sem ajuda do sistema operacional, ou seja, sem a

mudança do modo de acesso(usuário-Kernel- usuário), pacotes em modo kernel utilizam chamadas de rotinas do sistema, com várias mudanças do modo de acesso.

(29)

Arquitetura e Implementação

Threads em modo Híbrido

A arquitetura de Threads em modo Híbrido combina as vantagens de threads implementados em modo usuário(TMU) e modo Kernel(TMK).

(30)

Arquitetura e Implementação

Scheduler Activations

6.5.4

O modelo ideal deveria utilizar as facilidades do pacote em modo Kernel com o desempenho e a flexibilidade do modo usuário.

Este pacote combina o melhor das duas arquiteturas, mas ao contrário de dividir os threads em modo usuário entre os de modo Kernel o núcleo do sistema troca informações com a biblioteca de threads.

(31)

Arquitetura e Implementação

Scheduler Activations

6.5.4

O modelo ideal deveria utilizar as facilidades do pacote em modo Kernel com o desempenho e a flexibilidade do modo usuário.

Este pacote combina o melhor das duas arquiteturas, mas ao contrário de dividir os threads em modo usuário entre os de modo Kernel o núcleo do sistema troca informações com a biblioteca de threads.

(32)

Referências

Documentos relacionados

O conhecimento da capacidade de infiltração em um ambiente de referência, como é o Parque Nacional do Iguaçu, pode fornecer informações aplicáveis à avaliação de

A mitomicina apenas pode ser diluída em água para preparações injectáveis, soro fisiológico ou solução de dextrose a 20%.. Não deve ser associada a nenhum

O objetivo principal com este trabalho é determinar possíveis espécies indicadoras de condições ambientais para riachos pertencentes à bacia do alto São Francisco, Minas

Neste sentido, o presente estudo busca como objetivo principal realizar um revisão de literatura sobre as atuais intervenções realizadas nas empresas com vistas a minimizar os

Em síntese, no presente estudo, verificou-se que o período de 72 horas de EA é o período mais ad- equado para o envelhecimento acelerado de sementes de ipê-roxo

Deuteronômio 26:12-13 “Quando acabares de separar todos os dízimos da tua colheita no ano terceiro, que é o ano dos dízimos, então os dará ao levita, ao

Todavia, apesar da disposição que aconselha à prá- tica dos negócios relativos à Fazenda da casa “e couzas que a ella perten- çem ao menos huma vez na somana” à Quarta-feira e

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for