IC - UFF Sistemas Operacionais 2. Processos Texto base: capítulos 3 e 4 Operating Systems:...
Transcript of IC - UFF Sistemas Operacionais 2. Processos Texto base: capítulos 3 e 4 Operating Systems:...
IC - UFF
Sistemas Operacionais
2. Processos
Texto base: capítulos 3 e 4
Operating Systems: Internals and Design Principles
W. Stallings
IC - UFF
O conceito de processos
No capítulo 1, fizemos as seguintes afirmativas quanto aos processos: Mais geral que programa Consiste em um código executável e seus
dados associados, além de um contexto de execução
IC - UFF
Enfim, ...
Um processo é uma abstração de um programa em execução
Exemplo: fazer um bolo ... ... primeiros socorros!
IC - UFF
O que esperar do SO?
Alternar a execução de processos de forma a maximizar a utilização da UCP e fornecer tempo de resposta razoável
Alocar recursos a processos Suportar criação de processos pelo
usuário Suportar comunicação entre processos
IC - UFF
Modelo simples de processo
executandonão-
executando
despacho
pausa
entra sai
(a) diagrama de transição de estado
UCP
saientra despacho
pausa
fila
(b) possível implementação
IC - UFF
Criando de processos
O que faz o SO para criar processos? constrói estruturas de dados aloca espaço de endereçamento
Quando cria? quando usuário abre sessão; quando gerado por outro processo (e.g.,
servidor de FTP); ...
IC - UFF
Terminando processos
Quando terminar? execução da instrução Halt; condições de erro; ...
Algumas razões para o término: tempo excedido; falta de memória; uso de instrução privilegiada; término do processo pai; ...
IC - UFF
Problema com o modelo simples
Um processo que não está executando estará sempre pronto a executar?
Não:
pode estar bloqueado esperando E/S!
despachante não pode simplesmente ppegar um processo que esteja na fila
IC - UFF
Um modelo mais elaborado
executandopronto
despacho
pausa
admissão liberação
saídanovo
bloqueado
esperaevento
eventoocorre
IC - UFF
Implementando o modelo (1)
UCP
liberação
admissãodespacho
pausa
fila dos prontos
evento ocorreespera evento
fila dos bloqueados
IC - UFF
Implementando o modelo (2)
UCP
liberação
admissãodespacho
pausa
fila dos prontos
evento 1 ocorreespera evento 1
fila evento 1
espera evento 2fila evento 2
evento 2 ocorre
IC - UFF
Implementando o modelo (3)
evento 1 ocorre
UCP
liberação
admissãodespacho
pausa
prioridade 1
espera evento 1fila evento 1
espera evento 2fila evento 2
prioridade 2
evento 2 ocorre
IC - UFF
O estado Suspenso
O processador é muito mais rápido que E/S: todos os processos podem estar bloqueados
Swapping Necessidade de novo estado:
representação de processo suspenso
IC - UFF
Diagrama com estado Suspenso
executandopronto
despacho
pausa
admissão liberação
saídanovo
bloqueado
esperaevento
eventoocorre
suspenso
ativação
suspensão
IC - UFF
Pensando melhor ...
executandopronto
despacho
pausa
admissão
liberação
saídapronto-suspenso
bloqueado
esperaevento
eventoocorre
suspenso-bloqueado
eventoocorre
ativa
suspende
admissão
novo
ativa
suspende
suspende
IC - UFF
O que o SO deve fazer?
Em um sistema multi-tarefas, o SO deverá: escalonar e despachar processos para execução alocar recursos aos processos responder a pedidos de recursos feitos pelos
programas dos usuários Como fazer?
IC - UFF
Tabelas! Tabelas de memória
e.g., alocação de MP aos processos Tabelas de E/S
e.g., estado de dispositivo de E/S Tabelas de arquivos
localização de arquivos em MS Tabelas de processos
e.g., lista de processos existentes
IC - UFF
Controlando processos
Para gerenciar processos o SO precisa conhecer: onde o processo está localizado os atributos do processo
Como é representado um processo? imagem do processo: programa + dados +
pilha(s) + atributos
IC - UFF
Atributos do processo
O conjunto dos atributos de um processo é conhecido como bloco de controle do processo (PCB, em inglês)
PCB pode ser dividido em três partes: identificação do processo informação de estado do processador informação de controle do processo
IC - UFF
Identificação do processo
Feita por identificadores numéricos que incluem: identificador do processo identificador do processo que o criou identificador do usuário
IC - UFF
Informação do processador
Contida nos registradores do processador: registradores visíveis ao usuário (aqueles
referenciados por programa) registradores de controle e estado (e.g., PC,
códigos de condição) apontadores de pilha
IC - UFF
Informação de controle (1)
Estado e escalonamento, que inclue: estado do processo (e.g., pronto) nível corrente de prioridade suporte ao escalonamento (e.g., há quanto
tempo o processo está esperando) evento (e.g., identificação do evento que o
processo está esperando)
IC - UFF
Informação de controle (2) Estruturação de dados (e.g., relação pai-filho) Comunicação entre processos (e.g., sinais) Privilégios (e.g., tipos de instruções que podem ser
executadas) Gerenciamento de memória (e.g., ponteiro para
tabela de páginas) Propriedade e uso de recursos (e.g., arquivos
abertos)
IC - UFF
Funções típicas do núcleo do SO
Preliminares: O que é modo dual de operação? O que é o núcleo do SO?
Funções do núcleo: gerenciamento de processos gerenciamento de memória gerenciamento de E/S funções de suporte
IC - UFF
Funções típicas do núcleo do SO
Preliminares: O que é modo dual de operação? O que é o núcleo do SO?
Funções do núcleo: gerenciamento de processos gerenciamento de memória gerenciamento de E/S funções de suporte
IC - UFF
Gerenciamento de processos (1)
criação e término de processos escalonamento e despacho chaveamento sincronização e suporte a IPC gerenciamento de PCBs
Funções típicas:
IC - UFF
Gerenciamento de processos (2)
atribuição de identificador único e adicionar nova linha à tabela primária de processos
alocação de espaço para a imagem iniciação do PCB adicionar apontador nas listas apropriadas (e.g., lista
de prontos para escalonamento) outras estruturas: e.g., arquivo de contabilização
Criação de processos
IC - UFF
Gerenciamento de processos (3)
interrupções relógio ( mudança de estado, escalonamento) E/S falta de memória (página ou segmento)
traps: condições anormais chamada ao sistema (e.g., operação de E/S)
Quando chavear?
IC - UFF
Unix: Fork#include <stdio.h>
int main (int argc, char *argv[ ]){int pid;
/* criação de outro processo por fork */pid = fork();
if (pid < 0) {/* ocorreu erro */fprintf(stderr, "Fork falhou");exit(-1);
}else if (pid == 0) { /* processo filho */
execlp ("/bin/ls", "ls", NULL);}else { /* processo pai */
/* processo pai vai esperar o filho terminar */wait(NULL);printf("Filho terminou\n");exit(0);
}}
IC - UFF
Gerenciamento de memória
Funções típicas: alocação de espaço de endereçamento aos
processos swapping gerenciamento de páginas e segmentos
IC - UFF
Gerenciamento de E/S
Funções típicas: gerenciamento de buffers alocação de canais e dispositivos de E/S
IC - UFF
Funções de suporte
Funções típicas: tratamento de interrupção monitoramento contabilidade
IC - UFF
Executando o SO O SO é um programa. Ele é um
processo? núcleo não é processo: conceito de processo
só para programas do usuário funções executadas como processo de
usuário: só há chaveamento de modo SO como conjunto de processos de sistema:
funções principais do núcleo como processos
IC - UFF
Núcleo separado
Núcleo
P1 P2 Pn
IC - UFF
Funções em modo usuário
P1
Funções de chaveamento de processos
Funçõesdo SO
P2
Funçõesdo SO
Pn
Funçõesdo SO
IC - UFF
Como processos de sistema
U1
Funções de chaveamento de processos
UnFunçõesdo SO1
Funçõesdo SOm
IC - UFF
Leitura suplementar
Operating Systems Concepts, A. Silberschatz e P.B. Galvin, Addison-Wesley
Modern Operating Systems, A.S. Tanenbaum, Prentice Hall