Post on 13-Mar-2020
Volnys & Midorikawa (c) 1
Processos
Volnys Borges Bernalvolnys@lsi.usp.br
http://www.lsi.usp.br/~volnys
Edson Toshimi Midorikawaemidorik@lsi.usp.br
http://www.lsi.usp.br/~emidorik
Laboratório de Sistemas Integráveishttp://www.lsi.usp.br/
Volnys & Midorikawa (c) 2
Agenda
o Programa e Processoo Utilitário pso Procesoso Formas de execução de processoso Sinais
Volnys & Midorikawa (c) 3
Programa e Processo
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
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ê....
Volnys & Midorikawa (c) 6
Utilitário ps
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
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}
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
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
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
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
Volnys & Midorikawa (c) 13
Formas de execução deprocessos
Volnys & Midorikawa (c) 14
Formas de execução de processos
o Existem duas formas possíveis de disparar programaspelo shell:
X Foreground
X Background
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}
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
....
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
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}
Volnys & Midorikawa (c) 19
Sinais
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)
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...
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”
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}
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}
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?
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
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}
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}
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
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}