Processos
Prof. Alexandre Monteiro
Recife
‹#›
Contatos

Prof. Guilherme Alexandre Monteiro Reinaldo

Apelido: Alexandre Cordel

E-mail/gtalk: [email protected]
[email protected]

Site: http://www.alexandrecordel.com.br/fbv

Celular: (81) 9801-1878
Introdução a Processos

Em um sistema multiprogramado vários programas estão
na RAM e são executados concorrentemente
•A CPU permuta entre programas,
executando cada um por dezenas/centenas
de milisegundos.
- Uma CPU só pode executar um programa por vez.
•Mas no curso de 1’’ uma CPU pode executar
diversos programas ilusão de paralelismo
(pseudoparalelismo)
- Verdadeiro paralelismo = sistema multiprocessado
Introdução a Processos





O conceito de processo é a base para a implementação
de um sistema multiprogramável
A gerência de um ambiente multiprogramável é função
do SO, o qual controla a execução dos programas e o uso
concorrente da CPU
Neste contexto um programa esta associado a um
processo
OBS: Apesar de denominações como tarefa ou job ainda
serem usadas com o mesmo sentido, o termo processo é
atualmente o mais utilizado.
job = tarefa = processo
Introdução a Processos

Vantagens da Multiprogramação:
• Aumento da taxa de utilização do
processador
• Melhor utilização dos recursos em geral
• Redução do tempo de execução de um
conjunto de programas
• Dá a ideia ao usuário de que ele possui
uma máquina só para si.
Tipos de Processo



Independentes: não podem afetar a execução dos outros
processos.
Cooperativos: podem afetar ou ser afetados pela
execução de outros processos.
Vantagens:
• Compartilhamento de informações
• Aumento da veloc. de computação (speedup)
• Modularidade
• Conveniência
Processos
O Modelo de Processo
•
•
•
Multiprogramação de 4 programas
Modelo conceitual de 4 processos sequenciais,
independentes
Somente um programa está ativo a cada momento
7
Introdução a Processos

4 programas na memória de um sistema multiprogramado e
a abstração em processos.
Introdução a Processos

4 programas na memória de um sistema multiprogramado e
a abstração em processos.
Introdução a Processos

4 programas na memória de um sistema multiprogramado e
a abstração em processos.
Sequencial x Multiprogramado
Introdução a Processos


Para que a troca de programa ocorra sem problemas é
necessário que todas as informações do programa
interrompido sejam guardadas
Todas as informações importantes à execução de um
programa são parte do processo, por exemplo:
•seu espaço de endereçamento,
•seu tempo de processador e
•sua área de disco
Introdução a Processos

Um processo é formado por três partes
•Contexto de Hardware
•Contexto de Software
•Espaço de endereçamento


Estas três partes mantêm todas as informações
necessárias à execução de um programa
Quando um processador troca de processo
caracteriza uma mudança de Contexto de
Execução
Estrutura de um Processo
Contexto de Hardware

Armazena o conteúdo dos registradores gerais da CPU, além
dos registradores de uso específico, por exemplo:
•Contador de programa (Program Counter - PC)
- Armazena o endereço de memória onde se encontra a próxima instrução a ser
executada
•Apontador da pilha (Stack Poiter - SP)
- A pilha contém valores que podem ser inteiros, reais ou endereços.
- O SP aponta para o topo da pilha
•Status (Estado do Processo)
- Contém diversos flags que auxiliam à tomar decisões após instruções
Contexto de Hardware




Quando um processo está em execução, o seu contexto
de HW está armazenado nos registradores da CPU.
No momento em que o processo perde a utilização da
CPU, o sistema salva as informações no contexto de HW
do processo
A troca de um processo por outro na CPU é denominada
mudança de contexto.
Esta consiste em salvar o conteúdo dos registradores do
processo que está deixando a CPU e carregá-los com os
valores referentes ao do novo processo.
(1)
(2)
(3)
(4)
(5)
(6)
(7)
Contexto de Hardware

A troca de contexto resume-se em
substituir o contexto de HW de um
processo A pelo de outro processo B.
Contexto de Software

Especifica as características e limites dos recursos que
podem ser alocados pelo processo, como:
• O número máximo de arquivos abertos simultaneamente,
• A prioridade de execução e
• O tamanho do buffer para E/S

