102
Anderson Moreira Sistemas Operacionais – Aula 4 Anderson L. S. Moreira [email protected] http://dase.ifpe.edu.br/~alsm Curso de Análise e Desenvolvimento de Sistemas de Informação Recife - PE Sistemas Operacionais – Aula 4

Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Embed Size (px)

Citation preview

Page 1: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Anderson L. S. [email protected]

http://dase.ifpe.edu.br/~alsm

Curso de Análise e Desenvolvimento de Sistemas de Informação

Recife - PE

Sistemas Operacionais – Aula 4

Page 2: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

O que fazer com essa apresentação

setembro de 11

Page 3: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Créditos

Professor: Anderson L. S. MoreiraDisciplina: Sistemas OperacionaisHome-page: http://dase.ifpe.edu.br/~alsm

Aula 4 mostra os conceitos iniciais de processos e comunicação entre processos. Iremos ver noções de pai e filho entre processos e criação nos ambientes Windows e Linux.

setembro de 11

Page 4: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Agenda

Introdução

Estrutura do processo

Estados do processo

Mudanças de estado do processo

Criação e eliminação de processos

Processos independentes, subprocessos e threads

Processos foreground e background

Processos do sistema operacional

Processos CPU-bound e I/O-bound

Sinais

setembro de 11

Page 5: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Introdução – Multiprogramação (revisão)

Execução, em paralelo, de múltiplos programas na mesma

máquina;

Cada instância de um programa em execução denomina-se

um processo;

Considerando um grau de tempo fino, o paralelismo não é

real;

Pseudoparalelismo ou pseudoconcorrência – implementação

de sistemas multiprogramados sobre um computador com

um único processador

setembro de 11

Page 6: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Pseudoconcorrência

setembro de 11

Page 7: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Introdução

Um programa é:

Uma seqüência finita de instruções;

Uma entidade passiva (que não se altera com o passar do tempo);

Armazenado em disco.

Um processo é:

Uma abstração que representa um programa em execução;

Uma entidade dinâmica: seu estado se altera conforme for executando;

Armazenado na memória.

Pode-se encontrar mais de um processo instanciando um programa único.

setembro de 11

Page 8: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos vs. Programas

Programa = Arquivo executável (sem atividade);

Um processo é um objeto do sistema operacional que suporta

a execução dos programas;

Um processo pode, durante a sua vida, executar diversos

programas;

Um programa ou partes de um programa podem ser

compartilhados por diversos processos (ex.: biblioteca

compartilhadas, ou seja as DLL no Windows ou .lo do Linux).

setembro de 11

Page 9: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Estrutura do Processo

Estrutura do processo

Programa

Contexto deSoftware

Contexto deHardware

Espaço deEndereçamento

setembro de 11

Page 10: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Estrutura do Processo

Espaço de endereçamento (virtual):

Conjunto de posições de memória acessíveis;

Código, dados, e pilha;

Dimensão variável.

Contexto de software:

As instruções do processador executáveis em modo usuário;

As funções do sistema operacional;

Contexto de hardware (estado interno):

Valor dos registradores do processador;

Toda a informação necessária para retomar a execução do processo;

Memorizado quando o processo é retirado de execução

setembro de 11

Page 11: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Contexto de Hardware

Mudança de

contexto

Carrega registradores doProcesso B

Carrega registradores doProcesso A

Sistema Operacional

Salva registradores doProcesso A

executando

executando

executando

Salva registradores doProcesso B

Processo A Processo B

setembro de 11

Page 12: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Modelo: Objeto “Processo”

Propriedades Identificador; Programa; Espaço de Endereçamento; Prioridade; Processo pai; Canais de Entrada / Saída, Arquivos; Quotas de utilização de recursos; Contexto de Segurança;

Operações – Funções do sistema que atuam sobre os processos Criar Eliminar Esperar pelo término de subprocessos

setembro de 11

Page 13: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo: Linux

setembro de 11

Page 14: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo: Windows

setembro de 11

Page 15: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo: Windows

setembro de 11

Page 16: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos para o SO

Imagem de um programa:

Segmento de código.

Conjunto de recursos de HW alocados pelo SO:

Registradores (PC, Stack Pointer…);

Espaço de endereçamento (memória);

Espaço no disco (arquivos de E/S).

Unidade de escalonamento:

