32
Fundamentos de Sistemas Operacionais Aula 7: Implementação de Processos e Threads Diego Passos

Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Fundamentos de Sistemas Operacionais

Aula 7: Implementação de Processos e Threads

Diego Passos

Page 2: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Revisão

Page 3: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Programação Concorrente e Multiprogramação

SOs modernos permitem diversos processos em memória.Cada um tem seu estado, código.

Processos podem ser alternados no processador.Batch com multiprogramaçãoTimesharing.

Quando um processo volta ao processador, seu estado tem que ser restaurado.

Execução continua de onde havia parado.Processos podem ter várias threads.

Linhas de execução.

Page 4: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Organização de um Processo em Memória

Page 5: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Várias Áreas

O espaço de endereçamento é dividido em várias áreas:Texto.Dados.BSS.Heap.Pilha.

Cada área tem propriedades diferentes. Cada área tem utilidades diferentes.

Page 6: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Distribuição de Áreas

Fonte: "Sistemas Operacionais". Rômulo Oliveira, Alexandre Carissimi, Simão Toscani. 2a edição (slides).

Page 7: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Área de Texto

Armazena o código executável do processo.Sequência de instruções a serem executadas.

O registrador PC sempre aponta para algum lugar desta região.Em geral, não processo não tem permissão de escrita.

Page 8: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Área de Dados

Variáveis globais inicializadas são guardadas nesta área.Toda variável global declarada no código fonte cujo valor inicial foi especificado pelo programador.

Exemplo:Programador faz a declaração global:

int x = 10;

Ao carregar o programa em memória, o SO escreve o valor 10 em uma posição de memória nesta área.

Processos podem ler e escrever nesta área.

Page 9: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Área de BSS

Block Started by Symbol.Contém variáveis globais que não foram inicializadas em tempo de compilação. Exemplo:

Programador faz a declaração global: int x;

Um espaço nesta área é criado, geralmente com o valor 0.

Processo pode ler e escrever nesta área.

Page 10: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Área do Heap

Área destinada à memória dinâmica.Alocação de grandes vetores.Quando não se conhece a dimensão em tempo de compilação.

Em tempo de execução, processo aloca regiões do heap.Exemplo:

Funções malloc() e free() no C.Processo pode ler e escrever nesta área.

Page 11: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Área da Pilha

Área utilizada para armazenar informações sobre funções.Variáveis locais.Endereço de retorno.Parâmetros.

Chamadas de funções podem ser aninhadas.A área de memória destinada a uma função é "empilhada" sobre a área da função que a chamou.

Processo pode ler e escrever nesta área.

Page 12: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Permissões das Áreas de Memória

Cada área tem sua política de controle de acesso.Somente leitura, leitura e escrita, execução...

Por que?Questões de segurança.Se as áreas de dados pudessem ser executadas, programas que lêem dados de usuários ou máquinas remotas seriam focos de ataques.

Processo pode requisitar alteração nas permissões.Exemplo: self-modifying code.

Page 13: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Contexto de um Processo

Page 14: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Chaveamento entre Processos

SO pode decidir tirar um processo do processador e colocar outro no lugar.Quando o processo original retorna ao processador, estado tem que ser o mesmo.

Salvar e Restaurar o Contexto do Processo. Fazem parte do estado de um processo:

Registradores.Memória (espaço de endereçamento).

Page 15: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Quais Informações Precisam ser Salvas/Restauradas?

Espaço de endereçamento só pode ser acessado pelo próprio processo.

Outros processos em execução não mudarão variáveis do processo original.

Únicos valores que mudam são os registradores.Usados por qualquer processo que utilize o processador.

O contexto do processo (do ponto de vista do que precisa ser salvo):

Valores dos registradores no momento em que o processo é interrompido.

Page 16: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Troca (ou Chaveamento) de Contexto

Processo é interrompido.Requisição de E/S ou fim do slice de tempo.

SO salva o contexto atual.Valores dos registradores.

SO escolhe um processo para utilizar o processador a partir de agora.Seu contexto é buscado e recarregado no processador.Novo processo (re)começa sua execução.

Page 17: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Onde Salvar o Contexto?

Contexto é salvo na memória principal.Poderia ser salvo no espaço de endereçamento do processo.

Não é interessante.Processo gerencia o uso do espaço de endereçamento.SO pode sobrescrever dados do processo.

Opção:Salvar o contexto em uma área de memória pertencente ao SO.Processos de aplicação não têm acesso.

