A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Operacionais

Apresentações semelhantes


Apresentação em tema: "Sistemas Operacionais"— Transcrição da apresentação:

1 Sistemas Operacionais
Threads

2 Problema com Processos
Nos anos 80, foi descoberto que a noção tradicional de um sistema operacional, de um processo que executa um único fluxo de execução, era diferente dos requisitos dos sistemas operacionais distribuídos. Solaris (anos 90), originalmente, utiliza processos.

3 Problema com Processos
E também, diferente dos requisitos dos aplicativos mais sofisticados que utilizam um único processador, mas que exigem concorrência de suas atividades internas.

4 Solução para o Processamento Concorrente
Aprimorar a noção de processo, para que ele pudesse ser associado a múltiplas atividades internas a ele.

5 Surgimento de Threads Com o surgimento de processadores de mais alto desempenho, uma nova unidade de processamento concorrente pode ser definida dentro do próprio processo, novos fluxos de execução e assim pode-se ter múltiplos fluxos de execução (múltiplas threads) num mesmo processo. Cada fluxo de execução é chamado Thread.

6 Processos Assim, o conceito de processos pode ser dividido em dois: 1: Um conjunto de recursos necessários para a execução de um programa. Ex: um espaço de endereçamento (virtual address space) que contêm o texto do programa e os seus dados uma tabela de Descritores de Ficheiros abertos informação sobre processos filhos código para tratar de sinais (signal handlers) informação sobre o próprio ( Permissões, Nome do Utilizador, Inventário) etc. 2 Uma linha ou contexto de execução, chamada “Thread” Uma thread tem um programa counter (pc) que guarde informação sobre a próxima instrução a executar Registadores – valores das variáveis actuais Stack – contem a história de execução com um “frame” para cada procedimento chamado mas não terminado

7 Threads Atualmente, um processo consiste em um ambiente de execução, contendo uma ou mais threads. Thread: unidade de processamento concorrente nos sistemas operacionais atuais, dentro de um processo.

8 Contexto de uma Thread Um identificador da Thread.
Um segmento de código. Um segmento de dados. Os valores dos registradores da CPU. O contador de programa. Uma pilha de execução. O estado da Thread. Informações para escalonamento (prioridade, ...) Dados para contabilização de uso. Recursos alocados que pertencem a processos: arquivos, portas, eventos, outros.

9 Threads Definição: Threads (linhas de execução) são atividades (tarefas internas) concorrentes executadas dentro de um processo. Um processo pode ter uma ou mais threads.

10 Threads - Benefícios Os benefícios da programação multithread podem ser divididos em 4 categorias. 1 categoria: – Responsividade: o uso de multithreads em uma aplicação interativa pode permitir que um programa continue funcionando mesmo que parte dele esteja bloqueado ou realizando uma operação longa, aumentando a capacidade de resposta ao usuário.

11 Threads - Benefícios 2 categoria:
– Compartilhamento de recursos: como padrão, as threads compartilham memória e os recursos do processo ao qual pertencem. O benefício do compartilhamento do código é que isso permite que uma aplicação tenha várias threads de espaço de atividades diferentes dentro do mesmo endereçamento.

12 Threads - Benefícios 3 categoria:
– Economia: a alocação memória e recursos para a criação de processo é dispendiosa. Como threads compartilham recursos do processo ao qual pertencem, é mais econômico criar e trocar de contexto das threads.

13 Threads - Benefícios 4 categoria:
– Utilização de arquiteturas multiprocessadas: os benefícios são aumentados em uma arquitetura multiprocessada, na qual as threads podem ser executadas em paralelo nos diferentes processadores. O uso de múltiplas threads em uma máquina de múltiplas CPUs aumenta a concorrência.

14 Threads de usuário e de kernel
Até aqui as threads foram tratadas de forma genérica. Mas o suporte para as threads pode ser fornecido no nível do usuário, para threads de usuário, ou pelo kernel, para threads de kernel. Threads de usuário: São admitidas acima do kernel e gerenciadas sem suporte do kernel. Threads de kernel: São admitidas e gerenciadas diretamente pelo SO.

15 Modelos de múltiplas threads (Multithreading)
É preciso que haja um relacionamento entre threads nos níveis de usuários e kernel. Existem 3 formas relacionamento: Modelo muitos-para-um Modelo um-para-um Modelo muitos-para-muitos de estabelecer esse

16 Modelo muitos-para-um
Associa muitas threads no nível do usuário a uma única thread de kernel. O gerenciamento de threads é feito no espaço de usuário. O processo inteiro será bloqueado, se uma thread fizer uma chamada de sistema bloqueante. Como somente uma thread pode acessar o kernel por vez, várias threads não podem ser executadas em paralelo em multiprocessadores.

17 5.2.1 Modelo muitos-para-um

18 Modelo um-para-um Associa a thread de cada usuário a uma thread de
kernel. Provê maior concorrência do que o modelo anterior, permitindo que outra thread seja executada quando uma thread faz uma chamada de sistema bloqueante. Permite que várias threads sejam executadas em paralelo em multiprocessadores. Para cada thread de usuário criado requer criar o thread de kernel, prejudicando o desempenho da aplicação.

