Processos ->Espaço de endereçamento protegido com um único fluxo de controle;

  • Processos ->Espaço de endereçamento protegido com um único fluxo de controle;

  • – Agrupamento de recursos (dados, arquivos, processos filhos);

  • – Código de execução;

  • – Execução única (processo de execução);

  • Threads -> Um espaço de endereçamento e múltiplos fluxos de controle;

  • – Recursos particulares (CP, registradores, pilha);

  • – Recursos compartilhados (espaço de endereço – variáveis globais, arquivos e etc);

  • Múltiplas execuções no mesmo ambiente do processo – com certa independência entre as execuções.

Execução de múltiplos processos em paralelo em um computador.

  • Execução de múltiplos processos em paralelo em um computador.

  • Processos executam em espaço de endereçamento próprio, de modo a evitar interferência de outros processos.

Threads

  • Threads

  • Thread = “linha”, “fio”.

  • Threads = fluxos de execução que rodam dentro de um processo.

    • Seqüência de instruções a serem executadas dentro de um programa.
  • Thread é uma abstração que permite que uma aplicação execute mais de um trecho de código (ex: mais de um método) simultaneamente.

    • Processos permitem ao S.O. executar mais de uma aplicação ao mesmo tempo.

Fluxos de Execução

  • Fluxos de Execução

  • Um programa seqüencial consiste de um único fluxo de execução, o qual realiza uma certa tarefa computacional.

    • A maioria dos programas simples tem essa característica: só possuem um único fluxo de execução.
    • Por conseguinte, não executam dois trechos de código “simultaneamente”.
  • Grande parte do software de maior complexidade escrito hoje em dia faz uso de mais de uma linha de execução.

Exemplos de Programas

  • Exemplos de Programas

  • Navegador (browser)

    • Consegue fazer o download de vários arquivos ao mesmo tempo, gerenciando as diferentes velocidades de cada servidor e, ainda assim, permitindo que o usuário continue interagindo, mudando de página enquanto os arquivos estão sendo carregados.
  • Editor de textos

    • Permite que o usuário edite o arquivo enquanto ele ainda está sendo carregado do disco.
    • Processamento assíncrono (salvamento periódico)

Exemplo de uso:

  • Exemplo de uso:

  • Uma aplicação que mostra figuras descompactadas a partir de uma série de arquivos.

    • Com uma única thread: o programa descompacta a figura do arquivo, mostra-a e espera que o usuário sinalize que terminou de vê-la. O programa repete o processo para o próximo arquivo.
    • Com Multithread: usa-se uma thread para descompactar a próxima figura enquanto o usuário está vendo a figura corrente. Isto elimina o tempo de espera pelo processo de descompactação.

Permitem separar o contexto de tarefa

  • Permitem separar o contexto de tarefa

    • Processo: unidade de contexto
    • Thread: unidade de atividade

Vantagens:

  • Vantagens:

    • Menor custo para alternar atividades
      • Trocar de thread é muito mais rápido que trocar de processo;
    • Permite trocas mais freqüentes
      • melhor tempo de resposta das aplicações;
    • Maior facilidade para construir aplicações com múltiplas atividades
      • Mais adequado para implementar diversas atividades que compartilham recursos comuns.

Desvantagens:

  • Desvantagens:

    • Perda de portabilidade
      • Nem todos os sistemas as suportam;
    • Exigem maior controle de concorrência no acesso aos recursos comuns
      • Diversos threads manipulam os mesmos recursos;
    • Risco de dados inconsistentes
      • Diversos threads acessam os mesmos dados;
    • Aplicações menos robustas
      • se uma thread travar, a aplicação pode travar.

Em um ambiente multithread, um processo:

  • Em um ambiente multithread, um processo:

    • é a unidade de alocação e proteção de recursos
    • tem um espaço de endereçamento virtual que mantém a imagem do processo
    • tem acesso controlado a outros processos, arquivos e outros recursos

Em um processo podem existir uma ou mais threads com

  • Em um processo podem existir uma ou mais threads com

    • um estado de execução (pronta, suspensa...)
    • seu contexto salvo quando não estiver executando
    • sua pilha de execução
    • acesso a variáveis locais próprias
    • acesso compartilhado com outras threads deste processo aos recursos do processo

É mais rápido criar uma thread que um processo

  • É mais rápido criar uma thread que um processo

  • É mais rápido terminar uma thread que um processo

  • É mais rápido chavear entre threads de um mesmo processo

  • Threads podem se comunicar sem invocar o núcleo já que compartilham memória e arquivos

Suspender um processo implica em suspender todas as threads deste processo já que compartilham o mesmo espaço de endereçamento.

  • Suspender um processo implica em suspender todas as threads deste processo já que compartilham o mesmo espaço de endereçamento.

  • O término de um processo implica no término de todas as threads desse processo.

Trabalho em primeiro e segundo planos: E/S e cálculo em planilhas;

  • Trabalho em primeiro e segundo planos: E/S e cálculo em planilhas;

  • Processamento assíncrono: salvamento periódico em editores de texto;

  • Aumento de velocidade de execução: paralelismo;

  • Organização: facilidade de projeto e implementação.

Estados fundamentais: executando, pronta e bloqueada

  • Estados fundamentais: executando, pronta e bloqueada

  • Faz sentido o estado “suspensa”?

  • O que acontece com as threads de um processo quando uma delas bloqueia?

Comentários