Page 18: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Representação de um Processos no Kernel

Page 19: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Bloco de Descritor de Processo

Estrutura de dados que o SO utiliza para armazenar informações sobre cada processo.São armazenadas informações relevantes ao gerenciamento do processo.

Prioridade.Localização do espaço de endereçamento.Recursos alocados para o processo.Estado.Contexto.Contabilidade.Parentesco....

Page 20: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Tabela (ou Lista) de Descritores

Há um descritor por processo carregado no sistema.SO precisa de uma maneira de organizar os descritores em memória.Várias opções:

Lista encadeada de descritores.Tabela (vetor) de descritores.

Número de processos é limitado.Manipulação mais eficiente.

Page 21: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Filas do Sistema

SO guarda inúmeras filas:Filas de processos aptos.Filas de requisições de recursos.

Elementos destas filas são ponteiros para os blocos descritores ou índices na tabela de descritores.

Page 22: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Criação de um Processo

SO aloca memória para o espaço de endereçamento do processo.SO aloca um bloco descritor para o novo processo.

Valores iniciais dos campos são preenchidos.Endereços do espaço de endereçamento.Contadores.Etc.

Referência para o bloco é colocada na fila de processos aptos.

Page 23: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Término de um Processo

Recursos do processo são liberados.Percorre-se as listas de recursos alocados.

Sockets, arquivos abertos, dispositivos de hardware. Referências ao processo em filas do sistema são retiradas.Bloco descritor do processo é desalocado.

Ou marcado como inativo.Ou retornado para uma lista de livres.Ou...

Page 24: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Threads

Page 25: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Threads São Diferentes de Processos

Processos:Compostos por código, memória, estado dos registradores, lista de recursos alocados...

Threads:Linhas de execução dentro de um processo.

Dizem qual sequência de instruções deve ser executada.

Têm estado, mas bem menor que os processos.Apenas alguns registradores.Sub-conjunto do estado de um processo.

Todo processo tem ao menos uma thread.

Page 26: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Programação Concorrente Leve vs. Pesada

Threads vs. Processos.Chaveamento de processos é mais lento.

Maior contexto para alternar.Threads de um mesmo processo diferem o estado por alguns registradores.

Criação e término de threads também é mais rápido.Sem necessidade de alocar outro espaço de endereçamento.Sem necessidade de um bloco descritor de processo.

Page 27: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Threads no Nível do Usuário

Alguns SOs não implementam threads nativamente.Conhecem apenas processos.

Threads podem ser implementados na própria aplicação.Através de bibliotecas.

Bibliotecas se encarregam de dividir o slice do processo entre várias threads.

Chaveamento é feito pela biblioteca.Sem interferência do SO.Contexto é guardado no espaço de endereçamento do processo.

Chamado de Modelo N:1. SO conhece apenas uma entidade (processo).Processo equivale a N linhas de execução.

Page 28: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Threads no Nível do Sistema

SO implementa o conceito de thread.Escalonamento se dá sobre as threads, e não sobre processos. Operações são todas feitas pelo SO.

Criação, encerramento, chaveamento de threads.Modelo conhecido como 1:1.

Cada entidade manipulada no escalonamento corresponde a uma linha de execução.

Page 29: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Comparação Entre os Modelos

Operações nas threads do usuário são mais rápidas que nas threads do sistema.

Não há interação com o SO.Sem interrupções, trocas de contexto, etc.

Escalonamento das threads do usuário é menos eficiente.Todas as threads usam o mesmo processador.

Atribuído ao processo. Pedido de E/S de uma thread do usuário faz todas serem bloqueadas.

Processo inteiro é bloqueado

Page 30: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Modelo M:N

Combinação de threads do usuário com threads do sistema.Biblioteca de threads requisita criação de M threads do sistema.

Cada thread do sistema executa N threads do usuário.Dependendo da aplicação, pode unir os benefícios das duas abordagens.

Depende da escolha correta de M e N.Depende das características da aplicação.Escolha não é trivial.

Page 31: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Revisão

Page 32: Fundamentos de Sistemas Operacionaisdiego/disciplinas/2011_1/sisop/aula...Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem

Para Lembrar

Memória de um processo é dividida em áreas.Áreas diferentes têm permissões diferentes.

O contexto de um processo:Estado dos registradores.

Bloco descritor do processo:O que é.Exemplos de informações guardadas nele.

Threads:O que são.Threads vs. ProcessosNível do usuário vs. Nível do Sistema