Processo - profneto

Propaganda
Universidade Estadual de Mato Grosso do Sul – UEMS
Curso de Licenciatura em Computação
Sistemas Operacionais
Processos
Prof. José Gonçalves Dias Neto
[email protected]
Introdução
O SO é o responsável por controlar o ambiente
multiprogramado,
organizando
o
uso
concorrente do processador;
Um programa em execução deve sempre estar
vinculado a um processo;
Através da gerência de processos os programas
podem alocar recursos, compartilhar dados,
trocar informações e sincronizar execuções;
Estrutura do Processo
O processador busca a instrução a ser executada na memória
principal, armazena-a no registrador de instruções, decodifica
seus bits e realiza a instrução;
O processador executa instruções em saber a qual programa esta
pertence;
Para que não haja problemas na concorrência entre programas, é
necessário salvar informações sobre cada programa
interrompido;
Conceito de Processo: “Conjunto necessário de informações
para que o sistema operacional implemente a concorrência de
programas.”
Estrutura do Processo
Um processo é formado por três partes:

Contexto de Hardware,

Contexto de Software;

Espaço de Endereçamento;
Contexto de Hardware
Armazena o conteúdo dos registradores gerais da CPU,
além do PC, Stack Pointer (SP), registrador de Status;
Quando um processo está em execução, seu contexto está
armazenado nos registradores do processador;
Quando o processo pára de executar, o sistema salva estas
informações no contexto de hardware;
O SO efetua a multiprogramação, apenas salvando o
contexto de processos que devem parar sua execução e
carrega o contexto de hardware do próximo processo a
utilizar CPU.
Troca de contexto
Contexto de Software
No contexto de software são especificados limites
e características dos recursos que podem ser
alocados pelo processo.
O Contexto de software é composto por três
grupos de informações sobre o processo:

Identificação

Quotas;

Privilégios;
Contexto de Software - Identificação
Cada processo criado recebe uma identificação única
PID – Process Idenfitication);
Com o PID o SO ou outros processos podem referenciar,
consultar o contexto e/ou alterar características;
O processo também recebe um UID (User Identification),
ou seja, a identificação do usuário ou processo que o
criou;
Apenas objetos que possuem as mesmas UID do usuário
podem ser acessados;
Contexto de Software - Quotas
São os limites de cada recurso do sistema que um processo pode
alocar;


Número máximo de arquivos abertos simultaneamente;
Tamanho máximo de memória principal e secundária que o
processo pode alocar;

Número máximo de operações de E/S pendentes

Tamanho máximo de buffer para operações de E/S

Número máximo de processos, subprocessos e threads que
podem ser criados;
Contexto de Software - Privilégios
Indicam as ações que um processo pode fazer em relação a ele
mesmo, aos demais processos e ao sistema operacional;
Próprio processo / Demais processos:

Prioridade, limites de alocação de memória,
Sistema Operacional:

Desativação do SO, regras de segurança, criação de outros processo
privilegiados,
Os SO geralmente criam uma conta com todos esses privilégios:

root, system, administrador...
Espaço de endereçamento
É a área de memória que os dados e instruções
do programa são armazenados;
Cada processo possui seu próprio espaço de
endereçamento que deve ser protegido do
acesso pelos demais processos;
Veremos mais sobre isso em “Gerência de memória”
Estrutura geral do processo
Bloco de Controle de Processo (BCP)
Process Control Block (PCB);
O SO cria o processo através da
estrutura de PCB;
Todo processo ativo deve possuir
seu PCB residente em memória
principal no espaço do sistema
operacional;
Toda a gerência de processos é
realizada por meio de chamadas
de rotinas de sistema
operacional;
Comando ps (process status)
Mostra os processos que estão em execução no
sistema operacional;
Parâmetros do comando ps:

-a: todos os processos criados;

-u: nome do usuário e hora da criação;