Estado;

Algoritmos de escalonamento para otimizar o uso do HW;

Alocar a CPU a um processo implica em uma troca de contexto.

setembro de 11

Page 17: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Hierarquia entre processos

setembro de 11

Usuário A Usuário B

Page 18: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos Independentes, Subprocessos e Threads

Estrutura de processos e subprocessosProcesso A

Processo CProcesso B

Processo EProcesso D

setembro de 11

Page 19: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos Independentes, Subprocessos e Threads

Processo multithread

Contextode hardware

Contextode hardware

Contextode hardware

Espaço deendereçamento

Con

text

o de

softw

are

Thread 3Thread 2Thread 1

setembro de 11

Page 20: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Espaço de Endereçamento

Estrutura de um processo

Programa

Contexto deSoftware

prioridade deexecução registrador PC

data/horade criação

tempo deprocessador

registrador SP

quotas

privilégios

endereços de memóriaprincipal alocados

registradorde status

owner (UID)PID

nomeregistradores

gerais

Contexto deHardware

Espaço deEndereçamento

setembro de 11

Page 21: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Bloco de Controle do Processo

A estrutura de dados que representa o processo no SO é chamada “Process Control Block” (PCB)

Contém as informações necessárias:

Registradores, memória, disco (arquivos);

Prioridade;

Estado;

Histórico (contabilidade);

Ponteiro para um outro PCB (lista encadeada);

O SO deve manter listas de processos

Listas encadeadas;

A estrutura PCB é usada para tal;

Mantém-se um ponteiro sobre o primeiro e/ou o último PCB.

setembro de 11

Page 22: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Bloco de Controle do Processo

PCB

........

ponteiros

Estado do processo

Registradores

Nome do processo

Prioridade do processo

Limites de memória

Lista de arquivos abertos

setembro de 11

Page 23: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Estados do Processo

Lista de PCBs

........

........

........

........

........

Lista deprocessosem estadode pronto

PCB#5

PCB#9

PCB#1

PCB#2 PCB#4

Lista deprocessosem estadode espera

setembro de 11

Page 24: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo prático

No site da disciplina no “Material Aula” baixe o simulador SOsim e

execute;

http://siep.ifpe.edu.br/anderson/arquivos/sosim_v20.zip

Procure identificar o PCB, e propriedades dos processos;

Observe o mapa de memória, o que vocês notam de diferente?

setembro de 11

Page 25: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Ciclo de vida dos processos

Processos nascem:

No momento de sua criação (via chamada de sistema – Fork, spawn…).

Processos vivem:

Executam na CPU, liberam a CPU (E/S).

Executam:

Programas dos usuários;

Programas do sistema (daemons);

Processos morrem:

Ou porque terminaram sua execução

Ou porque um outro processo os matou:

Erro, acesso não-autorizado, falha.

setembro de 11

Page 26: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Estados do Processo

Os processos podem ter os seguintes estados:

Criado;

Execução (running);

Pronto (ready);

Bloqueado (wait);

Encerrado ou Término;

Suspenso.*

setembro de 11

Page 27: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Mudanças de Estado

Mudanças de estado do processoEstado de Execução

Estado de Bloqueio Estado de Pronto

a

c

db

setembro de 11

Processador

Page 28: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Estado de Suspenso

Dois problemas principais para gerar os recursos:

A CPU é muito mais rápida do que a memória;

A memória é de tamanho finito.

Precisa-se, então, poupar a memória. Por isso:

Processos bloqueados que estão na memória podem ser

transferidos para o disco (swap) até sua E/S ser acabada.

Processos prontos podem também ser descarregados para o disco.

Chega-se a mais dois estados:

Bloqueado, suspenso.

Pronto, suspenso.

setembro de 11

Page 29: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exercício

Desenhar o novo diagrama de estados

incluindo os estados pronto, suspenso e

bloqueado, suspenso.

setembro de 11

Page 30: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Mudanças de Estado

Mudanças de estado do processo (2)

residentenão residente

Estado de Execução

Estado de Bloqueio

Estado de Bloqueio

Estado de Pronto

Estado de Pronto

setembro de 11

Page 31: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Criação e Eliminação

Mudanças de estado do processo (3)

Estado de Execução Estado de Término

Estado de Bloqueio Estado de Pronto Estado de Criação

