Sinais. Sinais e fork. Sinais e exec. Segunda aula. Chamada ao sistema fork Chamada ao sistema execve. José Pedro Oliveira

Documentos relacionados
Processos. Programas e Processos. Aula 1 - Chamadas ao sistema. José Pedro Oliveira fork exit getpid, getppid wait, waitpid

Tratamento de Sinais

Unnamed Pipes. Chamada ao sistema pipe. Pipes. Comunicação entre processos. Unnamed Pipes Chamada so sistema. José Pedro Oliveira

Duplicação e partilha de ficheiros

Arquitetura de Sistemas Operativos

SVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais

Programação de Sistemas

Interacção por sinais no Unix. José C. Cunha, DI-FCT-UNL

Programação de sistema UNIX

SVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais

MC514 Sistemas Operacionais: Teoria e Prática 1s2010. Processos e sinais

SISTEMAS OPERATIVOS I

Sinais: eventos assíncronos

3. Criação e terminação de processos

Eventos. Rotinas Assíncronas

Tratamento de sinais em sistemas UNIX

Manipulação de processos

Comunicação entre Processos 9/21/17 1

! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema

5. Comunicação entre processos - Sinais

SVCs para Controle de Processos no Unix

Sistemas de Computação O Sistema Operacional Unix

Sistemas Operativos. Processos, threads e eventos. Rui Maranhão

Sistemas Operacionais I

Técnicas Avançadas de Programação

Sistemas Operacionais I

Processos no UNIX. Walter Fetter Lages

1 System Calls no Linux

Complementos de Programação. Engenharia Electrotécnica - Electrónica e Computadores. Ano Lectivo: 2005/2006. Ana Madureira. Gestão de Processos

Sistemas Operacionais

Na Aula Anterior... Interrupções por software e hardware; Temporizadores; RTC; Temporizadores via software. Relação Processos Multiprogramação


SISTEMAS OPERATIVOS I

LABORATÓRIO SISTEMAS DE TEMPO REAL

Processos. Sistemas Operativos 2009 / Multiprogramação

A D M I N I S T R A Ç Ã O D E S I S T E M A S / P E D R O B R A N D Ã O REFERÊNCIAS DOS SLIDES

Chamada ao sistema: sbrk. Chamada ao sistema: brk. brk sbrk. Generalidades. José Pedro Oliveira calloc e malloc free

Sistemas Operacionais II

LEIC/LERC 2008/09. Repescagem do Primeiro Teste de Sistemas Operativos

Sistemas Operativos: Processos

Processos. Um SO executa uma multiplicidade de programas, em batch ou time-sharing, que se designam por: ÈÖÓ Ó é um programa em execução.

Processos. processos UNIX e Linux threads em Linux. Taisy Weber

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Conceitos Básicos

Processos. Conceitos Básicos

Licenciatura em Eng.ª Informática Sistemas Operativos - 2º Ano - 1º Semestre. Trabalho Nº 4 Desenvolvimento de um mini-shell

Criação de Processos Fork( ) Exec( )

LABORATÓRIO SISTEMAS OPERACIONAIS

SVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais

SVCs para Controle de Processos no Unix (cont.) Sistemas Operacionais

1. Processos. Núcleo, Processos e Tarefas. Page 1. Processo Processo Processo. Sistemas Operativos 2011 / Departamento de Engenharia Informática

Sistemas Operativos. (ano letivo ) Laboratório 2

Processos. Sistemas Operativos 2015 / Multiprogramação. Execução, em paralelo, de múltiplos programas na mesma máquina

13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Mestrado em Engenharia Física Tecnológica

Processos ao nível do SO

IP I C P n o n U N U IX I Sinais

Comunicação baseada em canais de I/O e Pipelines no sistema Unix. José C. Cunha, DI-FCT/UNL

Este documento não é de forma alguma exaustivo, nem pretende ser um manual, apenas uma referência aos pontos nele abordados.

Processos. Sistemas Operativos 2008 / Multiprogramação

Leandro Soares de Sousa (DSc.) Página: Aula 03 Revisão e Conceitos C e Unix

Processos. (c) 2005 Volnys B. Bernal Versão de 15/3/2006. Agenda. Processos. Introdução aos Processos. Introdução aos Processos

Processos. Conceitos Básicos

Trabalhando com Processos e Threads em Ambiente LINUX

SVCs para Controle de Processos no Unix

Arquitetura de Sistemas Operativos

LEIC/LERC 2008/09. 2º Exame de Sistemas Operativos

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco

C Comandos de Controle

1 o Trabalho de Programação Período: 2008/1 Prof a Patrícia Dockhorn Costa

Sistemas Operativos: Processos

Controlo de Execução. K&R: Capitulo 3

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

