Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura...

33
Prof. Hernani Resumo Cria¸c˜ ao e termina¸c˜ ao de processos Arquitetura de Sistemas Operativos Hernani Costa [email protected] Sistemas Operativos 2011/2012 Hernani Costa [email protected] TGPSI 09/12 Sistemas Operativos odulo 5

Transcript of Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura...

Page 1: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Arquitetura de Sistemas Operativos

Hernani Costa

[email protected]

Sistemas Operativos 2011/2012

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 2: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

1 Criacao e terminacao de processos

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 3: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Um processo e uma instancia em execucao de um programa.

No sistema operativo Unix a unica forma de se criar um novoprocesso (processo-filho) e atraves da invocacao, por parte deum processo existente e em execucao, do servico fork():

Retorna:

0 - para o processo filhopid (id do processo) - para o processo pai-1 - se houve erro e o servico nao foi executado

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 4: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

A funcao fork() e invocada uma vez, no processo-pai, masretorna 2 vezes, uma no processo que a invocou e outra numnovo processo agora criado, o processo-filho.

Este servico cria um novo processo que e uma copia doprocesso que o invoca.

Este novo processo-filho (assim como o pai) continua aexecutar as instrucoes que se seguem a fork().

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 5: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

O filho e uma copia fiel do pai ficando com uma copia dosegmento de dados, heap e stack; no entanto o segmento detexto (codigo) e muitas vezes partilhado por ambos.

Em geral, nao se sabe quem continua a executarimediatamente apos uma chamada a fork() (se e o pai ou ofilho).

Depende do algoritmo de escalonamento.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 6: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Todos os processos em Unix tem um identificador, geralmentedesignados por pid (process identifier).

E sempre possıvel a um processo conhecer o seu proprioidentificador e o do seu pai.

Os identificadores dos processos em Unix sao numeros inteiros(melhor, do tipo pid t definido em sys/types.h) diferentes paracada processo.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 7: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Os servicos a utilizar para conhecer pid’s (alem do servicofork()) sao:

Estas funcoes sao sempre bem sucedidas.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 8: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

No exemplo seguinte pode ver-se uma utilizacao destes tresservicos:

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 9: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Um resultado possıvel sera (os pid’s serao concerteza outros):

antes do fork

pid = 430, glob = 7, var = 89 as variaveis do filho forammodificadas

pid = 429, glob = 6, var = 88 as do pai permaneceminalteradas

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 10: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Um processo pode terminar normalmente ou anormalmentenas seguintes condicoes:

Normal:

Executa return na funcao main();Invoca directamente a funcao exit() da biblioteca do C;Invoca directamente o servico do sistema exit().

Anormal:

Invoca o funcao abort();Recebe sinais de terminacao gerados pelo proprio processo, oupor outro processo, ou ainda pelo Sistema Operativo.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 11: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

A funcao abort() destina-se a terminar o processo emcondicoes de erro e pertence a biblioteca standard do C.

Em Unix a funcao abort() envia ao proprio processo o sinalSIGABRT que tem como consequencia terminar o processo.

Esta terminacao deve tentar fechar todos os ficheiros abertos.

Esta funcao nunca retorna.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 12: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

O Unix mantem sempre uma relacao pai-filho entre osprocessos.

Se o pai de um processo terminar antes do filho, este ficamomentaneamente orfao.

Quando um processo termina, o SO percorre todos os seusprocessos activos e verifica se algum e filho do que terminou.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 13: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Quando encontra algum nessas condicoes o seu pai passa aser o processo 1 (que existe sempre no sistema).

Assim os processos que ficam orfaos sao adoptados peloprocesso 1, ficando assim garantido que todos os processostem um pai.

Um processo que termina nao pode deixar o sistema ate que oseu pai aceite o seu codigo de terminacao (valor retornado pormain() ou passado a exit() ou exit()), atraves da execucao deuma chamada aos servicos wait() / waitpid().

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 14: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Um processo que terminou, mas cujo pai ainda nao executouum dos wait’s passa ao estado de zombie. ( Na saıda docomando ps no terminal o estado destes processos apareceidentificado como Z ).

Quando um processo que foi adoptado por init (processo 1)terminar, nao se torna zombie, porque init executa um doswait’s para obter o seu codigo de terminacao.

Quando um processo passa ao estado de zombie a suamemoria e libertada mas permanece no sistema algumainformacao sobre o processo (geralmente o seu PCB - processcontrol block).

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 15: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Um pai pode esperar que um dos seus filhos termine e, entao,aceitar o seu codigo de terminacao, executando uma dasfuncoes wait().

Quando um processo termina (normalmente ouanormalmente) o kernel notifica o seu pai enviando-lhe umsinal (SIGCHLD).

O pai pode ignorar o sinal ou instalar um signal handler parareceber aquele sinal.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 16: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Retornam o pid do processo em caso de sucesso e -1 se houveum erro

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 17: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

O argumento options de waitpid pode ser 0 ou constantes(separadas pelo operador — or):

WNOHANG - que indica que waitpid() nao bloqueia se o filhoespecificado por pid nao estiver imediatamente disponıvel(terminado). Neste caso o valor de retorno e igual a 0.WUNTRACED - que indica que, se a implementacao suportarjob control, o estado de terminacao de qualquer filhoespecificado por pid que tenha terminado e cujo status aindanao tenha sido reportado desde que ele parou, e agoraretornado.