setembro de 11

Page 32: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Criação de um processo

IdProcesso = CriarProc (Código, Prioridade,... )

setembro de 11

Quando a criação temsucesso o sistema atribui um identificador interno(PID) ao processo que é retornado na função

Na criação de um processo tem de ficar definido qual é o programa que o processo vai executar. Normalmente é especificado um arquivocontendo um programaexecutável.

A função temfrequentemente diversosparâmetros: a prioridade,canais de entrada/saída, ...

Page 33: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Eliminação de processos

Eliminação do processo quando o seu programa termina,

libertando todos os recursos e estruturas de dados retidas

pelo processo

Sair ([Estado])

Eliminação de outro processo

EliminarProc ( IdProcesso )

setembro de 11

Page 34: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Finalizar Processo Filho

Em inúmeras situações o processo pai pode querer bloquear-

se esperando a finalização de um processo filho

Estado = EsperarFinalizar (Idprocesso)

setembro de 11

Page 35: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos Foreground e Background

Processos foreground e background

(a) Processo Foreground

(b) Processo Background

saída

saída

arquivode saída

terminalterminal

entrada

entrada

arquivode entrada

setembro de 11

Page 36: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processo Foreground e Background

Pipe

entrada doProcesso A

saída doProcesso B

saída doProcesso A

entrada doProcesso B

Processo A Processo B

setembro de 11

Page 37: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Propriedades especiais dos Processos do Sistema

Auditoria e segurança

Serviços de rede

Contabilização do uso de recursos

Contabilização de erros

Gerência de impressão

Gerência de jobs batch

Temporização

Comunicação de eventos

Interface de comandos (shell)

setembro de 11

Page 38: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Modelo de Segurança

Um processo em execução tem de estar associado a um

Usuário (entidade que pode ser responsabilizada pelos seus

atos);

Os utilizadores são representados no sistema por um código

que os identifica (User IDentifier – UID);

Para facilitar o compartilhamento o usuário pode pertencer a

um grupo ou grupos de usuários (identificador por um GID).

setembro de 11

Page 39: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Controle dos Direitos de Acesso

Autorização - operação que valida os direitos do usuário sobre um

recurso antes deste poder executar uma operação sobre ele;

A autorização baseia-se conceitualmente numa Matriz de Direitos de

Acesso;

Para um dado objeto a coluna da matriz define a Lista de Direitos de

Acesso (ACL);

Para um dado usuário a linha respectiva define todos os seus

direitos normalmente designados por Capacidade.

setembro de 11

Objeto

Usuários

Page 40: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos CPU e IO Bound

Processos CPU Bound x IO Bound

(a) CPU-boundtempo tempo

E/ S E/ S

UCP UCP

(b) I/ O-bound

setembro de 11

Page 41: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

THREADSMúltiplos fluxos de execução no mesmo processo

setembro de 11

Page 42: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Tarefas

Mecanismo simples para criar fluxos de execução independentes,

compartilhando um mesmo contexto (ou de software ou de

hardware)

setembro de 11

Page 43: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Tarefas vs. Processos

Porque não usar processos?

Processos obrigam ao isolamento (espaços de endereçamentos

disjuntos) dificuldade em compartilhar dados (mas não

impossível… exemplos?)

Eficiência na criação e comutação

setembro de 11

Page 44: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Tarefas: Exemplos de Utilização

Servidor (ex.:, web)

Aplicação cliente de correio eletrônico

Quais as tarefas em cada caso?

setembro de 11

Page 45: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Modelos Multitarefa no Modelo Computacional

Operações sobre as Tarefas

IdTarefa = CriarTarefa(procedimento);

EliminarTarefa (IdTarefa);

EsperaTarefa (IdTarefa)

setembro de 11

Bloqueia a tarefa esperando ser finalizada deoutra tarefa ou da tarefa referenciada no parâmetro Idtarefa

Page 46: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Interface POSIX

err = pthread_create (&tid, attr, function, arg)

pthread_exit(void *value_ptr)

int pthread_join(pthread_t thread, void **value_ptr)

suspende a tarefa chamada até “pthread_t thread“ terminar;

continua a execução caso “pthread_t thread“ já tenha sido

terminada

setembro de 11

Ponteiro para o identificador da tarefa

