Você está na página 1de 20

SISTEMAS OPERATIVOS II

CAPÍTULO 2- PROCESSOS

MSc. Eng. Francisco José Dombala


2.1- CONCEITO DE PROCESSO

• Um sistema operacional não executa somente os programa que


podemos ver. Imagine que os aplicativos que você roda reúnem
diversas instruções e comandos, porém, são os processos que
efectivamente executam esses comandos. Isso significa que um
único aplicativo pode ter vários processos relacionados a ele.
Processos: Cont.
• Simplificando, os processos representam tarefas em execução,
mas nem todas têm relação directa com algum aplicativo.
Muitas delas são executadas em pano de fundo e mantêm o
sistema trabalhando - gerindo redes, memória, disco, checagem
antivírus, etc. Logo, podemos definir Processos como
softwares que executam alguma acção e que podem ser
controlados de alguma maneira, seja pelo usuário, pelo
aplicativo correspondente ou pelo sistema operacional.
2.2- ESTADO OU COMPONENTES DE UM
PROCESSO
Um processo tem uma série de características próprias. A estrutura
básica é formada por uma imagem do código executável associado a
um programa. A memória contém o código executável e dados
específicos. Há também a descrição de recursos do sistema alocados
ao processo, informações de atributos de segurança e a indicação do
estado actual.
Um processo é um programa individual em execução (uma instância de um programa
rodando em um computador). É também referenciado como “tarefa” (task) ou mesmo
“job”.
O processo é uma entidade activa (i.e., é um conceito dinâmico), ao contrário do programa.
ESTADO OU COMPONENTES DE UM
PROCESSO-Cont.
Um processo passa por diferentes estados desde sua criação até seu
término. Enquanto ele é criado, seu estado é considerado "Novo"; em
acção, muda para "Executando"; quando depende da ocorrência de
algum evento, vira "Esperando"; quando não mais necessário, o
processo é "Terminado". O sistema operacional reúne todas essas
informações através de estruturas específicas chamadas PCB (sigla
de Process Control Blocks, o que em tradução livre seria Blocos de
Controlo de Processos).
2.2.1- IMPLEMENTAÇÃO DE PROCESSOS

 O SO tem que manter para cada processo alguma informação


numa estrutura de dados conhecida por process control block
(PCB).
O PCB inclui, entre outra informação:
 O identificador do processo.
 O estado do processo (READY,RUN,WAIT).
 O evento pelo qual o processo está à espera, se algum.
 O estado do CPU (PC, SP e outros registos), quando o SO o retirou
do processo, i.e. saiu do estado running.
 As credenciais do processo (incluindo o owner).
 Informação sobre a memória usada pelo processo.
 Informação sobre outros recursos usados (p.ex. ficheiros) pelo
processo e o estado desses recursos.
 Os PCBs de todos os processos constituem uma estrutura de
dados conhecida por process table.
2.3- OPERAÇÕES SOBRE PROCESSOS

Num sistema multiprogramável, um processo não deve alocar a CPU


com exclusividade, de forma que possa existir um compartilhamento no
uso do processador. Os processos passam por diferentes estados ao
longo do processamento, em função de eventos gerados pelo sistema
operacional, pelo hardware, ou pelo próprio programa. São estados
possíveis de um processo:
OPERAÇÕES SOBRE PROCESSOS: Cont.

Criação: Neste estado o processo está sendo alocado na memória,


sendo criado no sistema. Todos os recursos necessários à execução
do processo são reservados durante a passagem do processo por este
estado, o que acontece uma única vez. Vários processos podem estar
neste estado, ao mesmo tempo.
OPERAÇÕES SOBRE PROCESSOS: Cont.

Pronto: É o estado onde os processos, depois de criados ou quando


retornam do tratamento de uma interrupção, permanecem aguardando
a liberação da CPU para que possam iniciar ou continuar seu
processamento. É como se fosse uma fila, gerenciada pelo sistema
operacional, que se incumbe de organizar os processos de acordo com
as informações contidas no contexto de software (identificação, quotas
e privilégios). Vários processos podem estar neste estado, ao mesmo
tempo.
OPERAÇÕES SOBRE PROCESSOS: Cont.

Execução: É onde o processo efetivamente utiliza a CPU. Ele


permanece no processador até que seja interrompido ou termine sua
execução. Neste estado, somente um processo pode permanecer de
cada vez, já que existe apenas um processador.

Espera: Neste estado estão todos os processos que sofreram algum