(job control - permite iniciar multiplos jobs (grupos deprocessos) a partir de um unico terminal e controlar quais osjobs que podem aceder ao terminal e quais os jobs que saoexecutados em background)

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 18: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Um processo que invoque wait() ou waitpid() pode:

bloquear - se nenhum dos seus filhos ainda nao tiver terminado;retornar imediatamente com o codigo de terminacao de umfilho - se um filho tiver terminado e estiver a espera de retornaro seu codigo de terminacao (filho zombie);retornar imediatamente com um erro - se nao tiver filhos.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 19: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Diferencas entre wait() e waitpid():

servico wait() pode bloquear o processo que o invoca ate queum filho qualquer termine;servico waitpid() tem uma opcao que impede o bloqueio (utilquando se quer apenas obter o codigo de terminacao do filho);waitpid() nao espera que o 1o filho termine, tem umargumento para indicar o processo pelo qual se quer esperar.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 20: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

O argumento status de waitpid() pode ser NULL ou apontarpara um inteiro;

no caso de ser 6= NULL - o codigo de terminacao do processoque terminou e guardado na posicao indicada por status;no caso de ser = NULL - o codigo de terminacao e ignorado.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 21: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

O estado retornado por wait() / waitpid() na variavelapontada por status tem certos bits que indicam se aterminacao foi normal, o numero de um sinal, se a terminacaofoi anormal, ou ainda se foi gerada uma core file.

O estado de terminacao pode ser examinado (os bits podemser testados) usando macros, definidas em <sys/wait.h>.

Os nomes destas macros comecam por WIF.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 22: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

O argumento pid de waitpid() pode ser:

pid == -1 - espera por um filho qualquer (= wait());pid > 0 - espera pelo filho com o pid indicado;pid == 0 - espera por um qualquer filho do mesmo processgroup;pid < -1 - espera por um qualquer filho cujo process group IDseja igual a |pid|.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 23: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

waitpid() retorna um erro (valor de retorno = -1) se:

o processo especificado nao existir;o processo especificado nao for filho do processo que o invocou;o grupo de processos nao existir.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 24: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Eis um exemplo:

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 25: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Como se viu atras, a funcao fork() e a unica no Unix capaz decriar um novo processo.

Mas fa-lo duplicando o codigo do pai e nao substituindo essecodigo por outro residente num ficheiro executavel.

Para esta ultima funcao existem no Unix seis servicos(designados genericamente por servicos exec()) que, emboranao criando um novo processo, substituem totalmente aimagem em memoria do processo que os invoca por umaimagem proveniente de um ficheiro executavel, especificado nachamada.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 26: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Os seis servicos sao:

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 27: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

O parametro pathname (string) deve indicar o nome doficheiro executavel que se pretende venha a substituir o codigodo processo que chama o servico.

Este nome deve ser completo no sentido de incluir todo opath desde a raiz.

Nos servicos que contem um p no nome (2 ultimos), bastaindicar o nome do ficheiro executavel para o parametrofilename.

O SO procurara esse ficheiro nos directorios especificados pelavariavel de ambiente PATH.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 28: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Os servicos que contem um l (letra ele) no nome aceitam aseguir ao primeiro parametro, uma lista de strings, terminadapor NULL, que constituirao os parametros de chamada doprograma que agora se vai passar a executar (deve incluir-se,como primeiro parametro desta lista, o nome do programa).

Nos servicos que contem a letra v esses parametros dechamada devem ser previamente colocados num vector argv[].

Finalmente os servicos que contem a letra e, aceitam comoultimo parametro um vector (envp[]) de apontadores parastring com as variaveis de ambiente e suas definicoes.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 29: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 30: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Alguns exemplos:

Neste ultimo pedaco de codigo mostra-se um pequenoprograma que executa outro, cujo nome lhe e passado como1o argumento.

Se este programa se chamar run, a invocacao run cc prog1.cexecutara cc prog1.c se cc for encontrado no PATH.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 31: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Como ultimo servico que referiremos temos o servico system().

Este servico permite executar um programa externo do interiordo processo que o invoca.

O processo que invoca o servico fica bloqueado ate que aexecucao pedida termine.

Este servico e assim equivalente a sequencia fork(), exec(),waitpid().

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 32: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Retorna:

-1 se fork() falhou ou se waitpid() retornou um erro127 se exec() falhoucodigo de terminacao do programa invocado, no formatoespecificado por waitpid() se tudo correu bem

Exemplo:

system(“date > file”);

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5

Page 33: Arquitetura de Sistemas Operativos - Universidade de Coimbrahpcosta/so/soMod5BAula5.pdfArquitetura de Sistemas Operativos Hernani Costa hpcosta@dei.uc.pt Sistemas Operativos 2011/2012

! Prof. Hernani

Resumo Criacao e terminacao de processos

Avaliacao - Trabalho Teorico-Pratico 13

Escrever um pequeno texto (200 a 400 palavras) a descreverum topico a sua escolha (aula 5).

O texto devera ser elaborado em grupo e enviado por email aoprofessor no final da aula.

Hernani Costa [email protected]

TGPSI 09/12 Sistemas Operativos Modulo 5