Muitas informações do contexto de SW são provenientes
de um arquivo do SO conhecido como arquivo de contas
• Ele é gerenciado pelo Administrador do sistema e
contém os limites dos recursos que cada processo
pode alocar.
Contexto de Software

É formado por 3 grupos de informações:
•Identificação
•Quotas
•Privilégios
Contexto de Software - Identificação

Grupo Identificação
•Cada processo criado pelo sistema recebe uma
identificação única
- PID – Process Identification
•Através do PID o SO e outros processos podem
fazer referência a qualquer processo existente
•O processo também possui a identificação do
usuário ou processo que o criou (owner).
- Cada usuário possui uma identificação no sistema
- UID – User Identification
Contexto de Software - Identificação

A UID permite implementar um modelo de segurança,
onde apenas os objetos (processos, arquivos, áreas de
memória,...) que possuem a mesma UID do usuário (ou
processo pai) podem ser acessado.
Contexto de Software - Quotas

Grupo Quotas
•As quotas são os limites de cada recurso do
sistema que um processo pode alocar
•Caso uma cota seja insuficiente, o processo
poderá:
- Ser executado lentamente
- Interrompido durante seu processamento
- Ou até nem ser executado
Contexto de Software - Quotas

Grupo Quotas
•Alguns exemplos de quotas:
- 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 do 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

Grupo Privilégios
•Os privilégios ou direitos definem as ações que
um processo pode fazer em relação a ele
mesmo, aos demais processo e ao SO.
- Alterar a prioridade de execução
- Modificar os limites alocados de memória
- Alteração de regras de segurança
- Criação de outros processos privilegiados
- Modificação de parâmetros de configuração do sistema
Contexto de Software - Privilégios

Grupo Privilégios
•Privilégio que afetam o SO são os mais amplos
e poderosos.
•A maioria do SO possui uma conta de acesso
SUPER privilegiada
- Windows = administrator
- UNIX = root
Espaço de Endereçamento


É a área de memória do processo onde as
instruções e os dados do programa são
armazenadas para execução
Cada processo possui seu espaço de
endereçamento
Processo: Estrutura Detalhada



PCB - Bloco de Controle do Processo
O processo é implementado pelo SO
através de uma estrutura de dados (Lista
Encadeada) chamada de Bloco de
Controle do Processo (Process Control
Block - PCB)
A partir do PCB, o SO mantém as
informações sobre o contexto de HW, o
contexto de SW e o espaço de
endereçamento de cada processo.
O PCB possui todas as informações
necessárias para que a execução do
processo possa ser iniciada, interrompida
e retomada conforme determinação do
SO, sem prejuízo para o processo.
PCB - Bloco de Controle do Processo

Algumas informações típicas que o PCB possui são:
• Identificador de processo (pid);
• Estado atual do processo;
• Cópia do conteúdo do registrador contador de programa (PC –
Program Counter);
• Cópia do conteúdo dos demais registradores do processador;
• PID do processo pai (parent process);
• Ponteiro para a pilha;
• Tempo em que o processo iniciou;
• Tempo utilizado do processador;
• Informações sobre diretório raiz e de trabalho.

OBS: Os PCBs de todos os processos residem na
memória principal em uma área exclusiva do SO
PCB na Memória (Lista Encadeada)
Address Windowing
Extensions
Estado do Processo

Para haver o compartilhamento da CPU em um sistema
multiprogramável, os processos passam por diferentes
estados ao longo do seu processamento
• A troca de estado ocorre em função de eventos gerados pelo
próprio processo (voluntário) ou pelo SO (involuntário)

Os estados em que um processo pode se encontrar
variam de sistema para sistema mas, de uma maneira
geral, pode-se citar:
• Executando (Running)
• Pronto (ready)
• Bloqueado (blocked) – Também conhecido com Espera (Wait)
• Terminado (exit)
Estados do Processo:
Executando (running)



Um processo está no estado executando quando ele está
sendo executado pelo processador.
Em ambientes com uma única CPU, somente um processo
pode estar sendo executado em um certo instante.
Em ambientes com mais de uma CPU, existe a possibilidade
de mais de um processo estar sendo executado ao mesmo
tempo
•Neste tipo de sistema um mesmo processo
também pode ser executado
simultaneamente em mais de uma CPU
Estados do Processo:
Pronto (ready)