19 Modelo um-para-um

20 Modelo muitos-para-muitos
Multiplexa muitos threads de usuários em um n°. menor ou igual de threads de kernel. Permite que o sistema operacional crie um número suficiente de threads de kernel. Possui escalonamento, um thread para um kernel de cada vez. Thread de kernel pode executar em paralelo em um sistema multiprocessado. Quando uma thread realiza uma chamada de sistema bloqueante, o kernel pode escalonar outra thread.

21 Modelo muitos-para-muitos

22 Multithreading Múltiplas threads executam concorrentemente em um processo, e é análogo a múltiplos processos executando concorrentemente em um único processador. Threads pertencentes a um mesmo processo, compartilham os mesmos recursos e memória (espaço de endereçamento) do processo.

23 Multithreading Suporte a Threads:
Threads nativas do SO (entidades a nível de kernel). Threads como entidades a nível do usuário. Suporte de programação multithreading. Exemplo: JVM do Java Linguagem de programação multithreading. Exemplo: Java

24 Três Processos - cada um com uma Thread
Cada thread tem seu espaço de endereçamento. Thread Contador de Programa Processo

25 Um Processo com três Threads
Todas num mesmo espaço de endereçamento. Processo Multiplas Threads

26 Processos e Threads Um confeiteiro. O confeiteiro é o processador.
Um Livro de Receitas é um processo. Uma receita corresponde a uma Thread. Fazer um bolo de aniversário. Ingredientes: farinha, ovos, açucar, ... Os ingredientes são os dados.

27 Processos e Threads O processo é a atividade que consiste em nosso confeiteiro ler a receita (Thread), buscar os ingredientes (Thread), bater o bolo (Thread) e cozinhar o mesmo (Thread).

28 Alternando para outro processo
Confeiteiro, Filho do confeiteiro, Abelha Ferrada da abelha no filho do confeiteiro. Confeiteiro precisa socorrer o filho. O confeiterio registra onde estava na receita (o estado e o contexto do processo são salvos).

29 Alternando para outro processo
Confeiteiro procura um livro de pronto-socorro (outro processo). Segue a orientações do livro. O Confeiteiro alterna do processo (Livro de Receitas para Fazer o Bolo) para outro, de prioridade mais alta (Livro de Pronto Socorro), cada um sendo um processo diferente (receita e livro).

30 Processo “Livro de Pronto Socorro”
Threads ??? Ler o procedimento médico Desinfetar o local da picada Colocar curativo

31 Processo é uma atividade
Quando a picada for tratada, o confeiteiro volta a fazer o seu bolo, continuando do ponto onde parou, quando abandonou o processo (Fazer o Bolo). A ideia é que processo é um tipo de atividade que é concorrente a outros processos. E em cada atividade (Livro de Receitas / Livro Pronto-Socorro) existem tarefas, para “Fazer um Bolo” ou “Um Atendimento Médico”, que correspondem às threads.

32 Threads É a divisão dos processos para realizar tarefas em paralelo
Ao se dividir um processo existente em tarefas independentes que podem ser executadas em paralelo, cada uma dessas tarefas receberá o nome de Thread. Os SO atuais não executam os programas inteiramente de uma vez, ao invés disso ele divide os softwares em várias threads que são executadas em modo de concorrência. Essa troca de programas ou threads é chamada de escalonamento.

33 Ciclo de Vida de um Processo/Thread
Criado Pronto Suspenso Rodando Morto

34 Estados de um Processo/Thread
Pronto: pronto para ser executado, mas sem o direito de usar o processador. Rodando: sendo executado pelo processador. Suspenso: aguarda operação de I/O, liberação de um recurso ou fim de tempo de espera em uma fila.

35 Estado Suspenso Dormindo – em espera temporizada.
Bloqueado – aguarda I/O. Em Espera - aguarda uma condição ser satisfeita.

36 Mudança de Estado de um Processo
Processos/Threads trocam de estado de acordo com o: Algoritmo de escalonamento. Troca de mensagens entre esses. Interrupções de hardware ou software.

37 Threads Da mesma forma que os processos.
Cada thread tem seu estado e segue um ciclo de vida particular. A vida da thread depende do seu processo.

38 Troca de Contexto Quando duas threads de um mesmo processo
se alternam no uso do processador, ocorre uma troca de contexto parcial. Numa troca parcial, o contador de programa, os registradores e a pilha devem ser salvos.

39 Processos x Threads Troca de Contexto: Completa | Parcial
Comunicação: Inter-Processo | Inter-Threads Suporte em S.O.’s: Quase todos | Os mais atuais Suporte em Linguagem de Programação: Quase todas | As mais recentes

40 Referências Capítulo 5 da referência abaixo:
– SILBERSCHATZ, ABRAHAM; GAGNE, GREG; GALVIN, PETER BAES. Sistemas operacionais: com java. . Rio de Janeiro: Elsevier, 2004.


Carregar ppt "Sistemas Operacionais"

Apresentações semelhantes


Anúncios Google