Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf ·...

32
Unix Processos 1 Geraldo Braz Junior

Transcript of Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf ·...

Page 1: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

UnixProcessos

1

Geraldo Braz Junior

Page 2: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Processos no Unix

Unix é multiprogramado;

Para cada processo é atribuído um Pid;

Diversos daemons são executados: Cron

Processamento de emails

Gerenciamento da fila de impressão, etc...

2

Page 3: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Criando Processos Uma chamada fork permite que um

processo crie outros processos fork cria uma cópia exata do processo

original O processo criador é denominado pai e o

criado filho Arquivos abertos são compartilhados entre

pai e filho; As imagens da memória, variáveis,

registradores são idênticos no pai e filho: como permitir que os processos saibamquem deve executar no código do pai e quem deve executar no código do filho?

3

Page 4: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Criando ProcessosProcess creation in UNIX.

4

Um processo pode construir uma árvore inteira de filhos, netos

e descendentes mais distantes

Page 5: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Algumas Formas de Comunicação Entre Processos

Pipes Canal entre dois processos no qual um deles

pode escrever um fluxo de bytes para o outro;

Ao tentar ler uma entrada do pipe, o processo é bloqueado até que o dado esteja disponível;

Pipilines do shell são implementados com pipes

sort < f |head

5

Page 6: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Algumas Formas de Comunicação Entre Processos

Interrupções de software (sinais) Um processo envia um sinal a outro;

O receptor pode ignorar, capturar ou deixar o sinal matar o processo;

Caso capture o sinal, deve ser definido um procedimento para trata-lo;

O controle é transferido para o tratador e ao término deste, o controle volta para onde estava.

6

Page 7: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Sinais Exigidos pelo POSIX

The signals required by POSIX.

7

Page 8: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Chamadas do Sistema paraGerenciamento de Processos

s é um código de erropid é a identificação do processoresidual tempo restante do alarme anterior

8

Page 9: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Parâmetros das Chamadas pid = waitpid(pid, &statloc, opts)

Id do processo pelo qual ocorrerá a espera

Status do término do processo

Determina se o chamador deve ou não ser bloqueado caso nenhum filho tenha terminado

s = execve(name, argv, envp)

Nome do arquivo a ser executado

Ponteiro para um vetor de argumentos

Ponteiro para um vetor de variáveis do ambiente

main (argc, argv, envp)

9

Page 10: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Parâmetros das Chamadas

s = sigaction(sig, &act, &oldact)

Sinal a ser capturado

Ponteiro para uma estrutura que fornece um ponteiro para o procedimento tratador do sinal

Ponteiro para uma estrutura em que o sistema retorna informações sobre o tratamento de sinais atualmente empregado

10

Page 11: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

POSIX Shell

Um shell bastante simplificado

11

Page 12: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Threads Mecanismo que permite a um processo

ter mais de um fluxo de controle; Benefícios: O processo inteiro não necessita ficar

bloqueado ao realizar uma chamada bloqueante ao sistema; Exemplo de uso: planilha de cálculo

Pode-se explorar paralelismo em sistemas multiprocessados;

Simplifica o desenvolvimento de aplicações inerentemente concorrentes;

Melhor desempenho para aplicações complexas que tradicionalmente eram implementadas através de múltiplos processos comunicando-se através de mecanismos IPCs

12

Page 13: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Implementação de ThreadsBiblioteca no Espaço do Usuário

13

Page 14: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Implementação de ThreadsBiblioteca no Espaço do Usuário

Vantagens: suporte a threads me sistemas operacionais

que não as suportam nativamente;

Criação e destruição de threads custa pouco: alocação de memória e criação de pilha no espaço do usuário;

Troca de contexto entre threads custa pouco: troca de valores de registradores da UCP;

Pode-se prover várias políticas de escalomento dando aos processos a liberdade de escolher aquela que achar melhor;

Maior escalabilidade já que não ocupam recursos do kernel.14

Page 15: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Implementação de ThreadsBiblioteca no Espaço do Usuário

Desvantagens: Dificuldade na implementação de chamadas

bloqueantes ao kernel;

Dificuldade na implementação de preempção.

15

Page 16: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Implementação de Threadsno Kernel

16

Page 17: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Implementação de Threadsno Kernel

Desvantagem:

Cada operação com threads: criação, destruição, sincronização, etc.. Envolve o kernel o que requer uma chamada ao sistema que é cara.

17

Page 18: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Implementação de ThreadsLWP: Lightweight Process

18

Page 19: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Implementação de ThreadsLWP: Lightweight Process