tipo de interrupção de E/S, onde permanecem até que a intervenção
seja resolvida. Vários processos podem estar neste estado, ao mesmo
tempo.

Saída: É o estado final do processo, quando este termina seu


processamento. Vários processos podem estar neste estado, ao
mesmo tempo.
2.3.1- IMPLEMENTAÇÃO DE PROCESSOS
Ao longo da sua existência um processo pode estar em 1 de 3 estados:
1. CPU atribuído ao processo (pelo SO);
2. CPU removido do processo (pelo SO);
3. Processo bloqueado à espera dum evento;
4. Ocorrência do evento esperado.

 Execução(running): o CPU está a


executar as instruções do processo;
 Bloqueado(waiting): o processo está
à espera de um evento externo
(tipicamente, o fim de uma operação
de E/S) para poder prosseguir;
 Pronto(ready): o processo está à
espera do CPU, o qual está a
executar instruções de outro
processo.
2.3.2- COMUTAÇÃO DE PROCESSOS

 A comutação entre processos (process switching), consiste em retirar


o CPU a um processo e atribuí-lo a outro.
 É uma função fundamental do kernel em SO multiprocesso.
A comutação entre processos inclui:
1. Transferir o estado do processo em execução para a memória (o
Process Control Block);
2. Carregar o processador com o estado do processo que passa para o
estado de execução;
 Passar o controlo para o novo processo, possivelmente comutando
para user-mode.
COMUTAÇÃO DE PROCESSOS: Cont.

I A parte do SO que faz a comutação de processos designa-se por


despacho (dispatcher).
A comutação entre processos é feita em instantes "oportunos",
incluindo:
 Chamadas ao sistema (p.ex., exit(), read());
 Interrupções:
 Por dispositivos de E/S;
 Pelo relógio.
2.3.3- CRIAÇÃO DE PROCESSOS
Durante o arranque do SO:

 Normalmente estes processos são não -interactivos e designam-se


por Daemons:
Alguns executam sempre em kernel space, p.ex. kswapd; Outros
executam normalmente em user space, p.ex. o servidor de HTTP (Web)
e o servidor de impressão.
 Em alguns SOs, conhecidos por microkernel, diferentes serviços são
fornecidos por processos especializados.
Por invocação da chamada ao sistema apropriada.
CRIAÇÃO DE PROCESSOS: Cont.
Ex:
O processo criado (filho):
Executa o mesmo programa que o programa pai;
 Inicia a sua execução na instrução que segue a fork().
O processo filho herda do pai:
 O ambiente e “privilégios de acesso a recursos”;
 Alguns recursos, incluindo ficheiros abertos.
Contudo, o processo filho tem os seus próprios. Ex:
 Identificador;
 Espaço de endereçamento:
Após a execução de fork(), alterações à memória pelo pai não são
visíveis ao filho e vice-versa.
CRIAÇÃO DE PROCESSOS: Cont.

Problema: Como é que se distingue o processo pai do processo filho?


Solução:
 fork() retorna:
 o pid do filho ao processo pai;
 0 ao processo filho.
Comandos
if( (pid = fork()) != 0 ) {
parent(); /* this is executed by the parent */
} else {
child(); /* and this by its child */
}
2.3.4- HIERARQUIA DE PROCESSOS

 Entre o processo pai e os seus filhos;


 Entre processos que têm um pai comum (grupo de processos).
ESTUDO DE CASO

Problema: Como é que um processo pode executar um programa


diferente do do pai?
Solução:
Usando a chamada ao sistema execve()
TERMINAÇÃO DE PROCESSOS
Um processo pode terminar por várias causas:
1. Decisão do próprio processo, executando a chamada ao sistema
apropriada (directa ou indirectamente, p.ex. por retorno de main());
2. Erro causado pelo processo, normalmente devido a um bug, p.ex.
divisão por zero ou acesso a uma região de memória que não lhe foi
atribuída;
3. Decisão de outro processo, executando a chamada ao sistema
apropriada (kill em POSIX);
4. Decisão do SO (falta de recursos).
Note-se que um processo pode terminar voluntáriamente quando
detecta um erro, p.ex. um compilador não pode compilar um ficheiro
que não existe.
Próxima aula: Capítulo 2- Cont.Processos

 Escalonamento de Processos
 Comunicação entre Processos: Semáforo, Monitores
 Problemas clássicos de sincronização de Processos
 Alocação de recursos e Deadlocks

Você também pode gostar