-x: processos que não são controlados pelo terminal;
Saída do comando ps
USER - Nome do usuário dono do processo.
UID - Número de identificação do usuário dono do processo.
PID - Número de identificação do processo.
PPID - Número de identificação do processo pai de cada tarefa.
PRI - Número de prioridade da tarefa. (Números altos são prioridades baixas).
NI - Valor preciso da prioridade da tarefa.
%CPU - O consumo de processamento do processo.
%MEM - O consumo de memória do processo.
SIZE - Tamanho do código da tarefa em kilobytes.
RSS - Soma total da memória física usada pelo processo, em kilobytes.
WCHAN - Endereço ou nome da função do kernel da tarefa que está atualmente suspensa.
STAT - Estado do processo: S - Suspenso, R - em Execução, T - Interrompido, Z – Terminado;
TTY - Terminal onde são executados os processos.
TIME - Tempo total da CPU usado pelo processo desde que foi iniciado.
COMMAND - Nome do comando do processo.
www.vivaolinux.com.br
Comando TOP
Mostra a atividade do processador em tempo real, exibindo as
tarefas que estão sendo executadas na CPU.
Processos mais dispendiosos aparecem no topo;
Parâmetros do comando TOP:

-d [tempo] - Atualiza a tela após o tempo especificado.

-s - Executa o top em modo seguro

-i - Executa o top ignorando processos zumbis.

-c - Mostra a linha de comando ao invés do nome do programa.
Comando pstree
Visualizar os processos em forma de árvore,
tornando mais visível as relações entre eles.
Utilizado quando se deseja identificar os
processos pais e filhos de cada processo;
Estados do processo
Execução (running):



Está sendo processado pela CPU;
Em sistemas monoprocessados apenas um processo estará neste estado por
vez;
Em sistemas multiprocessados existe a possibilidade de mais de um
processo estar em execução ao mesmo tempo;
Pronto (ready):



Está aguardando para ser processado;
No SO existe um fila de processos aguardando serem processados (Fila de
Prontos);
Quem escolhe qual processo ganhará CPU primeiro é a politica de
escalonamento adotada pelo SO;
Estados do processo
Espera (wait) / Bloqueados (block):



São processos que aguardar a ocorrência de de eventos externos,
como o termino de outro processo, ou a liberação de recursos como
dispositivos de E/S;
Este estado existe pois o acesso e retorno de dispositivos de E/S é
demorado;
Processos neste estado também são organizados em uma fila
denominada fila de bloqueados, geralmente esta fila é subdividida em
filas segundo o tipo de evento associado;
Estados do processo
Mudança de estado do processo
Existem 4 (quatro) mudanças que podem ocorrer:
Pronto → Execução:

O processo está na fila de prontos, e após o algoritmos de
escalonamento selecioná-lo, ele ganha CPU entrando em estado
de execução;
Execução → espera ou bloqueado:

O processo pára sua execução e entra no estado de espera
quando necessita da utilização de E/S ou aguarda eventos
externos;
Mudança de estado do processo
Espera ou bloqueado → Pronto:


O processo finalizou sua execução de E/S ou o evento externo
necessário para seu reinicio já foi deflagrado;
Não existe a mudança do estado de espera para o estado de
execução diretamente;
Execução → Pronto


O processo ainda não finalizou sua execução, porém teve sua
fatia de tempo de CPU esgotada;
Seu contexto deve ser salvo e ele voltara para a fila de prontos
aguardando para ganhar mais tempo de CPU para finalizar sua
tarefa;
Mudança de estado do processo
Criação de Processos
Há 4 (quatro) eventos principais que fazem com que
processos sejam criados:
1 – Inicio do programa;
2 – Execução de uma chamada de sistema de criação
de processos por um processo em execução (criação
de filho);
3 – Uma requisição do usuário para criar um novo
processo;
4 – Inicio de uma tarefa em lote;
Criação de Processos
No Unix e alguns derivados, há somente uma chamada
de sistema para criar um novo processo (fork);
fork cria um clone idêntico ao processo que o
chamou;

Assim processo pai e filhos ficam com a mesma
imagem de memória, variáveis de ambiente e
arquivos abertos;

Em seguida o processo filho executa a chamada
execve para mudar sua imagem de memória e
executar um novo programa;

Criação de processos
No Windows existe uma única chamada Win32
CreateProcess;
Ela tanto cria um novo processo quanto carrega o
programa correto no novo processo;
Tanto em Unix quanto no Windows, depois que o
processo é criado, o pai e o filho têm seus
próprios espaços de endereçamento.
Término de Processo
Um processo pode terminar devido:
1- Saída Normal (voluntário);
2- Saída por erro (voluntário);
3- Erro fatal (involuntário);
4- Cancelamento por outro processo (involuntário)
Término de Processo
1- Saída Normal (voluntário):
Ao terminar o compilador faz chamada de sistema indicando
que ele terminou;


