1 / 36

Processos

Processos. Processos. Abstração do UNIX para gerência de memória, CPU e recursos de I/O; É um conjunto de dados e instruções que são executadas, em geral sem compartilhar o seu próprio espaço de endereçamento virtual; Um programa/job pode necessitar de vários processos até seu término.

jethro
Download Presentation

Processos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Processos

  2. Processos • Abstração do UNIX para gerência de memória, CPU e recursos de I/O; • É um conjunto de dados e instruções que são executadas, em geral sem compartilhar o seu próprio espaço de endereçamento virtual; • Um programa/job pode necessitar de vários processos até seu término.

  3. Processos • Um comando simples (ls por exemplo) será executado por apenas um processo; • O administrador tem a incumbência de monitorar o status dos processos, controlar quanto do tempo da CPU um processo gasta, enviar sinais para um processo e suspender sua execução quando necessário.

  4. Componentes de um Processo • Espaço de endereçamento • Código do programa e variáveis usadas • Pilha do processo • Outras informações necessárias • Estruturas de dados internas ao kernel • Localização do espaço de endereçamento • Status corrente • Prioridade de execução • Informações acerca dos recursos usados • A máscara de sinal do processo • Identificação do proprietário

  5. Tipos de Processos • Processos interativos • S₧o inicializados e controlados por uma sessão de terminal • Executados em foreground • Estão ligados a um terminal para entrada e saída de dados • Executados em background • Não estão ligados a nenhum terminal • Daemons • São processos servidores, geralmente inicializados no boot da máquina (background)

  6. Atributos dos Processos • Process ID (PID) • Associado pelo kernel • Único no sistema • Parent Process ID (PPID) • Prioridade (Nice Number) • Número atribuído ao processo e que influencia o cálculo da sua prioridade interna • TTY • Normalmente é o terminal onde o seu processo foi iniciado

  7. Atributos dos Processos • Real and Effective User ID (UID, EUID) • UID: Aquele que criou o processo • EUID: Usado para determinar o direito de acesso do processo aos recursos do sistema (setuid) • Real and Effective Group ID (GID, EGID) • Mapeados no /etc/group • Quando um processo é inicializado, o GID é configurado para o mesmo do processo pai • EGID: Análogo ao EUID em relação ao UID

  8. Ciclo de Vida de um Processo fork P1 P1 PID 10 PID 356 • fork • Cria uma cópia idêntica ao processo pai, mas com outro PID, PPID do pai, cópias próprias dos descritores de arquivo e contabilidade própria.

  9. Ciclo de Vida de um Processo P1 PID 34 exec P2 PID 34 • exec • Muda o contexto do processo que está sendo executado • Inicializa os segmentos de dados e pilha para um estado inicial pré-definido

  10. Ciclo de Vida de um Processo init init PID 424 fork PID 1 exec getty PID 424 exec login PID 424 exec sh sh PID 563 PID 424 fork exec grep PID 563 • Exemplo:

  11. Estados possíveis dos processos • O: running - o processo está sendo executado; • R: runnable - esperando apenas por tempo de CPU; • S: sleeping - esperando o término de um evento específico; • Z: zombie - o processo terminou e o pai não está esperando (está tentando morrer); • T: stopped - está proibido de executar.

  12. Comando Exit • Notifica o kernel que o processo vai morrer • Libera espaço de endereçamento • Não fornece mais tempo de CPU • O PID ainda não é liberado • Chamada de sistema wait

  13. Iniciando vários processos com & • lp report & [1] 1746 • netscape & [2] 1750 • Os processos são iniciados e rodam em segundo plano

  14. Entrada e Saída Padrões • Em unix um processo é automaticamente aberto com três arquivos abertos: • stdin Entrada padrão • stdout Saída padrão • stderr Saída de erro padrão

  15. Iniciando vários processos com | • O símbolo | é chamado de “pipe” (canal) • Estabelece um canal entre dois processos • Por exemplo: • ls | wc -l • A saída padrão do comando ls é transferida para a entrada padrão do comando wc (conta palavras) • Forma geral • comando | comando | comando ... • Todos os processos são iniciados ao mesmo tempo e são filhos do shell atual

  16. Redirecionando entradas/saídas • < símbolo usado para redirecionar a entrada de um comando da entrada padrão para um arquivo • mail sarah < info • > símbolo usado para redirecionar a saída de um comando da saída padrão para um arquivo • ls -la > lista.txt • cat > dados.txt

  17. Redirecionando cont • >> usado para acrescentar ou adicionar informações em um arquivo já existente • date > diretorio • ls | sort >> diretorio • mail -s “meus arquivos” admin < diretorio

  18. Monitorando Processos • O comando ps informa: • PID, UID, prioridade e terminal de controle • Tempo de CPU, memória utilizada, etc. • Exemplo: % ps -aux /* System V: ps -ef */ USER PID %CPU %MEM SZ RSS TT STAT START TIME COMMAND root 137 5.5 0.0 3832 2140 co O 8:38PM 5:38.12 ps - marcio 155 3.0 0.0 172 16 p0 S 8:38PM 0:00.00 /usr/bin/csh root 0 0.0 0.0 0 0 ?? T 8:35PM 0:00.06 sche ...

  19. Monitorando Processos Campo Significado USER Nome do usuário dono do processo PID Process ID %CPU Porcentagem da CPU que o processo está usando Porcentagem da memória real sendo utilizada %MEM Tamanho virtual do processo (kb) SZ RSS Número de páginas (1K) na memória TT ID do terminal de controle STAT Status corrente do processo: R - Runnable D - In disk wait S - Sleeping (>20) I - Sleeping (<20 sec) T - Stopped Z - Zombie START Hora que o processo foi inicializado TIME Tempo de CPU que o processo consumiu Nome do comando e argumentos COMMAND

  20. ps - opções comuns • a seleciona todos, com a tty exceto líderes a mostra processos de outros usuários • e seleciona todos os processos e mostra ambiente após comando h mostra sem cabeçalho • l mostra em formato longo r somente processos rodando x processos sem controle de terminal u fornece informações sobre usuário f mostra formato de árvore

  21. Exemplos ps • ps -ef • ps -aux • ps -auxl

  22. Monitorando Processos • O programa top (integra alguns UNIX): • Provê um resumo dos processos ativos e do uso dos recursos; • Amostragem a cada dez segundos (default); • Permite enviar sinais (k); • Permite visualizar processos de um usuário (u); • Permite modificar a prioridade dos sinais (r); • top é de autoria de William LeFebvre, EECS Department, Northwestern University.

  23. Monitorando Processos % top last pid: 26330; load averages: 0.01, 0.01, 0.00 20:29:51 80 processes: 1 running, 79 sleeping CPU states: 0.4% user, 0.0% nice, 0.4% system, 1.6% interrupt, 97.7% idle Mem: 29M Active, 6204K Inact, 14M Wired, 8904K Cache, 6386K Buf, 3660K Free Swap: 128M Total, 34M Used, 94M Free, 27% Inuse PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 227 root 2 0 1096K 80K select 0:46 0.00% 0.00% httpd 26330 marcio 28 0 644K 832K RUN 0:00 0.00% 0.00% top 26323 marcio 18 0 688K 1020K pause 0:00 0.00% 0.00% csh 18256 root 18 0 484K 516K pause 0:40 0.00% 0.00% office51 155 root 18 0 332K 268K pause 0:06 0.00% 0.00% cron 6061 marcio 10 0 380K 144K wait 0:00 0.00% 0.00% make 6067 marcio 10 0 488K 140K wait 0:00 0.00% 0.00% sh 6038 marcio 10 0 488K 140K wait 0:00 0.00% 0.00% sh • Exemplo:

  24. Sinais para Processos • Interrompem a execução do processo • Enviados através do comando kill • # kill -HUP 1823 • O processo • Quando recebe, trata o sinal ou então o kernel toma alguma ação default • É reiniciado do ponto onde parou

  25. Alguns sinais • SIGKILL (9): • Destrói o processo $ kill -9 1889 • SIGSTOP: • Suspende até receber SIGCONT $ kill -s STOP 2102 • SIGHUP (1): • Faz o programa reler o seu arquivo de configuração • É interessante enviá-lo antes de um kill -9 $ kill -1 2100

  26. Alguns sinais • SIGTERM (15): • Terminação de processo por programa # kill -15 1889 • SIGCONT: • Continua após receber SIGSTOP $ kill -s CONT 2102 • SIGHUP (1): • Faz o programa reler o seu arquivo de configuração. É interessante enviá-lo antes de um kill -9 $ kill -1 2100 (#man -s5 signal)

  27. Agendando tarefas no Unix - at • Permite agendar tarefas em tempos determinados • Pode ser usado por qualquer usuário, se não houver restrições (arquivo /etc/at.deny) • at 1:23 • lp /usr/vendas/relats/* • echo “Arquivos sendo impressos” | mail -s “Tudo ok” gerente

  28. Agendando tarefas - at cont • at now + 1 DAY • rm -f -r *.txt • echo “Removi arquivos texto” | mail adriano • <ctl>D • at 17:00 DECEMBER 24 • mail all < feliz_natal.txt • <ctl>D

  29. Agendando tarefas - at cont • Resumo do comando • At hh:mm • Agenda tarefas para a hora marcada • at hh:mm mes dia ano • Agenda tarefas para hora:min mes dia ano • at -l • Lista os servi₤os agendados • at now + inteiro unidades • Agenda para daqui a inteiro unidades (MONTH, DAY, etc) • at -d id_seviço

  30. Agendando tarefas - cron • at é usado para agendar tarefas uma vez • cron usado para agendar tarefas em bases regulares • cron começa quando o sistema é inicializado • Se não há nada para fazer cron fica inativo e verifica a cada minuto se há tarefas para serem executadas nos arquivos crontab

  31. Agendando tarefas - crontab crontab [-u user] file • crontab: Comando usado para incluir tarefas na agenda • crontab -u adriano file • Deve ser usado no primeiro agendamento para criar o arquivo crontab do usuário adriano a partir de file • Este arquivo será armazenado em /var/spool/cron

  32. Agendando tarefas - crontab crontab [-u user] {-l | -r | -e} • crontab: opções usadas depois que o crontab é criado • l lista o crontab atual • r remove o crontab atual • e edita o arquivo atual usando o editor especificado na variável EDITOR ou VISUAL

  33. Agendando tarefas - crontab cont • Sintaxe dos comandos a serem inseridos no crontab min hora dia-do-mês mês-do-ano dia-semana comando • Todos os 5 campos de data precisam aparecer • Campos com * são ignorados • Formatos • Min 00 até 59 • Hora 00 até 23 • Dia do mês 01 até 31 • Mês do ano 01 até 12 • Dia da semana 01 até 07 (segunda 01)

  34. Agendando tarefas - exemplos • 30 07 * * 01 sort ./vendas/semanal | mail gerente • 07:30 h, todo dia do mês, todo mês as segundas envia relatório de vendas ordenado para gerente • 45 10 * * 1-5 mail -s “Hoje é um dia útil” adriano • 10:45 h, todo dia do mês de segunda a sexta avisa que é dia útil • 0,30 * 13 * 5 ls -l • Toda meia hora às sextas e todas meias horas do 13 dia do mês executa um ls -l e envia o resultado como mail para o usuário • 20 1 * * * find /tmp -atime + 3 -exec rm -f “{}” \; • 1:20 remove todos os arquivos de /tmp que não foram acessados nas últimas 72 horas.

  35. Nice Value • Quanto menor seu valor, maior a prioridade • BSD: -19 a 19 • System V: 0 a 39 • Processos recém-criados herdam o valor do pai; • O comando nice estabelece o valor na criação do processo;

  36. Nice Value • O dono do processo pode alterar este valor via comando renice (BSD) • Quando necessário, usá-lo para iniciar um shell com alta prioridade • Exemplo: % ps -l UID PID PPID CPU PRI .... STAT TT TIME COMMAND 19442 1662 972 3 28 R+ p2 0:00.01 ps -l % nice -20 ps -l 19442 1668 972 3 68 RN p2 0:00.01 ps -l

More Related