Utilizado para definir atributos da tarefa como a prioridade

Função para executar

Parâmetros para a função

Page 47: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo (sequencial)

setembro de 11

Page 48: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo (paralelo)

setembro de 11

Page 49: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo (paralelo)

setembro de 11

Page 50: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Programação num ambientemultitarefa

As tarefas compartilham o mesmo espaço de

endereçamento e portanto têm acesso às mesmas

variáveis globais.

A modificação e teste das variáveis globais tem de

ser efetuada com cuidados especiais para evitar

erros de sincronização.

setembro de 11

Page 51: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Alternativas de Implementação

Tarefas-kernel (real)

Tarefas-usuário (pseudotarefas)

setembro de 11

Page 52: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Pseudotarefas (Tarefas-usuário)

As tarefas implementadas numa system call no

espaço de endereçamento do usuário;

Idéia proveniente das linguagens de programação;

Núcleo apenas “vê” um processo;

Processo guarda lista de tarefas, e seu respectivo

contexto

setembro de 11

Page 53: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Pseudotarefas (Tarefas-usuário)

A comutação entre tarefas explícita função thread-yield

Pode ser contornado usando interrupções (“preempção”)

Problema: e se uma tarefa faz chamada de bloqueio?

Solução? (vale um ponto extra – mandar por e-mail!)

setembro de 11

Page 54: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Tarefas-Kernel (ou Tarefas Reais)

Implementadas no núcleo do SO

Mais comuns

Lista de tarefas e respectivo contexto são mantidos

pelo núcleo

setembro de 11

Page 55: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Comparação Tarefas Usuário e Kernel

Quero que respondam indicando qual é a melhor

opção.

Capacidade de utilização em diferentes SOs?

Velocidade de criação e comutação? (vs. processos?)

Tirar partido de execução paralela em multiprocessadores?

Aproveitamento da CPU quando uma tarefa bloqueia (ex: ler

do disco)?

setembro de 11

Page 56: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

LINUX - PROCESSOS(Sob o ponto de vista do usuário)

setembro de 11

Page 57: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos em Linux

Identificação de um processo Um inteiro designado por PID; Alguns identificadores estão pré atribuídos: processo 0 é o

swapper (gerenciador de memória) e o processo 1 init é o de inicialização do sistema;

Os processos relacionam-se de forma hierárquica O processo herda todo o ambiente do processo pai; O processo sabe quem é o processo de que descende

designado por processo pai; Quando o processo pai termina os subprocessos

continuam a executar, são adotados pelo processo de inicialização (pid = 1).

Os processos têm prioridades variáveis Veremos as regras de escalonamento mais adiante.

setembro de 11

Page 58: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos em Linux

Espaço de endereçamento em modo usuário Organiza-se em três zonas que no Unix original se denominavam

por segmentos:• texto - código do programa• dados - espaço de dados do programa• pilha (stack)

Espaço de endereçamento em modo kernel No interior do núcleo existe uma zona de dados para cada

processo que contem o seu contexto; Uma pilha para execução do processo em modo kernel.

setembro de 11

Page 59: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos em Linux

Cada processo também tem associado um contexto de software acessível em modo usuário e que contém diversas variáveis úteis para os programas utilitários ou para as aplicações.Exemplo: HOME=/usr/pjpf

SHELL=/bin/csh

USER=pjpf

PATH=/usr/pjpf/bin/:/usr/local/bin:/bin

Este contexto é herdado do processo pai e pode ser modificado livremente porque reside no espaço do usuário.Nos programas em C é acessível através do parâmetro do main ou de uma variável externa: main (arc, arv, envp)

extern char **environ

setembro de 11

Page 60: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Criação de um Processo no Linux

id = fork()

setembro de 11

A função não tem parâmetros, em particular o arquivo que irá executar. A imagem do novo processo é uma cópia da do criador.O contexto de hardware pai é copiado para o filho

A função retorna o PID do processo;Este parâmetro assume valores diferentes de acordo com o processo em que se efetua o retorno:•� ao processo pai é devolvido o “pid” do filho•� ao processo filho é devolvido 0 • -1 em caso de erroRetorno de uma função com valores diferentes não existente na programação sequencial;

Page 61: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo de fork

setembro de 11

Page 62: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Finalização do Processo

Termina o processo, liberta todos os recursos

