Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionas Prof. Osvaldo Viana Jr, Msc. osvaldoviana@yahoo.com.br Aula 6 Controlando Processos Controlando Processos Componentes de um Processo Um processo é constituído de um espaço de endereços e um conjunto de estruturas de dados dentro do kernel; O espaço de endereços é um conjunto de páginas de memória que o kernel marcou para ser empregado pelo processo; 2 Controlando Processos Componentes de um Processo Estruturas de dados internas do kernel registram vários tipos de informação sobre cada processo: - Mapa do espaço de endereços do processo; - Estado atual do processo; - A prioridade de execução do processo; - Informações sobre os recursos que o processo lançou mão; 3 Controlando Processos Componentes de um Processo Estruturas de dados internas do kernel registram vários tipos de informação sobre cada processo: - Máscara de sinalização do processo; - Proprietário do processo; 4 Controlando Processos Componentes de um Processo Um processo também controla quais instruções a CPU está executando no momento em seu nome; O Linux permite que mais de um processo compartilhe um espaço de endereços atingido, consequentemente, o efeito de vários threads de execução; 5 Controlando Processos Componentes de um Processo PID: número de identificação de processo - O kernel atribui um numero de identificação exclusivo a cada processo; - Os PIDs são atribuídos na ordem em que os processos são criados; - Quando o kernel esgota os PIDs, ele reinicia em 1, pulando quaisquer PIDs que ainda se encontram em uso; 6 Controlando Processos Componentes de um Processo PPID: PID-pai - O Linux não fornece uma chamada de sistema que crie um processo executando num determinado programa; - Um processo existente tem de se clonar para criar um processo novo. O clone pode então trocar o programa que ele está executando por um outro diferente; 7 Controlando Processos Componentes de um Processo UID e EUID: identificadores de usuário real e efetivo - É o número de identificação do usuario da pessoa que o criou. Ou seja, é uma cópia do valor EUID do processo-pai; - Somente o criador e o superusuário têm permissão para manipular um processo; 8 Controlando Processos Componentes de um Processo GID e EGID: identificadores de grupo real e efetivo - É o número de identificação de grupo de um processo; - O EGID está relacionado ao GID da mesma forma que o EUID ao UID; - Em sistemas Linux, um processo pode ser um membro de vários grupos ao mesmo tempo; 9 Controlando Processos Componentes de um Processo Gentileza - A prioridade de escalonamento de um processo determina quanto tempo de CPU ele recebe. O kernel usa um algoritmo dinâmico para calcular prioridades; - O kernel presta atenção a um valor normalmente chamado de “gentileza”, assim chamado pois ele informa quão gentil você está planejando ser com os demais usuarios; 10 Controlando Processos Componentes de um Processo Terminal de Controle - O terminal de controle determina links- padrão para os canais de entrada-padrão, saída- padrão e erro-padrão; - Ao iniciar um comando no shell, seu terminal normalmente se torna o terminal de controle do processo 11 Controlando Processos Ciclo de Vida de um Processo Para criar um processo, um processo faz uma cópia de si mesmo por meio da chamada de sistema fork; O novo processo possui um PID distinto e possui suas próprias informações contábeis; Após um fork, o processo-filho usará uma das chamadas de sistema da família exec para começar a execução de um novo programa; 12 Controlando Processos Ciclo de Vida de um Processo Essas chamadas mudam o texto do programa que o processo está executando e reinicializam os segmentos de dados e de pilha para um estado inicial predefinido; As várias formas de exec diferem somente na maneira pela qual elas especificam o ambiente e os argumentos de linha de comando a serem dados ao novo programa; 13 Controlando Processos Ciclo de Vida de um Processo Quando o sistema é inicializado, o kernel cria e instala de maneira autônoma vários processos; O init é responsavel pela execução da maioria dos scripts de inicialização do sistema; O init também desempenha um importante papel no gerenciamento de processos; 14 Controlando Processos Ciclo de Vida de um Processo Antes de um processo ter a permissão para desaparecer completamente, o Linux requer que sua expiração seja reconhecida pelo processo-pai, o que o pai faz através de uma chamada a wait; 15 Controlando Processos Sinais São solicitações de interrupção em nível de processo. São definidos cerca de 30 tipos distintos e eles são usados de várias maneiras: - Podem ser enviados entre processos como um meio de comunicação; - Podem ser enviados pelo driver de terminal para extinguir, interromper ou suspender processos; 16 Controlando Processos Sinais São solicitações de interrupção em nível de processo. São definidos cerca de 30 tipos distintos e eles são usados de várias maneiras: - Podem ser enviados pelo administrador (via kill) para obter vários resultados; - Podem ser enviados pelo kernel quando um processo comete uma infração como, por exemplo, uma divisão por zero; 17 Controlando Processos Kill e KillAll Kill é usado para encerrar um processo. Kill é capaz de enviar qualquer sinal, porém, como padrão, ele envia um TERM; Kill pode ser usado por usuarios comuns em seus próprios processos ou pelo superusuário em qualquer processo kill [-signal] pid 18 Controlando Processos Kill e KillAll Signal é o numero ou nome simbólico do sinal a ser enviado e pid é o número de identificação do processo de destino; Um pid -1 transmite o sinal a todos os processos, exceto init; Um kill sem qualquer número de sinal não garante que o processo será extinto, pois o sinal TERM pode ser capturado, bloqueado ou ignorado; 19 Controlando Processos Kill e KillAll O killall é utilizado caso não conhecemos o PID do processo que deseja sinalizar; Por exemplo, para fazermos com que o daemon xinetd restaure sua configuração, deveríamos executar o seguinte: sudo killall –USR1 xinetd O kill tem um recurso similar, porém ele não parece ser tão inteligente quanto killall no critério de busca de nomes de comando; 20 Controlando Processos Nice e Renice A “gentileza” de um processo é uma dica numérica para o kernel em relação a como o processo deve ser tratado no que diz respeito a outros processos lutando por recursos de CPU; Um valor nice (gentil) alto significa baixa prioridade para o seu processo; Um valor nice baixo ou negativo significa alta prioridade: você não será gentil; 21 Controlando Processos Nice e Renice O intervalo de valores nice permitidos vai de - 20 a +19; O valor nice de um processo pode ser configurado no momento da criação pelo comando nice e pode ser ajustado durante a execução com o comando renice; nice –n 5 -/bin/longtask renice –n 8829 22 Controlando Processos Monitorar Processos: ps ps é a principal ferramenta do administrador de sistemas para monitoramento de processos; Podemos usá-lo para exibir o PID, o UID, a prioridade e o terminal de controle dos processos; Ele também fornece informações sobre quanta memória foi consumida e seu estado atual; 23 Controlando Processos Monitorar Processos: ps Podemos obter uma visão geral dos processos em execução no sistema via ps aux: 24 Controlando Processos Monitorar Processos: ps 25 Controlando Processos top: Monitoramento ainda melhor dos processo top fornece um sumário atualizado regularmente dos processos ativos e o emprego de seus recursos; top tem de consumir uma pequena porção dos recursos de CPU para mostrar uma atualização a cada 10 segundos; 26 Controlando Processos Processos Descontrolados Vêm em duas variantes: processos de usuário que usam quantidades excessivas de um recurso de sistema como tempo de CPU ou espaço em disco e processos de sistema; O primeiro tipo de descontrole pode ser simplesmente que o processo seja um comilão de recursos; 27 Controlando Processos Processos Descontrolados Vêm em duas variantes: processos de usuário que usam quantidades excessivas de um recurso de sistema como tempo de CPU ou espaço em disco e processos de sistema; O primeiro tipo de descontrole pode ser simplesmente que o processo seja um comilão de recursos; 28 Controlando Processos Processos Descontrolados Podemos identificar processos que usam tempo de CPU em excesso observando a saída gerada pelo comando top; Se um processo usa uma quantidade excessiva de CPU, mas parece realizar algo razoável e funcionar corretamente, você deve emitir um renice passando-o para um valor nice maior e solicitar ao proprietário para fazer o procedimento de nice futuramente; 29 Exercicios 1) De que é constituído um processo ? 2) Para que serve o kill e o nice ? 30 Respostas 1) De que é constituído um processo ? R: Um processo é constituído de um espaço de endereços e um conjunto de estruturas de dados dentro do kernel. 2) Para que serve o kill e o nice ? R: Kill é usado para encerrar um processo. Kill é capaz de enviar qualquer sinal, porém, como padrão, ele envia um TERM; A “gentileza” de um processo é uma dica numérica para o kernel em relação a como o processo deve ser tratado no que diz respeito a outros processos lutando por recursos de CPU; 31 Sincronização de Processos Dinâmica em Grupo Ler e debater em grupo sobre o assunto abordado 32 Referencia Bibliografica Referencia Básica o NEMETH, E. ; SNYDER, G. ; TRENT, R. H. Manual Completo do LINUX: Guia do Administrador. Pearson, 2004. Págs: 38-46. o TANENBAUM, A S. ; WOODHULL, A S. Sistemas Operacionais: Projeto e Implementação. Bookman, 2008. Págs: 80-98. 33
Compartilhar