O processo está temporariamente parado para que outro
processo possa ser executado.
O processo encontra-se pronto para a execução,
aguardando apenas a liberação do processador para que ele
seja executado;
Em geral existem vários processos no sistema no estado de
pronto organizados em listas encadeadas;
Os processos são encadeados pela sua
importância/prioridade
Estados do Processo:
Pronto (ready)
Estados do Processo:
Bloqueado (blocked) – Espera (wait)

Um processo está no estado bloqueado/espera quando
aguarda a ocorrência de algum evento ou recurso externo
para poder prosseguir, por exemplo:
- O término de uma operação de E/S
- Espera de uma data e/ou hora para continuar sua execução

O sistema também organiza os vários processos no estado
de bloqueado/espera em listas encadeadas
- Em geral, os processos são separados em listas de espera
associadas a cada tipo de evento
Estados do Processo:
Bloqueado (blocked) – Espera (wait)
Processos x Programas
•
•
•
•
Diferença sutil mas crucial.
Um processo é um programa em execução.
CPU chaveam conjuntos de processos, o que chamamos de
multiprogramação.
Analogia da Receita de Bolo:
• A receita é o programa (algoritmos).
• O cozinheiro/programador é o processador (CPU)
• Os ingredientes são os dados de entrada.
• O processo é a atividade desempenhada pelo
cozinheiro (ler receita, buscar e misturar
ingredientes, assar o bolo)
40
Processos x Programas
•
Agora imagine que no meio do preparo o filho do cozinheiro
chegue chorando e dizendo que uma abelha o picou:
• O cozinheiro registra de onde está (estado atual do
processo é salvo).
• Pega livro de primeiros socorros e começa a seguir
as instruções.
• Quando o problema da picada de abelha tiver sido
tratado, o processador (cozinheiro) volta ao bolo.
•
Nesse ponto vemos que o processador alternou de um processo
para outro de mais alta prioridade
41
Processos
•
Um processo constitui uma atividade composta de:
• Programa
• Entrada
• Saída
• Estado.
•
Um programa sendo executado duas vezes, isso conta como dois
processos. Apesar do SO compartilhar o código do programa em
memória.
43
Criação de Processos

Principais eventos que levam à criação de processos
1. Início do sistema
2. Execução de chamada ao sistema de criação de
processos
3. Solicitação do usuário para criar um novo processo
4. Início de um job em lote
I.
II.
Processos e Foreground (primeiro plano): interagem com
usuários
Processos e Background (segundo plano): função
específica, que não se associam com o usuários
(Daemons)
44
Criação de Processos




Sistemas Antigos: só o sistema podia criar novos processos
Sistemas Atuais: os usuários podem criar novos processos e
destruir dinamicamente
SO deve fornecer chamadas para a manipulação e gerência
de processos
Quando um novo processo é criado o seu PCB é preparado
com as informações básicas e colocado na fila de prontos.
Criação de Processos

Novos processo derivam do Processo Pai, sendo criada uma
cópia dos endereços de memória para Processos Filhos
• UNIX (fork: cria novo processo e execve:
sobrepõe espaço de endereçamento)
• Windows (CreateProcess)


Pai e Filho tem seus Endereços de Memória distintos,
principalmente para escrita.
No UNIX há pouco compartilhamento, no Windows os
espaços são distintos desde o início da criação do Processo
Filho.
46
Criação de Processos


Processos Pais criam processos Filhos, que podem criar novos
processos => gerando uma árvore de processos
Compartilhamento de Recursos:
1. Pais e Filhos compartilham os mesmo recursos
2. Filhos compartilham um subconjunto de recursos do Pai
3. Pais e Filhos não compartilham recurso algum

Execução
1. Pai e Filhos executam concorrentemente
2. Pai aguarda até que o filho termine

Espaço de endereçamento
1. Filho é uma cópia do Pai (Firefox)
2. Filho tem um novo programa carregado (Google Chrome)
Árvore de Processos
Windows
Criação de Processos
Término de Processos
Condições que levam ao término de processos
1.
Saída normal (voluntária)
2.
Saída por erro (voluntária)
3.
Erro fatal (involuntário)
4.
Cancelamento por um outro processo
(involuntário)
50
Término de Processos