retidos pelo processo, ex.: os arquivos abertos;

Assinala ao processo pai seu término.

void exit (int status)

setembro de 11

Page 63: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Finalização do Processo

No Linux existe uma função para o processo pai sincronizar

com o término de um processo filho;

Bloqueia o processo pai até que um dos filhos termine

int wait (int *status)

setembro de 11

Page 64: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo de Sincronização entre oProcesso Pai e o Processo Filho

setembro de 11

Page 65: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Execução de um Programa

A função fork apenas permite lançar processo com o mesmo código

problemas?

A função exec permite substituir a imagem do processo onde é

invocada pela contida num arquivo executável;

Não há retorno numa chamada com sucesso.

Parâmetros: valores que são passados para os parâmetros de

entrada na função main do código que irá executar.

Os arquivos mantêm-se abertos.

setembro de 11

Page 66: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Execução de um Programa

int execl(char* arquivo, char* arg0, char* argl,…, argn,0)

int execv(char* arquivo, char* argv [])

setembro de 11

Caminho deacesso aoarquivoexecutável

Argumentos para o novo programa.Podem ser passado como ponteirosindividuais ou como um array deponteiros.Estes parâmetros são passados para a função main do novo programa e acessíveis através do argv

Page 67: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo 1

#include <stdio.h>

#include <unistd.h>

int main() {

execl("/bin/ls","ls","test_exec.c",NULL);

printf ("Eu ainda nao estou morto\n");

exit(0);

}

• O comando ls é executado, mas o printf não. Isto mostra que o

processo não retorna após a execução do execl.

setembro de 11

Page 68: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo 2

#include <stdio.h>

#include <unistd.h>