Processos Volnys B. Bernal Versão de 20/03/2015. Agenda. Processos. Programa x Processo. Programa x Processo. Programa.

REDES INTEGRADAS DE TELECOMUNICAÇÕES I 2008 / 2009

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA

Sistemas de Computação

C Comandos de Controle

Sistemas Operacionais II

Teste de Sistemas de Operação 30 de Maio de 2009

Processos em Unix. Conteúdo: Definição de Processos em Unix Estrutura, tipo e escalonamento de processos em Unix Processos, Pai, Filho e Zumbi.

Programação de Sistemas

Arquitectura e Sistemas de Computadores I

Unidade 2. Processos Threads Concorrência em Java

Programação por Objectos. Java

Sistemas Operacionais Aula 4

Sistemas Operacionais

Arquitetura de Computadores Sistemas Operacionais II

Semáforos em Unix. Criar um conjunto (vetor) de semáforos: semid = semget ( chave, nsems, flag); onde:

Comunicação entre Processos Memória Compartilhada

Controlo de processos e sinais

Sistemas Operacionais. Conceito de Processos

Gestão de processos. José Pedro Oliveira.

Processos. Volnys Borges Bernal. Edson Toshimi Midorikawa

Laboratório de Informática Avançada Automatização de Horários Manual do Aluno

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

SOP - TADS Processos. Revisão Ultima aula

Programação de Sistemas

Transcrição:

