• Nenhum resultado encontrado

Fundamentos de Sistemas Operacionais

N/A
N/A
Protected

Academic year: 2022

Share "Fundamentos de Sistemas Operacionais"

Copied!
32
0
0

Texto

(1)

Fundamentos de Sistemas Operacionais

Aula 7: Implementação de Processos e Threads

Diego Passos

(2)

Revisão

(3)

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ção Timesharing.

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.

(4)

Organização de um Processo

em Memória

(5)

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.

(6)

Distribuição de Áreas

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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.

(13)

Contexto de um Processo

(14)

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

(15)

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.

(16)

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.

(17)

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.

(18)

Representação de um

Processos no Kernel

(19)

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.

...

(20)

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.

(21)

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.

(22)

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.

(23)

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

(24)

Threads

(25)

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.

(26)

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.

(27)

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.

(28)

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.

(29)

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

(30)

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.

(31)

Revisão

(32)

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

Nível do usuário vs. Nível do Sistema

Referências

Documentos relacionados

A prova do ENADE/2011, aplicada aos estudantes da Área de Tecnologia em Redes de Computadores, com duração total de 4 horas, apresentou questões discursivas e de múltipla

introduzido por seus orifícios e daí se descarrega no difusor secundário e depois no difusor principal, e a seguir para o coletor de admissão e cilindros... 8-C

No entanto, após 30 dias de armazenagem, o teor de fármaco nas suspensões decaiu para valores próximos a 50 % nas formulações que continham 3 mg/mL de diclofenaco e núcleo

Estaca de concreto moldada in loco, executada mediante a introdução no terreno, por rotação, de um trado helicoidal contínuo. A injeção de concreto é feita pela haste

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Tal será possível através do fornecimento de evidências de que a relação entre educação inclusiva e inclusão social é pertinente para a qualidade dos recursos de

9º, §1º da Lei nº 12.513/2011, as atividades dos servidores ativos nos cursos não poderão prejudicar a carga horária regular de atuação e o atendimento do plano de metas do

Como já destacado anteriormente, o campus Viamão (campus da última fase de expansão da instituição), possui o mesmo número de grupos de pesquisa que alguns dos campi