Buscar

doc 7 processos(54 59)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

Universidade do Grande Rio “Professor José de Souza Herdy”
Sistemas Operacionais Abertos
Processos e Gerenciamento de Processos
Introdução.
Para o sistema operacional Linux, um processo pode ser entendido como um programa em execução, é uma tarefa submetida ao sistema para ser executada. Pode ser entendido melhor, quando pensamos de que forma os Sistemas Operacionais atendem os diversos usuários (com suas tarefas) e mantêm informações a respeito dos vários programas que estão sendo executados concorrentemente. Na verdade, sistemas multitarefa como o LINUX, simulam um ambiente de monoprogramação para cada usuário, isto é, cada usuário do sistema tem a impressão de possuir o processador exclusivamente para ele. O que ocorre entretanto, é que as tarefas dos usuários são executadas durante um intervalo de tempo (time-slice) e, no instante seguinte, o sistema está processando outra tarefa. 
É responsabilidade do Sistema Operacional, fazer o controle dos processos que estão executando, além de manter todas as informações sobre o mesmo, como: sua identificação, prioridade, estado corrente, recursos alocados por ele e informações sobre o programa em execução. Cada processo criado pelo sistema, possui uma identificação única chamada de “PID – Process IDentification”, representada por um número. Além do PID, cada processo possui também, a identificação do usuário (UID) que o criou ou o processo que o criou “PPID – Processo pai ou Parent do PID”.
Toda a gerência sobre os processos feita pelo sistema operacional, é feita através de “system calls”, que realizam operações como criação, eliminação, sincronização, suspensão de processos, dentre outras.
Os processos normalmente executam em modo usuário, entretanto, quando chamadas ao sistema são usadas, o processo é chaveado para modo supervisor (kernel).
O ambiente de um processo é um conjunto de informações que possibilitam ao sistema operacional o controle e a gerência sobre os mesmos em execução. O ambiente de um processo é constituído pelas seguintes informações:
- Programa;
- Dados;
- Arquivos abertos;
- Diretório corrente;
- Identificação do usuário (UID);
- Identificação do processo (PID);
- Identificação do processo pai (PPID);
- Outras variáveis do sistema.
Obs.: As prioridades variam entre -20 e +19, sendo que quanto menor o valor para atribuição da prioridade, maior será o seu valor. O padrão é 0.
Tipos de Execução de comandos/programas.
Um programa pode ser executado de duas formas:
Primeiro Plano: também chamado de foreground. Ocorre quando você deve esperar o término da execução de um programa para executar um novo comando. Somente é mostrado o aviso de comando após o término de execução do comando/programa.
Segundo Plano: também chamado de background. Ocorre quando você não precisa esperar o término da execução de um programa para executar um novo comando. Após iniciar um programa em background, é mostrado um número PID (identificação do Processo) e o aviso de comando é novamente mostrado, permitindo o uso normal do sistema. O programa executado em background continua sendo executado internamente. Após ser concluído, o sistema retorna uma mensagem de pronto, acompanhado do número PID do processo que terminou.
Para iniciar um programa em primeiro plano, basta digitar seu nome normalmente. Para iniciar um programa em segundo plano, acrescente o caracter "&" após o final do comando. 
Exemplos: find / -print > arqs &
Dica: Para interromper um programa que esteja rodando em primeiro plano (foreground) utilize CTRL+Z. Será mostrado o número da tarefa interrompida, use este número com o comando bg para iniciar a execução do comando em segundo plano (background).
bg [ numero_tarefa ] 
Ou o comando “jobs” para verificar o(s) processo(s) parado(s) (stopped).
jobs
Ou ainda o comando “jobs -p” para saber o número dos processos (PID) executando em background ou parados.
jobs -p
Executando programas em sequência
Os comandos podem ser executados em seqüência (um após o término do outro) se os separarmos com ";".
Quando uma linha de comando for muito extensa, use o caracter "\" para quebrar a linha numa linha de continuação. A barra invertida (\) deve ser seguida imediatamente por um <Enter> e o sinal ">" será impresso pelo shell como prompt.
Exemplos: echo primeiro ; echo segundo; date ; time ls -l 
cat /usr/uts/meudir/meusdados \ <Enter>
> /usr/uts/ seudir/seusdados
Processos do sistema
Nesse ponto é importante ressaltar que o LINUX tem seus próprios processos, que possuem funções específicas para gerenciamento, controle, acompanhamento e contabilidade do sistema. Dentre eles, podemos citar os daemons, ou serviço, são processos servidores inicializados (geralmente) durante o boot, que rodam continuamente enquanto o sistema estiver ativo, esperando em background, até que seja requisitado. 
Exemplos, de daemons que ficam em estado idle (ocioso) até que um processo requisite serviços. 
monitoração das filas de impressão: lpd/cupds
serviços de rede: xinetd
crond : scheduller (agendador de tarefas no sistema)
Existem também processos que desempenham o papel de “supervisor” de outros processos, um bom exemplo de daemon supervisor é o “xinetd” (Extended Internet Services Daemon), que é responsável por outros serviços. 
Observação: Para verificar serviços existentes, dirija-se ao diretório /etc/init.d em sistemas SystemV, e se o seu sistema utiliza Upstart (como Ubuntu ou versões recente de CentOS, Fedora), verifique em /etc/init os arquivos com extensão “.conf”.
Gerenciamento de Processos
Existe um conjunto de comandos utilizados para realizar o gerenciamento de processo em sistemas Linux. São eles:
ps (process status) : utilizado para visualizar os processos ativos no sistema.
Parâmetros do ps.
a : mostra os processos criados por você e de outros usuários do sistema (todos). 
x : mostra processos que não são controlados pelo terminal e também da parte gráfica (X Windows). 
u : mostra o nome de usuário que iniciou o processo e hora em que o processo foi iniciado. 
m : mostra a memória ocupada por cada processo em execução. 
f : mostra a árvore de execução de comandos (comandos que são chamados por outros comandos). 
e : mostra variáveis de ambiente no momento da inicialização do processo. 
w : mostra a continuação da linha atual na próxima linha ao invés de cortar o restante que não couber na tela. 
Obs.: As opções acima podem ser combinadas para resultar em uma listagem mais completa. E pode-se também usar pipes "|" para filtrar a saída do comando ps.
Exemplo a ser analisado:
USER 	PID 	%CPU 	%MEM VSZ  RSS TTY STAT START TIME COMMAND
root 	1   	 0.0 	 0.1  3156 766 ?   	Ss   15:04 0:02 /sbin/init 
Nome do usuário dono do processo (USER) que é o root;
O número de PID do processo é 1;
Nome do processo (COMMAND) que é /sbin/init; 
As demais informações são:
%CPU: Porcentagem de uso do processo pelo processo. 
%MEM: Porcentagem de uso de memória RAM pelo processo. 
VSZ e RSS: Páginação (Tamanho do processo). 
TTY: Terminal que originou o processo. 
STAT: R, S, D, Z e T 
R – Running (Rodando) 
S – Sleep (Esperando) 
D – Died (Morto) 
Z – Zumbie (Erro) 
T – Stopped (Parado) 
Variações:
< – Prioridade maior que a padrão 
N – Prioridade menor que a padrão 
T – Processo em foreground 
s – Dono da sessão (Pai) 
w – Usando recurso swap 
TIME: Tempo de CPU utilizado pelo processo até o momento 
pstree: Pode-se usar o comando pstree para ver os processos em forma de árvore e saber quem é “pai” de quem:
# pstree
kill (matar): finalizar um processo ativo no sistema.
	Parâmetros para o kill.
