Sei sulla pagina 1di 19

Sistemas Operacionais

Processos
Sumário

O que é um Processo

Sistemas Mono-tarefa

Sistemas Multitarefas

Estados possíveis

Tabela de Processos

Discussão

Referências
O que é um Processo?

“Uma instância de um programa em execução

Não é um processo quando um programa está apenas


localizado em um disco ou na memória, como um
dado.

Se dois usuários estiverem executando o mesmo


programa simultaneamente, existirão dois processos
separados” (Stuart, B. L., 2011)
O que é um Processo?
Um processo é a execução, pelo processador, das sequências de
instruções de um programa
Trata-se de um conceito dinâmico, que possui um estado caracterizado
por:
- Valores dos registradores do processador:
- PC – Program Counter: armazena endereço da próxima instrução
- SP – Stack Pointer: aponta para o topo da pilha de execução na
memória onde são armazenados os parâmetros e endereços de
retorno das funções ...
- Flags: indicam vários aspectos do comportamento do processador
naquele momento (nível usuário ou nível núcleo, status da última
operação realizada...)
- Áreas de memória usadas pelo processo
- Recursos usados pelo processo (arquivos abertos, conexões de
rede e semáforos...)
Sistemas Mono-tarefa
Na década de 40, os sistemas executavam um único
programa por vez

Um novo programa só era executado após a finalização


completa do anterior

Velocidade do processador muito maior que a velocidade dos


dispositivos de E/S, portanto, o processador ficava ocioso
durante a transferência de informação entre disco (ou fitas
magnéticas) e memória

O custo dos computadores era elevado demais para permitir


deixá-los ociosos por tanto tempo
Sistemas Mono-tarefa
Solução: processador suspende a execução do programa
que está aguardando dados externos e passa a
executar outra programa

Quando os dados do programa anterior chegam, este


passa a ser executado no ponto onde parou
- Consequências:
- Mais memória
- SO mais sofisticado: controlar a suspensão e
retomada dos programas, portanto, os sistemas
passam a ser multitarefas
Sistemas Multitarefas
Exemplo:

void main ( ) {
int i = 0, soma = 0 ;
while (i < 1000)
soma += i ;
printf ("A soma vale %d\n", soma);
}

Este tipo de programa inviabiliza o sistema, pois nunca


termina nem solicita operações de entrada/saída =>
monopólio do processador
Sistemas Multitarefas
Pra resolver este problema, foi introduzido na década de 60 o
conceito de time-sharing:

Cada programa recebe um limite de tempo de


processamento, denominado quantum

Linux: varia de 10 a 200 ms

Esgotado seu quantum, o programa em execução perde o


processador e volta para uma fila de programas prontos na
memória
Estados possíveis
Novo/Criação: O processo está sendo criado;

Executando: A CPU está correntemente executando um código que faz


parte do processo;

Apto/Pronto: Processos no estado de Apto ou Pronto não estão


esperando por evento algum, mas esperam por sua vez na CPU;

Bloqueado/Espera: Identificamos processos à espera de algum evento


(com frequência operações de E/S) como bloqueado;

Concluído/Destruição: Fim da execução do processo.


Estados possíveis
Estados possíveis

Execução Terminado
espera por E/S
selecionado ou evento
fim do -Depende de dados externos (do
disco ou da rede) ou;
quantum - Aguarda sincronização (fim de
outro processo) ou;
- Espera o tempo passar (sleeping).

fim de E/S ou
ocorrência de evento Bloqueado
Pronto

Processo na memória, pronta iniciar execução ou para


continuar sua execução. Todas os processos prontos ficam
em uma fila ordenada por um algoritmo de escalonamento.
Estados possíveis

Criação Seleção Executando


Término

Tempo
Apto Destruição
Retorno
imediato
Chamada
Ocorrência de
de
um evento Erro
sistema
(interrupção)

Bloqueado
Casos especiais!
Tabela de Processos
Uma entrada para cada processo
Alguns itens típicos:
- registradores salvos;
- estado do processo;
- número ID do processo;
- número ID do proprietário;
- número ID do grupo;
- prioridade;
- utilização e mapeamento da memória
- status dos arquivos abertos;
- tempo de execução cumulativo
Discussão
Como um ambiente multitarefas é implementado pelo
SO?

Um processador convencional somente executa uma


sequência de instruções de cada vez

Computadores com vários processadores têm mais


programas para executar que o número de
processadores disponíveis

O que fazer?
Discussão

Solução: multiplexar o processador entre os


programas!
Bloco de Controle de Processos

As informações que permitem definir


completamente o estado de um processo são
denominadas contexto do processo

O contexto é salvo, quando necessário, em


estruturas de dados, na memória principal,
denominadas Blocos de Controle de
Processos (BCP)
Bloco de Controle de Processos
Cada processo é representado no S.O. por um
BCP. A figura abaixo resume sua estrutura:
Estado do processo

Número do processo

Contador do programa

Registradores

Limites de memória

Lista de arquivos abertos


.
.
Bloco de Controle de Processos
• Estado do processo: novo, pronto, etc

• Contador do programa: endereço da próxima instrução


para o processo

• Registradores: acumuladores, registradores índice,


ponteiros de pilhas

• Limites de memória: início e fim dos blocos de memória


utilizados pelo programa
Referências
TANENBAUM, A., S. Sistemas Operacionais Modernos. 2 a edição. Rio de Janeiro: Prentice-
Hall, 2002

SILBERSCHATZ, A., GALVIN, P. B. Sistemas Operacionais Modernos – Conceito e


Aplicações. 5a edição. São Paulo: Prentice-Hall, 2000

CARISSIMI, A.; Sistemas Operacionais; 4 a edição; Bookman, 2010.

SILBERSCHATZ, A.; Fundamentos de Sistemas Operacionais; 8 a edição; LTC, 2010.

TANENBAUM, A. S.; Sistemas Operacionais Modernos; 3 a edição; Prentice-Hall, 2010.

STUART, B. L.; Princípios de Sistemas Operacionais: projetos e aplicações; 1 a edição;


Cengage Learning, 2011.

OpenBook:
http://www.ppgia.pucpr.br/~maziero/doku.php/so:livro_de_sistemas_operacionais

Potrebbero piacerti anche