Término de processos
• UNIX (exit)
• Windows (ExitProcess)




Todos os programas baseados em tela também suportam o
término voluntário.
Término do Erro Fatal: executar arquivo inexistente.
Instrução Ilegal: divisão por zero, referência a memória
inexistente.
Término por cancelamento UNIX (Kill) e Windows
(TerminateProcess)
51
Eliminação de Processo



Quando um processo é eliminado seus recursos associados
são desalocados e o SO elimina o PCB.
Além dos 3 estados de um processo, a maioria dos SO têm
mais 2 estados (um para criação e outro para eliminação)
Criação (New)
• O SO criou um novo PCB, porém o processo não está
na lista de prontos

Terminado (Exit)
• Não pode ser mais executado, porém o SO ainda
mantém seu PCB
- O SO usa o PCB para contabilizar os recursos usados. Após isto, o processo
pode deixar de existir
Eliminação de Processo

Pais podem terminar a execução de processos Filhos (abort)
1. Filhos excederam os recursos alocados
2. Tarefa de incumbência do Filho não é mais
necessária
3. NO caso de Pai terminando
•SO não permite que o Filho continue se seu
pai terminou
•Terminação em cascata
Criação e Eliminação de Processos
Hierarquias de Processos
•
•
Pai cria um processo filho, processo filho pode criar seu próprio
processo
Formam uma hierarquia
–UNIX chama isso de “grupo de processos”
•
Windows não possui o conceito de hierarquia de processos
–Todos os processos são criados iguais
55
Estados de Processos (1)
•
Possíveis estados de processos
–em execução
–bloqueado
–Pronto
–terminado
•
Mostradas as transições entre os estados
56
Transições Possíveis entre Estados
Estados de Processos

De forma resumida existem 4 mudanças de estado que
podem ocorrer a um processo:
• (a) Pronto -> Execução
• (b) Execução -> Bloqueado/Espera
• (c) Bloqueado/Espera -> Pronto
• (d) Execução -> Pronto
Mudança de Estado de Processo
(a) Pronto -> Execução




Quando um processo é criado, o sistema o coloca em uma fila
de processos prontos, onde aguardará uma oportunidade para
ser executado.
Cada SO tem seus próprios critérios e algoritmos para a escolha
da ordem em que os processos serão executados
(escalonamento).
Esta transição também ocorre quando todos os processos já
tiveram o seu tempo de execução (fatia de tempo) e agora é
novamente a vez do primeiro processo da fila de prontos ser
executado pela CPU
Causada por eventos gerados pelo sistema. Isto é de forma
involuntária ao processo.
Estados do Processo:
Pronto
Mudança de Estado de Processo
(b) Execução -> Bloqueado/Espera

Um processo executando pode passar para o estado
bloqueado por meio de eventos gerados pelo próprio
processo
•Ex: uma operação de E/S

Um processo executando também pode passar para o
estado bloqueado por eventos gerados pelo sistema
•Ex: SO suspende por um período a execução
de um processo.
Estados do Processo:
Bloqueado (blocked) – Espera (wait)
Mudança de Estado de Processo
(c) Bloqueado/Espera -> Pronto


Um processo no estado de bloqueado/espera passa para o
estado de pronto quando a operação solicitada é atendida
ou o recurso esperado é concedido.
Um processo no estado de bloqueado/espera sempre terá
que passar pelo estado de pronto antes de poder ser
novamente selecionado para execução
•Não existe mudança de estado de
bloqueado/espera para o estado de
execução diretamente
Mudança de Estado de Processo
(d) Execução -> Pronto




Um processo em execução pode passar para o estado de
pronto quando ocorrer o término da sua fatia de tempo,
por exemplo.
Nesse caso, o processo volta para a fila de processos
prontos, onde aguarda uma nova fatia de tempo;
Causada por eventos gerados pelo sistema. Isto é de
forma involuntária ao processo.
OBS. Um processo em estado pronto ou bloqueado/espera pode não
estar em RAM. Isto ocorre quando não existe espaço suficiente para
todos os processo na RAM e parte do contexto do processo é levada
para o HD. E isso leva mais tempo para executar.
Conceito de Escalonamento