Unix usa exit já o Windows usa ExitProcess
2- Saída por erro (voluntário):
O próprio processo descobre um erro que impede sua
execução;


Exemplo: compilar um arquivo que não existe;

O compilador simplesmente termina a execução;
Término de Processo
3- Erro Fatal (Involuntário):

Erro causado diretamente pelo processo (programa);
Instrução ilegal, referencia a memória inexistente, erro de
divisão por zero;

4- Cancelamento por outro processo (involuntário):
Através de uma system call, um processo sinaliza que o outro
deve ser finalizado;


kill no Unix e TerminateProcess no Windows;

Antes o “processo cancelador” deve ter permissão para tal;
Criação e Eliminação de Processos
Processos são criados e eliminados por motivos
diversos;
A criação de um processo ocorre quando o SO
cria, adiciona à sua estrutura e aloca espaço
para um novo PCB;
No caso de eliminação, o SO desaloca os
recursos para esse processo e remove o PCB
da estrutura;
Criação e Eliminação de Processos
A maioria dos SO estabelece 2 (dois) novos estados para os processos
recém criados e eliminados;
Criação (new):


O processo permanece neste estado após a criação do processo, porém
quando o SO ainda não colocou ou não tem recursos para colocá-lo na fila de
prontos;
O SO geralmente limitam a quantidade de processos com status ativo;
Terminado (exit):


Não possui mais programa executando em seu contexto, porém o PCB ainda
existe;
Após o SO salvar as infos necessárias para estatísticas, ele realmente elimina
o PCB e o processo passa a não mais existir;
Criação e Eliminação de Processos
Processos I/O-bound e CPU-bound
CPU-bound:

Utiliza massivamente a CPU;

Passa a maior parte do tempo em execução ou na fila de prontos;

Realiza poucas ações de leitura/escrita;

Geralmente são aplicações que efetuam muitos cálculos;
I/O-bound:

Passa a maior parte do tempo na fila de espera;

Utiliza massivamente leitura/escrita;

Aplicativos comerciais devido a necessidade de busca e gravação de
informação e de meios de interação com o usuário;
Foreground e Background
Processo em foreground:
Processo em primeiro plano;
Permite a interação direta com o usuário durante o seu
processamento.
Processo em background:
Processo em segundo plano (ou por trás);
Não existe interação com o usuário durante o seu
processamento.
Processos em background são também chamados de Daemons
Hierarquia de Processos
Processo independente:

Não existe vinculo de processo criado e seu criador;
Subprocesso ou processo filho:



O processo criador é denominado processo pai,
enquanto o novo processo é denominado processo filho;
Existe dependência entre o processo filho e o processo
pai;
Caso um processo pai deixe de existir, o processo filho
também deixará;
Hierarquia de Processos
Hierarquia de Processos
Em alguns sistemas quando um processo cria outro, o processo
pai e o processo filho continuam de certa maneira associados;
O processo filho pode gerar mais processos;
No Unix, um processo, todos seus filhos e descendentes destes
formam um grupo de processos;
Quando um usuário envia um sinal de teclado, todos do grupo o
recebem;
Cada um decide o que fazer: capturar, ignorar, ou executar a
ação predefinida para esse sinal;
O Windows não apresenta hierarquia de processos;
No Windows, quando um processo é criado, o processo pai
recebe um handle, mas pode optar por passar para outro
processo.
Sinais
Mecanismo capaz de notificar processos de eventos gerados
pelo SO ou por outros processos.
Possibilita a gerência, comunicação e sincronização entre
processos.
Exemplo: usuário pressiona [ctrl + c] durante a execução
de um programa.
✔
SO gera um sinal ao processo;
✔
Processo identifica a chegada do sinal;
✔
Uma rotina de tratamento é executada.
Sinais
Sinais
Podem ser utilizados junto a temporizadores;
A maior parte dos sinais são gerados pelo SO ou pelo
hardware (exceções, interrupções, limites de quotas
excedidos, alarmes de tempo);
Os sinais são indicados através da alteração de bits de
sinalização dentro do PCB;
Quando o processo é escalonado, seus bits são testados e o
evento referente à sinalização é executado;
Assim o processo só será excluído do sistema quando for
selecionado para execução.
Download