Unidade 1-2 Processos e Threads - PowerPoint PPT Presentation

1 / 34
About This Presentation
Title:

Unidade 1-2 Processos e Threads

Description:

Unidade 1-2 Processos e Threads – PowerPoint PPT presentation

Number of Views:101
Avg rating:3.0/5.0
Slides: 35
Provided by: bosco
Category:

less

Transcript and Presenter's Notes

Title: Unidade 1-2 Processos e Threads


1
Unidade 1-2 Processos e Threads

2
O que é um Processo
  • Um processo é uma atividade (ou tarefa) de um
    programa, que contém o código e dados de uma
    atividade.
  • Essas são leitura de dados, escrita de dados,
    cálculos no processador, comunicação com o
    usuário, comunicação com um BD, comunicação com a
    rede interna ou externa, entre outras.

3
Processos
  • Um trecho de código em execução em uma máquina.
  • É a unidade de processamento concorrente que um
    processador sob um SO pode processar.
  • Identificado pelo seu PID (Process Identifier).
  • Unix (anos 70) foi construído para executar
    processos.

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

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

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

7
Processo
  • Um processo é uma entidade a nível de kernel, que
    possui um espaço de endereçamento.
  • O único modo para seu programa acessar a dados na
    estrutura (contexto) de um processo, consultar ou
    mudar seu estado, é via uma chamada de sistema.

8
Contexto de um Processo
  • Um identificador do processo (PID).
  • Um segmento de código.
  • Um segmento de dados.
  • Os valores dos registradores da CPU.
  • Um contador de programa lógico.
  • Uma pilha de execução.
  • O estado do processo.
  • Informações para escalonamento (prioridade,
    tempo)
  • Dados para contabilização de uso.
  • Recursos alocados arquivos, portas, eventos,
    outros.

9
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 é chamada Thread.

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

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

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

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

14
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

15
Três Processos - cada um com uma Thread
  • Cada thread tem seu espaço de endereçamento.

Thread
Contador de Programa
Processo
16
Um Processo com três Threads
  • Todas num mesmo espaço de endereçamento.

Processo
Multiplas Threads
17
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.

18
Processo e Thread
  • 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).

19
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).

20
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).

21
Processo Livro de Pronto Socorro
  • Threads ???
  • Ler o procedimento médico
  • Desinfetar o local da picada
  • Colocar curativo

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

23
Escalonamento de Threads
  • Todo SO tem um programa chamado Scheduler (o
    escalonador do SO) que seleciona, num dado
    instante, uma thread que deve ser executada pelo
    processador, alternando este entre threads.

24
Algoritmo de Escalonamento
  • Define a ordem de execução de processos/ threads
    com
  • base em uma fila ou prioridade da thread.
  • Processos/Threads do sistema SO e de aplicações
    críticas exigem maior prioridade.
  • Em geral, os sistemas operacionais adotam uma
    política para atender a todas os
    processos/threads de maneira justa .

25
Escalonamento por Time-Slicing
  • Fracionamento de tempo do processador.
  • Divide o tempo do processador entre threads de
    igual prioridade.
  • Implementado por um Timer (hardware) o qual
    interrompe o processamento periodicamente, para
    permitir o scheduler buscar uma outra thread para
    executar.

26
Escalonamento Time-Slicing
  • Por Processo escalonador aloca tempo para
  • execução dos processos, os quais definem como
  • usar este tempo para executar suas threads.
  • P1 P2
    P3
  • t11 t12 t21 t22 t23 t31 t32
  • Por Thread escalonador aloca tempo e define a
    ordem na qual as threads serão executadas.
  • t11 t31 t21 t32 t23 t12
    t22 t16

27
Escalonamento Pre-Emptivo
  • Baseado nas prioridades dos processos/threads.
  • Deve ser implementado para garantir que um
    processo/thread de alta prioridade possa executar
    logo que torna-se pronto, mesmo que signifique
    suspender a execução de um processo de mais baixa
    prioridade.

28
Ciclo de Vida de um Processo/Thread
Criado
Pronto
Suspenso
Rodando
Morto
29
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.

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

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

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

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

34
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
Write a Comment
User Comments (0)
About PowerShow.com