Para cada estado existe uma Fila que contém os PCBs.
Nas transações entre estados, o PCB do processo é movido
entre as filas apropriadas.
Razões para Suspender Processos


Uma técnica conhecida como swapping retira processos da
RAM, liberando espaço de memória para outro processo, e
os traz de volta seguindo critérios de cada SO.
Neste caso, os processos em estado bloqueado/espera e
pronto podem estar residentes ou não residentes na RAM.
- SO pode suspender processos:
- Em background
- Utilitário

Suspeito de estar causando problemas

Solicitação de usuário interativo

Temporização: execução periódica

Solicitação do processo pai.
Mudanças de Estados do Processo
RAM
HD
Estados de Processos (2)
•
Camada mais inferior de um SO estruturado por
processos
–trata interrupções, escalonamento
•
Acima daquela camada estão os processos
sequenciais
68
Escalonamento de Processos



Quando um ou mais processos estão prontos para
serem executados, o sistema operacional deve decidir
qual deles vai ser executado primeiro
A parte do sistema operacional responsável por essa
decisão é chamada escalonador, e o algoritmo usado
para tal é chamado de algoritmo de escalonamento
Para que um processo não execute tempo demais,
praticamente todos os computadores possuem um
mecanismo de relógio (clock) que causa uma
interrupção, periodicamente
Implementação de Processos (1)
Campos da entrada de uma tabela de processos
70
Implementação de Processos (2)
Esqueleto do que o nível mais baixo do SO faz
quando ocorre uma interrupção
71
Processos Foreground e Background
- Processos Foreground:

Permite a comunicação direta do usuário com o processo
durante o seu processamento
•Tem como base processamento interativo
(teclado, mouse e monitor)
- Processos Background:

Não permite a comunicação com o usuário durante o seu
processamento
•Tem como base processamento tipo batch
(arquivos de E/S)
Processos Foreground e Background
Processos Foreground e Background



Processo Foreground e Background – PIPE
É possível associar a saída de um processo a entrada
de um outro. Para isso usa-se um pipe ligando os
processos.
Exemplo em UNIX
cat cap1 cap2 cap3 | grep linguagem


cat está sendo usado para concatenar 3 arquivos
grep mostrará as linhas da saída de cat com a palavra
linguagem
Processos Foreground e Background
Processos CPU-Bound e I/O Bound

Processos CPU-Bound
• Passa a maior parte do tempo no estado de
execução, ou seja, utilizando a CPU
- Esse tipo de processamento realiza pouca E/S (aplicações científicas)

Processos I/O-Bound
• Passa a maior parte do seu tempo no estado de
bloqueado (ou espera), pois realiza muita E/S
- Esse tipo de processamento usa pouco a CPU (aplicações comerciais)
Processos CPU-Bound e I/O Bound
Múltiplos Processos
Concorrência



São formas diferentes de implementar concorrência
Busca-se subdividir o código em partes que permitam o
trabalho cooperativo entre estas partes
São elas:
•Processos Independentes
•Subprocessos
•Threads
Processos Independentes





O uso de processo independentes é a forma mais simples de
implementar a concorrência em sistemas multiprogramáveis
Neste caso não existe vínculo do processo criado com o seu
criador
A criação de um processo independente exige a alocação de
um PCB.
A criação e eliminação de processos independentes e
subprocessos demanda recursos do sistema (CPU, RAM,...).
Além disso, como cada processo tem seu espaço de
endereçamento, a comunicação e sincronização entre
processo é pouco eficiente
Subprocessos(Cooperativos)

São processos criados dentro de uma estrutura hierárquica
•Processo criador = processo pai
•Novo processo = subprocesso ou processo filho

Um subprocesso pode criar outros subprocessos

Existe dependência entre o processo pai e filho
•Se o pai morre, o filho morre automaticamente

Também possuem seu próprio PCB

Subprocessos podem compartilhar quotas com seu pai

Vantagens: Compartilha informações, aumenta a velocidade
computacional (speed-up), modularidade, conveniência.
Subprocessos
Referências


Sistemas Operacionais Modernos – 3ª Edição. A.
Tanenbaum, 2008.
Modern Operating Systems 3 e. Prentice-Hall, 2008.