-9 : usado para encerrar efetivamente um processo, já que alguns processos ignoram o sinal enviado pelo kill sem essa opção.
-stop: faz o processo parar.-cont: faz o processo continuar.
-term: faz o processo terminar.
-15 : utilizado quando nenhum sinal é associado ao kill.
Sintaxe: kill [-9] pid_do_processo
Exemplo:
1 – Para encerrar os processos 3424 e 3567.
digite  kill -9 3424 3567
nohup (no hang up) : Disparar a execução de um comando que é imune a desligamentos.
Sintaxe: nohup comando
Descrição: Normalmente, a qualquer comando que iniciamos em background, será enviado um sinal de desligamento quando abandonamos o sistema. A maioria dos programas encerra quando recebe este sinal. O comando nohup é utilizado para disparar processos que ignorem esses sinais. Desse modo, qualquer processo que seja executado com nohup não "morrerá" quando abandonarmos o sistema. Nohup dirige a saída padrão para o arquivo 'nohup.out' e comandos executados com nohup, não deverão depender de interação com o terminal.
Exemplo:
Execute o script “teste.script” em background imune à desconexão do
usuário.
Digite  nohup teste.script &
Comando top: Mostra os programas em execução ativos, parados, tempo usado na CPU, detalhes sobre o uso da memória RAM, Swap, disponibilidade para execução de programas no sistema, etc.
Sintaxe: top [opções]
onde:
-d [tempo]: atualiza a tela após o [tempo] (em segundos).
-s: diz ao “top” para ser executado em modo seguro.
-i: inicia o “top” ignorando o tempo de processos zumbis.
-c: mostra a linha de comando ao invés do nome do programa.
Observação: a ajuda sobre o top pode ser obtida dentro do programa, pressionando
a tecla “h” ou pela página de manual (man top).
Algumas teclas úteis:
barra de espaço atualiza imediatamente a tela.
CTRL+L apaga e atualiza a tela.
h -mostra a tela de ajuda do programa. São mostradas todas as teclas que podem ser usadas com o top.
i -ignora o tempo ocioso de processos zumbis.
q -sai do programa.
n - muda o número de linhas mostradas na tela. Se 0 for especificado, será usada toda a tela para listagem de processos.
��Versão 2014-2

Outros materiais