e chamadas ao sistema fork e exec Segunda aula (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos I 2006-2007 1 e chamadas ao sistema fork e exec 2 SIGSTOP e SIGCONT e fork e chamadas ao sistema fork e exec e exec e chamadas ao sistema fork e exec Propriedades herdadas pelo processo filho O processo fillho herda a configuração de sinais do processo pai. Nota: os endereços das rotinas de atendimento são válidas no processo filho. Diferenças entre o processo pai e filho o filho começa sem alarmes pendentes o conjunto de alarmes pendentes no processo filho é o conjunto vazio Sumário Quando um programa é exec ed o status de todos os sinais é default ou ignore. Normalmente todos os sinais passam a executar a sua acção por omissão, a não ser que o processo que invoque exec esteja a ignorar o sinal. Propriedades herdadas pelo processo execed o tempo que falta para o próximo alarme máscara de sinais sinais pendentes

e chamadas ao sistema fork e exec Herança de configurações 1 void s i g t e r m h a n d l e r ( i n t signo ) 4 } 5 6 i n t main ( void ) 7 { 8 s i g n a l (SIGTERM, sigterm handler ) ; 9 10 for ( i = 0; i < NFILHOS ; i ++) { 11 p [ i ] = f o r k ( ) ; 12 i f ( p [ i ] == 0) { 13 / Processo f i l h o herda configuracao de s i n a i s do 14 processo pai. Para repor accao por omissao : 15 s i g n a l (SIGTERM, SIG DFL ) ; / 16... 17 e x 0 ) ; i t ( 18 } 19 } 20... 21 } 1 e chamadas ao sistema fork e exec 2 SIGSTOP e SIGCONT Exemplo de intercepção do sinal SIGTERM Descrição Sinal utilizado para provocar a finalização de programas. Ao contrário do SIGKILL, este sinal pode ser bloqueado, interceptado e ignorado. Maneira delicada de pedir a um programa que termine. Sinal enviado por omissão pelo comando kill(1). 1 v o l a t i l e i n t flag ; 2 3 void handler ( i n t signo ) 4 { 5 f l a g = 1; 6 } 7 8 i n t main ( void ) 9 { 10 i f ( s i g n a l (SIGTERM, handler ) == SIG ERR ) { 11 p err or ( s i g n a l ) ; e x i t (SIGTERM ) ; 12 } 13 14 p r i n t f ( Eu sou o processo %d\n, getpid ( ) ) ; 15 while (! f l a g ) { 16 pause ( ) ; 18 19 p r i n t f ( Fim\n ) ; return 0; 20 }

Descrição Sempre que um processo termina ou pára, é enviado ao processo pai um sinal SIGCHLD. Por omissão, o sinal é ignorado. Processo pai O processo pai deve interceptar o sinal SIGCHLD se pretender ser notificado de alterações de estado de processos filhos. O tratamento típico deste consiste em invocar uma das chamadas ao sistema da família wait para obter o identificador do processo (pid) e a sua informação de estado. 1 void s i g c h l d h a n d l e r ( i n t signo ) 4 while ( ( res = waitpid ( 1, &status, WNOHANG) ) > 0) { 5 i f (WIFEXITED ( status ) ) { 6 / o processo terminou normalmente / 7 } else { 8 / o processo nao terminou normalmente / 9 } 10 } 11 } 12 13 i n t main ( void ) 14 { 15 i f ( s i g n a l (SIGCHLD, s i g c h l d h a n d l e r ) == SIG ERR ) { 16 p erro r ( s i g n a l ) ; e x i t (SIGCHLD ) ; 18... 19 } Preservar valor de errno void s i g c h l d h a n d l e r ( i n t 1 signo ) 4 i n t olderrno = errno ; / guardar v a l o r a c t u a l de errno / 5 6 while ( ( res = waitpid ( 1, &status, WNOHANG) ) > 0) { 7 i f (WIFEXITED ( status ) ) { 8 / o processo terminou normalmente / 9 } else { 10 / o processo nao terminou normalmente / 11 } 12 } 1 14 errno = olderrno ; / repor v a l o r i n i c i a l de errno / 1 #define NUM FILHOS 4 2 3 void s i g c h l d h a n d l e r ( i n t signo ) 4 { 5 p i d t res ; i n t s t a t u s ; 6 7 while ( ( res = waitpid ( 1, &status, WNOHANG) ) > 0) { 8 i f (WIFEXITED ( status ) ) { 9 p r i n t f ( O processo %d terminou normalmente (%d)\n, 10 res, WEXITSTATUS( status ) ) ; 11 } else { 12 p r i n t f ( O processo %d nao terminou normalmente\n, res ) ; 13 } 14 } 16 17 i n t main ( void ) 18 { 19 i n t i ; s i g n a l (SIGCHLD, sigch ld handler ) ; 20 21 for ( i 0; i < NUM FILHOS ; i ++) { = 22 i f ( f o r k ( ) == 0) { sleep ( 1 ) ; e x i t ( i ) ; } 23 } 24 25 while ( 1 ) { pause ( ) ; } 26 27 return 0; 28 }

SIGSTOP SIGCONT SIGSTOP e SIGCONT 1 #define NUM FILHOS 4 2 v o l a t i l e i n t nf ; 3 4 void s i g c h l d h a n d l e r ( i n t signo ) 5 { 6 p i d t res ; i n t s t a t u s ; 7 8 while ( ( res = waitpid ( 1, &status, WNOHANG) ) > 0) { 9 nf ++; 10 i f (WIFEXITED ( status ) ) { 11 p r i n t f ( O processo %d terminou normalmente (%d)\n, 12 res, WEXITSTATUS( status ) ) ; 13 } else { 14 p r i n t f ( O processo %d nao terminou normalmente\n, res ) ; 16 } 18 19 i n t main ( void ) 20 { 21 i n t i ; s i g n a l (SIGCHLD, sigch ld handler ) ; 22 23 for ( i 0; i < NUM FILHOS ; i ++) { = 24 i f ( f o r k ( ) == 0) { sleep ( 1 ) ; e x i t ( i ) ; } 25 } 26 27 while ( nf < NUM FILHOS) { pause ( ) ; } 28 29 p r i n t f ( Fim\n ) ; return 0; 30 } Sinal SIGSTOP O sinal SIGSTOP pára um processo. Este sinal não pode ser interceptado ou ignorado. Sinal SIGCONT O sinal SIGSTOP pára um processo. Este sinal não pode ser interceptado ou ignorado. s s 1 e chamadas ao sistema fork e exec 2 SIGSTOP e SIGCONT Utilizar vários processos filhos (workers) para verificar a existência de um dado número num vector. Assumir: um vector de mil inteiros o número inteiro a procurar quatro processos trabalhadores (filhos) Modificações a realizar: 1 substituir o ciclo for de waits pela recepção do sinal SIGCHLD 2 os processos filhos devem enviar ao processo pai o sinal SIGUSR1 no caso de encontarem o número ou o sinal SIGUSR2 em caso contrário.

s Downloads concorrentes Delegar as operações de download em processos filhos (wget ou lftpget). Assumir: um array de strings com os links dos ficheiros a descarregar Funcionalidades: 1 re-lançar downloads no caso do processo filho (wget) ter sido morto ou tiver terminado com um código de saída diferente de zero 2 impor um limite ao número de downloads a decorrer simultaneamente 3 impor um limite temporal para todos os downloads; cancelar todos os downloads pendentes caso o limite seja atingido 1 e chamadas ao sistema fork e exec 2 SIGSTOP e SIGCONT Bibliografia Advanced Programming in the UNIX Environment, 2nd ed. W. Richard Steven, Stephen A. Rago http://www.apuebook.com/ Capítulo 8 - Process Control Capítulo 10 - Signals Linux Programming by Example: The Fundamentals Arnold Robbins http://authors.phptr.com/robbins/ Capítulo 10 - Signals The Design of the Unix Operating System Maurice J. Bach Capítulo 7 - Secção 7.2 - Signals