Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Administração de sistemas operacionais
description
Transcript of Administração de sistemas operacionais
Administração de sistemas operacionais
Aula 12Administração de processos.Prof. Esp. Diovani Milhorim
Administração de processos Programas e processos
Programas são arquivos em disco contendo instruções para execução pelo processador, enquanto processos são as execuções em andamento.
Cada processo executando no sistema em um determinado momento é identificado por um número único, o PID - Process IDentifier. Além disso, cada processo possui outras informações que o caracterizam, como:
Usuário proprietário (aquele que lançou o processo) Sessão de shell de onde foi lançado (se foi lançado através de
um shell) Estado atual (Running, Suspended, SWapped, ...) Linha de comando usada para lançá-lo. Uso de memória e CPU
Administração de processos Comandos ps e pstree
Podemos visualizar os processos em execução no sistema através do comando ps, cuja execução sem parâmetros gera uma listagem como a seguinte:
# ps
PID TTY TIME CMD22791 pts/0 00:00:00 bash22836 pts/0 00:00:00 ps
Observamos os seguinte campos nesta listagem PID: identificação do processo TTY: terminal do usuário que requisitou o processo TIME: tempo de execução total do processo CMD: Comando que iniciou o processo.
Administração de processos Comandos ps e pstree
O comando ps aceita uma série de parâmetros, entre os quais os mais importantes são:
a : mostra processos de outros usuários também
(all). u : mostra listagem mais detalhada dos processos,
com uso de memória e CPU x : mostra processos não conectados a terminais. w: mostra mais detalhes sobre as linhas de
comando dos processos.
Administração de processos Comandos ps e pstree
Para obter uma listagem completa dos processos em execução no sistema usa-se as opções auxw, que geram uma listagem como a que segue:
# ps auxw
USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMANDroot 975 0.0 0.0 1424 568 ? S Apr28 0:06 crondxfs 1051 0.0 0.1 5356 4076 ? S Apr28 0:00 [xfs]ntop 1072 0.0 0.5 88936 11296 ? S Apr28 0:00 [ntop]root 1092 0.0 0.0 1608 576 ? S Apr28 0:00 rhnsd --interval
240root 1099 0.0 0.0 1344 396 tty2 S Apr28 0:00 /sbin/mingetty tty2root 1100 0.0 0.0 1344 396 tty3 S Apr28 0:00 /sbin/mingetty tty3root 1101 0.0 0.0 1344 396 tty4 S Apr28 0:00 /sbin/mingetty tty4root 1102 0.0 0.0 1344 396 tty5 S Apr28 0:00 /sbin/mingetty tty5root 1103 0.0 0.0 1344 396 tty6 S Apr28 0:00 /sbin/mingetty tty6
Administração de processos
Os principais campos dessa listagem são:
USER : o proprietário do processoPID : número do processo.%CPU : porcentagem da CPU usada pelo processo.%MEM : porcentagem da memória usada pelo
processo.SIZE : memória total usada pelo processo.RSS : memória física (RAM) usada pelo processo.TTY : terminal ao qual o processo está ligado.STAT : status do processo (rodando, suspenso, ...).START : data de lançamento do processo.TIME : tempo total de CPU usado pelo processo.COMMAND : comando usado para lançar o processo.
Administração de processos
Estados de processo.
À medida que vai sendo executado, um processo passa por vários estados.
ready: pronto para executar.running. Em execução na CPUwaiting: Aguardando operação de I/O.stopped: Suspenso por um outro processo.zombie: Processos que terminam sem que o seu pai (parent) seja informado.Dead: processo terminado
Administração de processos
Figura 01: Estados de processos
Administração de processos Comando pstree
O comando pstree é útil por mostrar a hierarquia existente entre os processos ativos no sistema:
Administração de processos prioridade processos – Comandos nice e renice
O comando nice configura a prioridade da execução de um comando/programa.
nice [opções] [comando/programa]
Administração de processos prioridade processos – Comandos nice e renice
O comando renice configura a prioridade de um processo que já esteja em execução (somente o dono do processo ou o superusuário podem mudar a prioridade de um processo).
renice [opções] [processos ou usuários]
Se um programa for executado com maior prioridade, ele usará mais recursos do sistema para seu processamento, caso tenha uma prioridade baixa, ele permitirá que outros programas tenham preferência. A prioridade de execução de um programa/comando ou processo pode ser ajustada de -19 (a mais alta) até 19 (a mais baixa).
Administração de processos prioridade processos – Comandos nice e
renice
Exemplos de utilização:
# nice -n -19 find / -name apropos
# ps –l F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD000 S 1094 22791 22790 0 75 0 - 583 wait4 pts/0 00:00:00 bash000 R 1094 23275 22791 0 76 0 - 775 - pts/0 00:00:00 ps
#renice 19 -p 2279022790: prioridade antiga = 0; prioridade nova = 19
Administração de processos Execução de Comandos
em Background e Foreground
Caractere &
É possível que se queira executar um comando demorado e, enquanto se espera o resultado do mesmo, fazer-se outras coisas no terminal. Este processo de se rodar um programa ou comando desvinculado do terminal chama-se rodar em background.
Administração de processos Execução de Comandos
em Background e Foreground
Se for colocado o caractere & na linha de comando, a mesma será executada em background, liberando assim o terminal para outras tarefas. Se por acaso as saídas padrão e de erro do comando submetido em background não forem redirecionadas elas continuaram saindo na tela apesar da execução do comando não estar mais vinculada a ele. Portanto sempre que for usar comandos em background, redirecione tanto a saída padrão, como a saída de erro.
Deve ser colocado com sendo o último caractere da linha de comando;
# ls –la –R / > teste.txt 2>&1 &[1] 22925
Administração de processos Execução de Comandos em Background e Foreground Comando jobs
O comando interno jobs mostra a situação de todos os processos que estão em background e que foram submetidos debaixo da sessão corrente. Um processo pode estar em situação suspensa ou rodando.
Os processos estão numerados conforme o número indicado na submissão em background. Estas informações estão armazenadas em uma tabela interna do processo shell e é perdida quando se termina a sessão e o processo.
# ls –la –R / > teste.txt 2>&1 &[1] 22925
# jobs[1]+ Running ls --color=tty -la -R / >teste.txt 2>&1 &
Administração de processos Execução de Comandos em Background e Foreground Comando bg
Para ativar um processo parado podemos usar os comandos internos bg , bastando fornecer o número do processo indicado pelo comando jobs ou alguma string de caracteres que identifique o processo.
Com o comando interno bg esta se indicando que o processo deve voltar a executar em background.
# jobs[1]+ Stopped ls --color=tty -la -R / >teste.txt 2>&1
# bg %1[1]+ ls --color=tty -la -R / >teste.txt 2>&1 &
# jobs[1]+ Running ls --color=tty -la -R / >teste.txt 2>&1 &
Administração de processosComando nohup
Todos os processos que o usuário roda está ligado ao seu processo shell de sessão. O Unix/Linux possui a característica de que se o processo principal termina, todos os seus filhos serão encerrados. Isto torna-se um problema quando temos que rodar um comando ou programa demorado e não podemos manter a sessão aberta.
O comando nohup serve para desligar um processo do processo shell da sessão permitindo assim que se encerre a sessão sem prejuízo da execução do programa ou comando.
Deve-se sempre colocar o comando para rodar em background pois o nohup não faz isto automaticamente.
# nohup ls –la /etc > teste.txt 2>&1 &
[1] 23013
Administração de processosComando kill
Quando se quer matar um processo, seja em background seja em foreground (de outro terminal) devemos usar o comando kill. Deve-se fornecer para este comando o número do PID do processo que se quer eliminar. Somente o proprietário do processo e o usuário root podem enviar sinais.
Opcionalmente podemos estabelecer o tipo de sinal a ser mandado para o processo. Para isto basta se colocar o número ou mnemônico do mesmo. Caso não se coloque nenhum sinal, será enviado o sinal 15(TERM) para o processo.
Os sinais mais importantes são:15 (TERM): Interrupção amena do processo. Este sinal pode ser
interceptado e ignorado pelo process;9 (KILL): Interrupção forçada do processo. Este sinal não pode ser
interceptado e nem ignorado pelo processo;24 (STOP): Suspende a execução de um processo. Este sinal também não
pode ser interceptado e ignorado;26 (CONT): Ativa a execução de um processo suspenso.
Administração de processosExemplos utilizando o script tempo.sh abaixo.tempo.sh#/bin/bashtrap "echo Não vou terminar!!!" 15 //intercepta sinal 15while true
dosleep 1
done
#bash tempo.sh &[1] 23064
#kill -15 23064Não vou terminar!!!
#kill -9 23064[1]+ Killed bash tempo.sh
Administração de processos Exercícios1. Verifique quais os processos em atividade no
sistema atualmente, identificando o uso de memória e CPU de cada um (dica: use o comando ps auxw | less). Identifique o significado de cada uma das colunas da listagem obtida (ver a página de manual). Quais os processos que mais consomem recursos do sistema ?
2. Implemente o exemplo dado nesta aula no comando kill utilizando o shell script tempo.sh.
3. Envie a resposta do primeiro item e o print screen do resultado do segundo item para o e-mail do professor.