Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi...

30
Volnys & Midorikawa (c) 1 Processos Volnys Borges Bernal [email protected] http://www.lsi.usp.br/~volnys Edson Toshimi Midorikawa [email protected] http://www.lsi.usp.br/~emidorik Laboratório de Sistemas Integráveis http://www.lsi.usp.br/

Transcript of Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi...

Page 1: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 1

Processos

Volnys Borges [email protected]

http://www.lsi.usp.br/~volnys

Edson Toshimi [email protected]

http://www.lsi.usp.br/~emidorik

Laboratório de Sistemas Integráveishttp://www.lsi.usp.br/

Page 2: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 2

Agenda

o Programa e Processoo Utilitário pso Procesoso Formas de execução de processoso Sinais

Page 3: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 3

Programa e Processo

Page 4: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 4

Programa e Processo

o Programa

X Conjunto de instruções e dados que podem ser executadorpara realizar uma determinada tarefa

X Os programas no sistema UNIX são armazenados em arquivos,chamados “arquivos executáveis”

X Exemplo:êO diretório /bin contém vários utilitários do sistema.êListando este diretório (ls -l /bin) é possivel identificar os

arquivos executáveis de alguns programas utilitários:u utilitário ls é armazenado no arquivo /bin/lsu utilitário cat é armazenado no arquivo /bin/catu utilitário csh é armazenado no arquivo /bin/tcsh

Page 5: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 5

Programa e Processo

o ProcessoX Um programa sendo executadoX Um programa quando está sendo executado possui, além do

conjunto de instruções e dados várias outras informações,como:

êpilha de execuçãoêdono do processo, grupo do processoêterminal do qual foi disparadoêidentificação única (pid - process identification)êestadoê....

Page 6: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 6

Utilitário ps

Page 7: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 7

Utilitário ps

o DescriçãoX “Process Status”X Permite mostrar informações dos processos

o Sintaxeps [fuxa]

o Opçõesx “x”, inclui processos que não possuem terminal de controlea “all”, mostra todos processo, inclusive de outros usuáriosu “user oriented output”, mostra campos USER, %CPU, %MEM,

SZ, RSS and STARTf mostra relação pai-filho

Page 8: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 8

Utilitário ps

o Exemplos{terra|jose} ps x

{terra|jose} ps xa

{terra|jose} ps xau

PID TTY STAT TIME COMMAND

1 ? S 0:03 init

2 ? SW 0:00 (kflushd)

3 ? SW< 0:00 (kswapd)

4 ? SW 0:00 (md_thread)

221 ? S 0:00 crond

232 ? S 0:00 portmap

210 ? S 0:00 /usr/sbin/atd

446 2 S 0:00 /bin/login -- aluno1

464 2 S 0:00 -csh

486 2 R 0:00 ps xa

{terra|jose}

Page 9: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 9

Utilitário ps

o Informações apresentadas

USER usuário dono do processoPID process identification - identificação do processo%CPU porcentagem de tempo de CPU consumido recentemente%MEM porcent. da memória real (páginas) consumida recentementeSIZE size - tamanho dos segmentos de dados e pilha (Kbytes)RSS resident set size - memória efetivamente alocada (kbytes)TT tty - terminal de controle, terminal do qual foi disparadoSTAT state - estado do processoSTART horário de disparoTIME tempo (em seg.) consumido pelo processo desde seu inícioCOMMAND linha de comando

Page 10: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 10

Processos

o Ciclo de vida dos processosX Os processos, assim como qualquer entidade viva, possui um

ciclo de vidaX Um processo nasce, vive e morre

o Estados de um processoX Diagrama simplificado de transição de estados:

suspenso

pronto

parado

zumbi

terminado

executando

Page 11: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 11

Estado do Processo

X ProntoêO processo está pronto para executar. Não está executando

porque a CPU está sendo utilizada por outro processo.X Executando

êO processo está utilizando a CPU no momentoX Suspenso

êO processo não pode continuar sua execução enquanto nãoocorrer o evento pelo qual espera (leitura de disco, ...)

X ParadoêO processo foi momentaneamente parado pelo usuário

X ZumbiêO processo já terminou mas não foram liberadas suas

informações de controleX Terminado

êProcesso já terminou e toda informação de controle foi liberada

Page 12: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 12

Processos

o Processos pai e filhoX Seja um processo A que cria um processo BX O processo A é chamado processo pai do processo BX O processo B é chamado processo filho do processo A

pai

filho filho

netoneto

Page 13: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 13

Formas de execução deprocessos

Page 14: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 14

Formas de execução de processos

o Existem duas formas possíveis de disparar programaspelo shell:

X Foreground

X Background

Page 15: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 15

Formas de execução de processos

o ForegroundX O interpretador de comandos (shell) dispara o processo e emite

o prompt somente quando o processo terminarX Até agora somente foi utilizada execução em foregroud

o Exemplo:

{terra|jose} ls -l

...

{terra|jose} ps

...

{terra|jose} cat Annoucement

...

{terra|jose}

Page 16: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 16

Formas de execução de processos

o Vamos para o diretório programas:

{terra|jose} cd

{terra|jose} cd programas

{terra|jose} ls -l

....

o Vamos compilar o programa demorado:

{terra|jose} cc -o demorado demorado.c

{terra|jose} ls -l

....

Page 17: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 17

Formas de execução de processos

o Vamos executar o programa demorado

{terra|jose} ./demorado

