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 executando não- despacho pausa entra sai (a) diagrama de transição de estado UCP sai entra despacho pausa fila (b) possível implementação IC - UFF
Criando de processos O que faz o SO para criar processos? Quando cria? 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? Algumas razões para o término: 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 executando pronto despacho pausa admissão liberação saída novo bloqueado espera evento ocorre IC - UFF
Implementando o modelo (1) fila dos prontos despacho liberação admissão UCP pausa fila dos bloqueados espera evento evento ocorre IC - UFF
Implementando o modelo (2) UCP liberação admissão despacho pausa fila dos prontos evento 1 ocorre espera evento 1 fila evento 1 espera evento 2 fila evento 2 evento 2 ocorre IC - UFF
Implementando o modelo (3) UCP liberação admissão despacho pausa prioridade 1 espera evento 1 fila evento 1 espera evento 2 fila evento 2 prioridade 2 evento 1 ocorre 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 executando pronto despacho pausa admissão liberação saída novo bloqueado espera evento ocorre suspenso ativação suspensão IC - UFF
Pensando melhor ... suspende novo admissão admissão despacho liberação ativa pronto- suspenso pronto executando saída evento ocorre suspende pausa evento ocorre espera evento ativa suspenso- bloqueado bloqueado 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 Tabelas de E/S Tabelas de arquivos 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) Funções típicas: criação e término de processos escalonamento e despacho chaveamento sincronização e suporte a IPC gerenciamento de PCBs IC - UFF
Gerenciamento de processos (2) Criação de processos 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 IC - UFF
Gerenciamento de processos (3) Quando chavear? 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) 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 P1 P2 Pn Núcleo IC - UFF
Funções em modo usuário P1 Funções de chaveamento de processos Funções do SO P2 Pn IC - UFF
Como processos de sistema U1 Funções de chaveamento de processos Un Funções do SO1 do SOm IC - UFF
Leitura suplementar Operating Systems Concepts, A. Silberschatz e P.B. Galvin, Addison-Wesley Modern Operating Systems, A.S. Tanenbaum, Prentice Hall IC - UFF