int main() {

if ( fork()==0 )

execl( "/bin/ls","ls","test_exec.c",NULL);

else {

sleep(2) ; /* espera o fim de ls para executar o

printf() */

printf ("Eu sou o pai e finalmente posso continuar\n“);

} exit(0);

}

• Neste caso, o filho morre após a execução do ls, e o pai continuará a viver, executando então o printf.

setembro de 11

Page 69: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Shell

O shell constitui um bom exemplo da utilização de fork e exec

(esqueleto muito simplificado)

setembro de 11

Page 70: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Autenticação

Um processo tem associados dois identificadores que são atribuídos quando o usuário efetua o login (se autentica) perante o sistema: o número de usuário UID - user identification o número de grupo GID - group identification

Os UID e GID são obtidos do arquivo /etc/passwd no momento do loginO UID e o GID são herdados pelos processos filhossuperuser é um UID especial – zero. Normalmente está associado ao utilizador root (privilegiado).

setembro de 11

Page 71: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Proteção no Acesso de Recursos

A proteção dos recursos em Linux é uma versão simplificada do modelo de Listas de Controle de Acesso (ACL);

Para um recurso (arquivo, socket, etc.) a proteção é definida em três categorias:

Dono (owner): usuário que normalmente criou o recurso;

Grupo (group): conjunto de usuários com afinidades de trabalho que justificam direitos semelhantes;

Outros usuários (world).

setembro de 11

Page 72: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

SetUID

Mecanismo de Set UID (SUID) – permite alterar

dinamicamente o usuário;

Duas variantes: bit de setuid, ou função sistema

setuid.

Exercício: Procure exemplos de mudança de usuários por

SetUID. Será sorteado um para explicar.

setembro de 11

Page 73: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Bit SetUID

No arquivo executável pode existir uma indicação especial

que na execução do exec chame a alteração do uid;

O processo assume a identidade do dono do arquivo durante

a execução do programa.

Exemplo: comando passwd

Operação crítica para a segurança

setembro de 11

Page 74: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Funções Sistema de identificação

Real UID e GID – UID e GID originais do processo

Effective UID e GID – usado para verificar permissões de acesso e

que pode ter sido modificado pelo setuid

getpid() - devolve a identificação do processo

getuid(), getgid()devolvem a identificação real do usuário

geteuid(), getegid()devolvem a identificação efetiva do usuário

setuid(uid), setgid(gid)

altera a identificação efetiva do usuário para uid e gid, só pode ser invocada por processos com privilégio de superusuário

setembro de 11

Page 75: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

WINDOWS - PROCESSOSSob o ponto de vista do usuário

setembro de 11

Page 76: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos –Windows

Um processo é um detentor de recursos usados pelas tarefas;

Os fluxos de execução são as threads;

Processa uma ou mais threads.

setembro de 11

Contextode hardware

Contextode hardware

Contextode hardware

Espaço deendereçamento

Con

text

o de

softw

are

Thread 3Thread 2Thread 1

Page 77: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Processos

Um processo em Windows é constituído por:

Um espaço de endereçamento;

Um programa executável;

Pelo menos uma tarefa;

Uma lista de referências (handles - manipuladores) para vários

objetos (quaisquer recursos do sistema);

Um contexto de segurança;

Um identificador único do processo - process ID.

setembro de 11

Page 78: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Threads no Windows

Tarefas reais.

Componentes fundamentais:

Os registos do CPU que representam o estado do

processador

Duas pilhas (stacks), uma para execução em modo kernel

e outra para execução em modo usuário;

Uma zona de memória privada (thread-localstorage - TLS)

para uso pelos subsistemas e DLLs

Um identificador único - thread ID

setembro de 11

Page 79: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Fibers

Pseudotarefas geridas no espaço de endereçamento do

usuário.

Uma thread pode ter múltiplas fibers;

Fibers não são vistas pelo núcleo;

As fibers são criadas e comutadas explicitamente com

systems call (chamadas);

Win32 mas que não produzem chamadas ao sistema.

setembro de 11

Page 80: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Jobs

Grupo de processos

Permite gerenciamento uniforme (e.x., terminar em

conjunto)

Um processo só pode ser associado a um job e em principio

todos os seus descendentes pertencem ao mesmo job

setembro de 11

Page 81: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Segurança

O contexto de segurança de um processo ou de uma thread é um

objeto designado Access Token;

Um Access Token regista os usuários, grupos, máquinas, e domínios

que estão associados ao processo.

Sempre que é acessado um objeto no sistema o executive valida o

token contra uma ACL

Acesso concedido se não existir nenhuma recusa, e existir pelo

menos uma permissão num dos utilizadores, grupos, etc.

setembro de 11

Page 82: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Criação de processos Win32

BOOL CreateProcess(LPCTSTR ApplicationName,LPTSTR CommandLine,

LPSECURITY_ATTRIBUTES ProcessAttributes,LPSECURITY_ATTRIBUTES ThreadAttributes,BOOL InheritHandles,

DWORD CreationFlags,LPVOID Environment,LPCTSTR CurrentDirectory,

LPSTARTUPINFO StartupInfo,LPPROCESS_INFORMATION ProcessInformation);

setembro de 11

Nome doprogramaexecutável.Se forNULL oCommandLine temde ter onome doexecutável

Linha de comando para o programa que quer criar

Atributos de segurança do processo e da tarefa

Indica se o novo processo herda os tokens do processo pai

Várias flags entre elas aque permitedefinirclasses deprioridades

Ambiente de execução do processo criado

Estruturaretornada pelonúcleo com ainformação decontrole

Page 83: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Criação de processos Win32

Diferenças vs. fork+exec:

No Windows não se cria automaticamente uma relação

pai-filho. Embora o processo pai fique com um handle

para o filho.

Um processo tem associado uma thread (main thread).

Na criação do processo pode definir a classe de prioridade

a que as threads do processo ficam associadas.

A criação com sucesso retorna um valor diferente de zero.

setembro de 11

Page 84: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Criação de processos Win32

setembro de 11

Page 85: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Eliminação de Processos

Existem três formas para terminar um processo

Chamada a função ExitProcess que autotermina o processo

Chamada a função TerminateProcess que permite a um

processo com um determinado privilégio terminar outro

processo

Terminando todas as threads de um processo

setembro de 11

Page 86: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Eliminação de Processos

setembro de 11

Page 87: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Criação Thread

HANDLE CreateThread (LPSECURITY_ATTRIBUTES ThreadAttr,

DWORD stakSz,

LPTHREAD_START_ROUTINE StrtAddr,

LPVOID Parm,

DWORD CreatFlgs,

LPDWORD ThreadId);

setembro de 11

Handlepara a thread ou NULL sefalhou

Atributos de segurança

Tamanho da pilha

Endereço da função inicial

Um parâmetro pode ser passado a thread

Page 88: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Esperar pelo termino de Subprocesso

WaitForSingleObject(handle, timeout)

Função genérica de espera sobre um objeto

(entidade do sistema operacional)

setembro de 11

Page 89: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

EVENTOS

Rotinas Assíncronas para Tratamento de acontecimentos assíncronos e exceções

setembro de 11

Page 90: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Eventos

Uso de sinais

[ctrl-C]

Processo

interrupção sinalSistema Operacional

setembro de 11

Page 91: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Rotinas Assíncronas

Certos acontecimentos devem ser tratados pelas aplicações, embora não seja possível prever a sua ocorrência Ex: Ctrl-C Ex: Ação desencadeada por um timeout

Como tratá-los na programação sequencial?Poderia lançar uma tarefa por acontecimento.Desvantagem?Alternativa: Rotinas assíncronas associadas aos acontecimentos (eventos)

setembro de 11

Page 92: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Modelo de Eventos

setembro de 11

Page 93: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Rotinas Assíncronas

setembro de 11

Page 94: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Sinais

Sinais, interrupções e exceções

Hardware

Sistema Operacional

InterrupçõesExceções

Sinais

Processo Processo

setembro de 11

Page 95: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

SinaisAcontecimentos Assíncronos no Linux

setembro de 11

Signal CausaSIGALRM O relógio expirouSIGFPE Divisão por zero

SIGINT O usuário apertou a tecla para interromper o processo (normalmente o CRTL+C)

SIGQUIT O utilizador quer terminar o processo e provocar um core dump

SIGKILL Signal para terminar o processo. Não pode ser tratado

SIGPIPE O processo escreveu para um pipe que não tem receptores

SIGSEGV Acesso a uma posição de memória inválida

SIGTERM O usuário pretende terminar ordenadamente o processo

SIGUSR1 Definido pelo usuárioSIGUSR1 Definido pelo usuário

Exceção

Interação com o terminal

Desencadeado por interrupção de HW

Explicitamente desencadeado por outro processo

Def

inid

os e

m s

igna

l.h

Page 96: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Tratamento de sinais

Possibilidades:

Terminar o processo.

Ignorar sinal.

Alguns sinais como o SIGKILL não podem ser ignorados. Porquê?

Executar rotina de tratamento (handler)

Associarmos rotinas de tratamento a sinal pela função do

sistema signal

Cada sinal tem um tratamento por omissão, que pode ser terminar ou ignorar

setembro de 11

Page 97: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Chamada Sistema “Signal”

void (*signal (int sig, void (*func)(int))) (int);

setembro de 11

A função retorna um ponteiro para função anteriormente associada aosinal

Identificadordo sinalpara o qualse pretendedefinir umhandler

Ponteiro para aFunção ou macroespecifico:•SIG_DFL –ação por omissão•SIG_IGN –ignorar o sinal

Parâmetropara afunção detratamento

Page 98: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Exemplo

setembro de 11

#include <stdio.h>

#include <signal.h>

apanhaCTRLC () {

char ch;

printf ("Quer de fato finalizar a execucao?\n");

ch = getchar();

if (ch == 's')

exit(0);

else {

printf ("Entao vamos continuar\n"); signal (SIGINT, apanhaCTRLC);

}

}

void main () {signal (SIGINT, apanhaCTRLC);printf("Associou uma rotina ao signal SIGINT\n");

for (;;){printf(". ");sleep (1/2);

}}

Page 99: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Chamada do sistema kill

Envia um sinal ao processo

Nome enganador. Porquê?

setembro de 11

Page 100: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Outras funções associadas aos sinais

unsigned alarm (unsigned int segundos); o sinal SIGALRM é enviado para o processo depois de

passado o número de segundos especificados. Se o argumento for zero, o envio é cancelado.

pause(); aguarda a chegada de um signal

unsigned sleep (unsigned int segundos); A função faz um alarm e se bloqueia à espera do sinal

setembro de 11

Page 101: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Dúvidas?

setembro de 11

Page 102: Sistemas Operacionais – Aula 4 - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/so/so1_aula4_processos.pdf · Curso de Análise e Desenvolvimento ... filho entre processos e

Anderson Moreira Sistemas Operacionais – Aula 4

Não percam no próximo episódio!

Implementação de processos;

E muito mais!

Dúvidas?

setembro de 11