X Note que:êo shell não emite o prompt enquanto o processo “demorado” não

terminar.êO usuário é obrigado a esperar pelo término do processo

“demorado” para poder executar outro comando neste terminal

Page 18: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 18

Formas de execução de processos

o BackgroundX O interpretador de comandos (shell) dispara o processo e emite

o prompt imediatamenteX O processo fica “desconectado” do terminal, ou seja, o usuário

não pode interagir com o processo

X Para disparar em backgroud acrescente o símbolo “&” no finalda linha de comando

o Exemplo:{terra|jose} ./demorado &

{terra|jose} ps xau

PID TTY STAT TIME COMMAND

... .... .... .... ........

613 1 S 0:15 demorado

... .... .... .... ........

{terra|jose}

Page 19: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 19

Sinais

Page 20: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 20

Sinais

o Sinais são eventos assincronos que chegam aosprocessos

o Os sinais podem ocorrer a qualquer momentoo Existem vários tipos de sinais, cada um é representado

por um númeroo O processo pode especificar uma ação a ser tomada no

momento de chegada de um sinal:X Terminar o processoX Ignorar o sinalX Executar uma rotina (chamada rotina de tratamento do sinal)

Page 21: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 21

Sinais

o Sinais mais importantes:

1 SIGHUP hung up2 SIGINT interrupção3 SIGQUIT quit....9 SIGKILL kill...15 SIGTERM terminação por software...

Page 22: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 22

Sinal INTR e QUIT

o Terminando processos com sinais através do teclado

X Sinal 2 - INTR (interrupção)êAção padrão: termina o processoêEste sinal pode ser tratado ou ignorado pelo processoêPode ser enviado pelo teclado

u Geralmente tecla ^ Cu Verifique a tecla em seu sistema executando “stty -a”

X Sinal 3 - QUITêAção padrão: termina o processoêEste sinal pode ser tratado ou ignorado pelo processoêPode ser enviado pelo teclado

u Geralmente tecla ^ |u Verifique a tecla no seu sistema executando “stty -a”

Page 23: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 23

Sinal INTR e QUIT

o ExemploX Terminando processos com sinal INTR via teclado

{terra|jose} cc -o loop loop.c

{terra|jose} ls -l

...

{terra|jose} ./loop

^C

{terra|jose}

Page 24: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 24

Sinal INTR e QUIT

o ExemploX Existem processos que podem “tratar” o sinal 2 (INTR)X Neste caso, pode-se tentar enviar o sinal 3 (QUIT)

{terra|jose} cc -o trata-intr trata-intr.c

{terra|jose} ./trata-intr

^C <- enviando o sinal 2 (INTR)^C processo trata o sinal 2^C

^\ <- enviando o sinal 3 (QUIT)Quit (core dumped)

{terra|jose}

Page 25: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 25

Sinal INTR e QUIT

o ExemploX Existem processos que podem “tratar” o sinal 2 (INTR) e

também o sinal 3 (QUIT)

{terra|jose} cc -o trata-quit trata-quit.c

{terra|jose} ./trata-quit

^C <- enviando o sinal 2 (INTR)

^C processo trata o sinal 2^C

^\ <- enviando o sinal 3 (QUIT)

^\ processo trata o sinal 3...

o Como terminar este processo?

Page 26: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 26

Utilitário kill

o DescriçãoX “kill” - matarX Utilitário que permite enviar sinais a outros processosX Se não for especificado o número do sinal é enviado o sinal 15

(sinal TERM - terminação por software)X PID - Process Identification

ênúmero do processoêuse o utilitário ps para verificar o número do processo

o Sintaxekill [-sinal] pid [...]

o Exemplokill -INTR 813 812

kill -2 813 812

Page 27: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 27

Sinal TERM

o Sinal 15 - TERM (terminação por software)X Ação padrão: termina o processoX Este sinal pode ser tratado ou ignorado pelo processo

o Para terminar o processo trata_quitX Tealize o login em outro terminalX Liste os processos (ps xau)X Execute:

{terra|jose} kill -15 PID{terra|jose}

Page 28: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 28

Exemplos

o Disparando programa loop em background ...

{terra|jose} ./loop &

{terra|jose} ps xau

PID TTY STAT TIME COMMAND

... .... .... .... ........

613 tty1 S 0:15 demorado

... .... .... .... ........

{tera|jose}

o Como terminar o processo loop?X Liste os processos (ps xau) e envie o sinal 15 TERM

{terra|jose} kill -15 PID{terra|jose}

Page 29: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 29

Exemplos

o Disparando o programa trata_todos

{terra|jose} cc -o trata_todos trata_todos.c

{terra|jose} ./trata_todos

^C

^\

...

o Em outra janela execute:

{terra|jose} ps xau

{terra|jose} kill -15 PID{terra|jose} kill -9 PID

Page 30: Processos - USPvolnys/courses/linux/pdf-col/proc-col.pdf · X Parado ŒO processo foi momentaneamente parado pelo usuário X Zumbi ŒO processo já terminou mas não foram liberadas

Volnys & Midorikawa (c) 30

Sinal KILL

o Sinal 9 - KILL (matar)X Ação padrão: termina o processoX Este sinal não pode ser tratadoX Portanto, sempre termina o processo

o Para terminar o processo trata_todos:X Em outra janela execute:

{terra|jose} ps xau

{terra|jose} kill -9 PID{terra|jose}