unidade 1-2 processos e threads

34
Unidade 1-2 Processos e Threads

Upload: damisi

Post on 19-Jan-2016

50 views

Category:

Documents


0 download

DESCRIPTION

Unidade 1-2 Processos e Threads. O que é um Processo. Um processo é uma atividade (ou tarefa) de um programa, que contém o código e dados de uma atividade. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Unidade 1-2 Processos   e  Threads

Unidade 1-2

Processos e Threads

Page 2: Unidade 1-2 Processos   e  Threads

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.

Page 3: Unidade 1-2 Processos   e  Threads

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.

Page 4: Unidade 1-2 Processos   e  Threads

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.

Page 5: Unidade 1-2 Processos   e  Threads

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.

Page 6: Unidade 1-2 Processos   e  Threads

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.

Page 7: Unidade 1-2 Processos   e  Threads

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.

Page 8: Unidade 1-2 Processos   e  Threads

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.

Page 9: Unidade 1-2 Processos   e  Threads

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.

Page 10: Unidade 1-2 Processos   e  Threads

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.

Page 11: Unidade 1-2 Processos   e  Threads

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.

Page 12: Unidade 1-2 Processos   e  Threads

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.

Page 13: Unidade 1-2 Processos   e  Threads

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.

Page 14: Unidade 1-2 Processos   e  Threads

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

Page 15: Unidade 1-2 Processos   e  Threads

Três Processos - cada um com uma Thread

Cada thread tem seu espaço de endereçamento.

Contador de Programa

Thread

Processo

Page 16: Unidade 1-2 Processos   e  Threads

Um Processo com três Threads

• Todas num mesmo espaço de endereçamento.

Multiplas Threads

Processo

Page 17: Unidade 1-2 Processos   e  Threads

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.

Page 18: Unidade 1-2 Processos   e  Threads

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

Page 19: Unidade 1-2 Processos   e  Threads

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

Page 20: Unidade 1-2 Processos   e  Threads

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

Page 21: Unidade 1-2 Processos   e  Threads

Processo “Livro de Pronto Socorro”

• Threads ???

• Ler o procedimento médico• Desinfetar o local da picada• Colocar curativo

Page 22: Unidade 1-2 Processos   e  Threads

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.

Page 23: Unidade 1-2 Processos   e  Threads

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.

Page 24: Unidade 1-2 Processos   e  Threads

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 .

Page 25: Unidade 1-2 Processos   e  Threads

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.

Page 26: Unidade 1-2 Processos   e  Threads

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

Page 27: Unidade 1-2 Processos   e  Threads

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.

Page 28: Unidade 1-2 Processos   e  Threads

Ciclo de Vida de um Processo/Thread

Criado

Pronto

Rodando

Morto

Suspenso

Page 29: Unidade 1-2 Processos   e  Threads

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.

Page 30: Unidade 1-2 Processos   e  Threads

Estado Suspenso

• Dormindo – em espera temporizada.

• Bloqueado – aguarda I/O.

• Em Espera - aguarda uma condição ser satisfeita.

Page 31: Unidade 1-2 Processos   e  Threads

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.

Page 32: Unidade 1-2 Processos   e  Threads

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.

Page 33: Unidade 1-2 Processos   e  Threads

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.

Page 34: Unidade 1-2 Processos   e  Threads

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