LWPs são criadas por processos a nível de usuário através de uma chamada ao kernel;

Threads de usuário não são visíveis ao kernel: ele escalona LWPs;

Threads do usuário podem ser escalonadas em qualquer LWP criada pelo processo;

19

Page 20: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Implementação de ThreadsLWP: Lightweight Process

Chamada bloqueante: Interceptada pela LWP que pode realizar a

chamada real ao kernel ficando assim também bloqueada mas o processo inteiro NÃO fica;

Sincronização e troca de contexto entre threads do usuário são realizadas a nível do usuário.

20

Page 21: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Threads e o padrão POSIX

Não estabelece se threads devem ser implementadas no núcleo ou no espaço do usuário.

21

Page 22: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Threads no POSIX

The principal POSIX thread calls.

22

• Principais chamadas a threads no padrão POSIX

• mutex: destinados ao uso de curta duração como

proteção a uma

variável compartilhada

• variáveis de condição: longa duração

Page 23: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Implementação de Processos

O núcleo mantêm duas estruturas de dados relacionadas aos processos:Tabela de processo (residente na memória) e Estrutura do usuário (é paginada);

Tabela de processos:

Parâmetros de escalonamento: prioridade, tempo de CPU consumido recentemente e tempo dormindo recentemente;

Imagem da memória: ponteiros para segmentos de código, dados, pilha, tabelas de página;

Sinais: máscaras que mostram os sinais sendo ifnorados;

Miscelâneas: estado, tempo para larme, PID, PID do pai, identificação de grupo e usuário.23

Page 24: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Implementação de Processos

Estrutura do usuário: Registradores da máquina salvos quando

ocorrer um desvio de execução para o núcleo (trap);

Estado da chamada ao sistema: parâmetros e resultados;

Descritor de arquivo;

Contabilidade: tempo de CPU usado elimites de tempo de CPU, tamanho máximo de pilha, número máximo de páginas, etc…

Pilha do núcleo

24

Page 25: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Comando ls

Passos para execução do comando ls

25

Page 26: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Escalonamento

Algoritmo projetado para fornecer boa resposta a processos interativos;

Organizado em dois níveis: Inferior: escolhe um processo dos que estão

em memória prontos para executar. Utiliza múltiplas filas.

Superior: move processos entre a memória e o disco de modo que todos os processos tenham oportunidade de estar na memória para poder executar.

26

Page 27: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Escalonamento Inferior Utiliza múltiplas filas;

Cada fila possui uma prioridade. Quanto menor o valor da prioridade mais alta ela é;

Processos executando no modo usuário possuem valores positivos. Processos executando no modo núcleo possuem valores negativos;

Quantum é normalmente de 100 ms;

Processos de mesma prioridade são escalonados através de escalonamento circular.

27

Page 28: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Escalonamento Inferior

Uma vez por segundo, a prioridade de cada processo é recalculada:

prioridade = uso_CPU + nice + base

Uso_CPU: para não punir o processo sempre, uma opção é adicionar o valor atual ao número de tiques no intervalo Δt anterior e dividir por 2;

Nice: varia de –20 a +20. Somente root pode solicitar um serviço melhor (-20 a 1);

Base: ao retornar de uma espera por interromper o núcleo, o processo é colocado em uma fila de valor negativo de acordo com o evento que aguardava. Estes valores negativos são representados por base na fórmula.

28

Page 29: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Escalonador no UNIX

29

Page 30: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Iniciando o Unix O primeiro setor do disco de boot é lido

para memória e executado;

Ele contêm um pequeno programa (512 bytes) que carrega outro programa independente chamado boot;

O boot lê o diretório-raiz do disco e carrega o núcleo do sistema operacional (portanto, ele deve conhecer o sistema de arquivos);

O controle é transferido para o núcleo do sistema operacional.

30

Page 31: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Inicialização do Núcleo1. Aloca as estruturas de dados do núcleo;

2. Verifica os dispositivos de E/S presentes, carregando os drivers correspondentes;

3. Cria o processo 0 e o executa:1. Programa o relógio

2. Monta o sistema de arquivos-raiz

3. Cria o processo 1 (init)

4. Cria o daemon de paginação (processo 2)

4. O processo init:1. Lê o arquivo /etc/ttys que relaciona os

terminais

2. Para cada terminal é executado o programagetty que solicita o login do usuário

31

Page 32: Processos Unix - DEINF/UFMA - Departamento de Informática ...geraldo/soii/2.unix_02.pdf · Sincronização e troca de ... e o disco de modo que todos os processos ... O boot lê

Inicialização do Unix

32

cp