Instituto de Informática
-U
FRGS
Sistemas Operacionais
Processos
Implementação e estudo de casos
Aula 03
PC SP Pilha Texto (código) Dados heap (monte) 0 2n-1 Instituto d e Informática -UFRGSQuestões...
Em que momentos um processo pode ser criado?
Como que se cria processos? O que deve ser feito na criação?
Como um processo pode ser terminado? O que deve ser feito no
término?
Sistemas Operacionais 2 Instituto d e Informática -UFRGSIntrodução
Os processos são criados por ações do sistema operacional ou de
outros processo
■ Chamada de sistema ou funções específicas ■ Possuem um ciclo de vida: criação-execução-término
Cada processo possui
■ Uma identificação única: Process Identifier (pid)
■ serve para “rastrear e monitorar” as atividades e demandas de um
processo em particular
■ Um PCB (Process Control Block) ou descritor de processo
O sistema operacional mantém uma tabela de processos
■ Uma lista (vetor) de descritores de processos (PCB)
Sistemas Operacionais 3 Instituto d e Informática -UFRGS
Implementação de processo
O processo é “materializado” através de uma estrutura de dados
■ Process Control Block (PCB)■ Mantido na área de dados do núcleo do sistema operacional
Informações mantidas:
■ Espaço de endereçamento ■ Contexto
■ Estado
■ Contabilização do uso de recursos do sistema
■ Proteção e compartilhamento
■ etc
Sistemas Operacionais 4
Instituto
d
e Informática
-UFRGS
Criação e término: situação genérica
Criação
■ Inicialização do sistema (bootstrap)
■ Em sistemas batch (lote), pelo inicio de uma tarefa
■ Chamadas de sistema
■ Requisição explícita do usuário via linha de comando ou “cliques” em ícones
em uma interface gráfica
Término
■ Normal (voluntário)
■ Consequência de uma rotina de tratamento de erro (voluntário)
■ Erro fatal (involuntário) ■ Cancelamento (involuntário)
Sistemas Operacionais 5
Efeito colateral: o que fazer com os processos
que foram criados pelo processo que termina?
Instituto d e Informática -UFRGS Sistemas Operacionais 6 A . C arissimi -3-sep t.-17
Relacionamento entre processos
Processos independentes
■ Não apresentam relacionamentos com outros processos
Grupo de processos
■ Apresentam algum tipo de relacionamento
■ e.g. filiação
■ Podem compartilhar recursos ■ Definição de hierarquia de processos
Instituto d e Informática -UFRGS A . C arissimi -3-sep t.-17
Hierarquia de processos
Processo criador (pai) e processo criado (filho) ■ Um processo tem um único pai
■ Um processo filho pode criar outros processos filhos ■ Gera uma hierarquia
Representação através de uma árvore ■ Evolução dinâmica
O que fazer na destruição de um processo? ■ Toda a descendência “morre”
■ A descendência é herdada pelo processo “avô” ■ Postergar a destruição efetiva do processo pai até
que os todos processos filhos terminem
Instituto
d
e Informática
-UFRGS
Criação, execução e término de processos
Criação de um processo
■ Significa alocar um PCB para ele e inicializar adequadamente
■ Um PCB (descritor de processo) = estrutura de dados
Durante sua existência o processo passa pelos estados apto,
executando e bloqueado
Término
■ Liberação do PCB
Processo = Código + Pilha + Dados + heap + recursos + estado da CPU + pid PCB Espaço de endereçamento
Instituto d e Informática -UFRGS Sistemas Operacionais 9 A . C arissimi -3-sep t.-17
Princípio básico de implementação de processos
Processo é uma estrutura de dados
■ Alocação estática: vetor de N
elementos do tipo PCB
■ Alocação dinâmica (e.g. malloc)
Os estados são filas de PCB
■ Fila de livres
■ Fila de aptos
■ Fila de execução
■ Fila de bloqueados
Eventos (arcos) realizam transição
de uma fila a outra
apto execução bloqueado criação término Fila de bloqueados Fila de aptos Fila “em execução” Interface genérica: Insere(fila, pid); Retira(fila, pid); Instituto d e Informática -UFRGS
Exemplo (simples) de implementação
Sistemas Operacionais 10 struct desc_proc{ char estado_atual; int pid; unsigned inicio_memoria; unsigned tamanho_mem; struct arq arq_abertos[20]; unsigned tempo_cpu;
unsigned proc_pc; unsigned proc_sp; unsigned proc_acc; unsigned proc_rx;
struct desc_proc *proximo; }
struct desc_proc
tab_desc[MAX_PROCESS];
struct desc_proc *desc_livre; struct desc_proc *espera_cpu; struct desc_proc *usando_cpu; struct desc_proc *bloqueados; /* Inicialização*/
for (i=0; i < MAX_PROCESS; i++) tab_desc[i].prox = &tab_desc[i+1]; tab_desc[i].prox = NULL; desc_livre = &tab_desc[0]; espera_cpu= NULL; usando_cpu= NULL; bloqueado = NULL;
Estrutura de dados Inicialização
Instituto
d
e Informática
-UFRGS
Estudo de caso: processos em Unix
Inicialização
Chamadas de sistema básicas
■ fork( )■ exec( ) : possui uma série de variantes ■ wait ( ) : possui uma série de variantes ■ exit ( )
Sistema conhecido como fork-exec
Todo processo tem um pai
■ A exceção (que confirma a regra) é o processo sched (pid=0) criado na
inicialização do sistema Sistemas Operacionais 11 Instituto d e Informática -UFRGS
Inicialização de uma máquina
Sistema de bootstraping
■ Carregar o sistema operacional e passar o controle para ele
■ Núcleo: tipicamente é uma imagem binária (e.g vmlinuz)
■ Programas de sistema: lidos do disco (precisa driver + sistema de arquivos)
Processador no processo de power-on ou reset
■ Inicia sempre no modo núcleo
■ Registrador PC recebe um valor específico ■ Corresponde ao endereço de uma ROM
■ Código de diagnóstico e reconhecimento dos dispositivos do sistema
■ Desvia para programa de carga
■ Sistemas embarcados: imagem do núcleo está em ROM ou EPROM ■ Sistemas convencionais: imagem do núcleo está no disco
Instituto d e Informática -UFRGS
Exemplo: mundo PC
Sistemas Operacionais 13 1. Diagnóstico e BIOS2. Desvio para o dispositivo de boot 3. Coloca carregador na RAM (eg.
Lilo, grub, carregador do Windows) 4. Passa o controle para o carregador 5. Carrega a imagem do núcleo 6. Passa controle para o núcleo
a. Inicializa sistema operacional b. Criação do primeiro processo c. Passa para modo usuário 7. Espera inicio de sessão de
trabalho
Master Boot Record - MBR
MBR
Carrega o carregador
Carrega o sistema operacional Carrega MBR
Os códigos são carregados na RAM para serem executados
Após o passo 7, só via chamada de sistema ou interrupção de hardware para passar para o modo núcleo.
Instituto d e Informática -U FRGS
Chamada de sistema fork
Criação de um processo
O processo filho é criado a “imagem e semelhança” do processo pai
■ Clone exato do espaço de endereçamento do pai■ Inclui a área de pilha e de dados (globais)
■ Otimização copy-and-write Sistemas Operacionais 14 fork( ) Ppai fork( ) Ppai fork( ) Pfilho Não executado
fork( ) tem dois retornos Pai pid do filho Filho zero Instituto d e Informática -UFRGS A . C arissimi -3-set -1 7
/* Orion Lawlor's Short UNIX Examples, [email protected] 2004/9/5 Shows how to use fork() in a UNIX program.
*/
#include <stdio.h> #include <stdlib.h> #include <unistd.h>
#include <sys/types.h> /* for pid_t */ #include <sys/wait.h> /* for wait */ void doWork(char *) {
snipped code }
int main() {
/*Spawn a new process to run alongside us.*/ pid_t pid=fork();
if (pid==0) { /* child process */ doWork("child"); exit(0); }
else { /* pid!=0; parent process */ doWork("parent");
waitpid(pid,0,0); /* wait for child to exit */ } return 0; } Instituto d e Informática -UFRGS
Chamada de sistema exec
Executada por um dos dois processos (pai ou filho) para substituir o
espaço de memória do processo por um novo
■ Tipicamente executado pelo filho
■ Carrega um arquivo binário (executável) na memória e inicia a execução dele
fork( ) Ppai fork( ) Ppai fork( ) exec()
Pfilho Novo Pfilho
Instituto d e Informática -UFRGS Sistemas Operacionais II 17 A . C arissimi -3-set -1 7
/* Orion Lawlor's Short UNIX Examples, [email protected] 2004/9/5 Shows how to fork()/exec() a child process, in this case
simply a shell. fork/exec is more complicated, but much more flexible and secure than using "system()" to run a process. */
#include <stdio.h> #include <stdlib.h>
#include <unistd.h> /* for fork */ #include <sys/types.h> /* for pid_t */ #include <sys/wait.h> /* for wait */ int main()
{
/*Spawn a child to run the program.*/ pid_t pid=fork();
if (pid==0) { /* child process */
static char *argv[]={"echo","Foo is my name.",NULL}; execv("/bin/echo",argv);
exit(127); /* only if execv fails */ }
else { /* pid!=0; parent process */
waitpid(pid,0,0); /* wait for child to exit */ } return 0; } Instituto d e Informática -UFRGS
Chamadas de sistema exit e kill
Chamada exit serve para terminar o processo
■ Possui um valor de retorno que é passado para seu processo pai ■ e.g.: exit(0); exit(-1)
Quando um processo termina, o núcleo libera os recursos usados
pelo processo
■ e.g.: memória física e virtual, arquivos abertos, buffers de E/S, PCB, etc
Um processo pode terminar outro processo usando a chamada kill
■ É um término involuntário causando por
■ Processo ultrapassou os recursos que poderia alocar ■ Tarefa que executa não é mais necessária
■ Processo pai está terminando e o filho não é autorizado a seguir sozinho ■ Realizou uma situação de erro (fatal)
Sistemas Operacionais 18 Instituto d e Informática -UFRGS
Término de processos em Unix
Processo em primeiro plano (foreground) ■ Interação com usuário
■ O término do pai, provoca término dos
filhos
Processo em segundo plano (background): ■ execução de tarefas concorrentes
(daemons)
■ No término do processo pai, o processo init “herda” os processos filhos
■ Processo init é a raiz da hierarquia e
é “imortal”
■ O init (pid=1) é criado pelo sched
(pid=0) Sistemas Operacionais 19 shell fork exec prog1 pid:424 pid:512 pid:512 shell Prog 1 shell fork exec prog1 pid:424 pid:512 pid:512 shell Prog 1 %prog1 & %prog1 Instituto d e Informática -UFRGS
Chamada de sistema wait
Empregada pelo processo pai para esperar a conclusão do
processo filho
Processo zumbi
■ Processo filho que já terminou, mas ainda existe na tabela de processos do
sistema até o processo pai recuperar seu código de saída (exit)
■ No momento que pai executa wait o PCB do filho é liberado
Sistemas Operacionais 20 fork( ) exec( ) wait( ) exit( ) Término pai pai filho (opcional) exit( ) Término filho
Instituto
d
e Informática
-UFRGS
Processos no sistema Windows
Procedimento similar ao mundo Unix, mas com particularidades
■ Processos são criados pela função CreateProcess( ) da API Win32■ Possui muitos parâmetros para descrever o comportamento do filho
■ Segurança, herança ou não recursos, código a ser executado, etc...
■ CreateProcess() é implementada por diferentes funções internas que
variam entre versões Windows
Quem executa Create pode passar o identificador de um processo
que será o processo pai do que está sendo criado
■ Quebra a noção de hierarquia de processos
■ Os processos Unix não “deserdam” seu filhos assim
Sistemas Operacionais 21 Instituto d e Informática -UFRGS
Leituras adicionais
Oliveira, R.; Carissimi, A.; Toscani, S.; Sistemas Operacionais (4aedição).
Série Livros Didáticos – INF/UFRGS – vol 11. Porto Alegre. Editora Bookman. 2010.
■ Capítulo 2 (seções 2.1 a 2.5) e Capítulo 4 (seção 4.1)
Silberchatz, A.; Galvin, P.; Gagne, G.; Operating System Concepts (8thed),
John Wiley & Sons, 2009. (ou edições anteriores)
■ Capítulo 3 (seção 3.1, 3.2 e 3.3)
Tanenbaum, A.;. Sistemas Operacionais Modernos (3aedição). São Paulo.
Editora Prentice-Hall, 2010. ■ Capítulo 2 (seção 2.1) 22 Sistemas Operacionais Instituto d e Informática -UFRGS
Espaço de endereçamento
Conjunto de endereços que um processo pode usar
■ Faixa de 0 a 2n-1, onde n é a capacidade de endereçamento do processador
Endereço de retorno Parâmetros de funções Variáveis locais Alocação dinâmica de memória Variáveis globais Código a ser executado PC SP Pilha Texto (código) Dados heap (monte) Espaço de endereçamento (lógico) 0 2n-1 Instituto d e Informática -UFRGS
Espaço de endereçamento e processo
Modelo teórico
■ Na prática, o processo ocupa apenas o necessário e compartilha a memória física através da noção de memória virtual (estudado mais tarde)
Para executar, um processo precisa estar na memória AND o
processador apontar para o seu espaço de endereçamento
PC SP Pilha Texto (código) Dados heap (monte) 0 2n-1 Pilha Texto (código) Dados heap (monte) 0 2n-1 Processo 1 Processo 2 Registradores físicos do processador
Instituto
d
e Informática
-UFRGS
Multiprogramação e chaveamento de contexto
Fornece a ilusão que executam simultaneamente, mas estão alternados
■ Exceção: se houver mais de uma CPU física (ou core)
Sistemas Operacionais 25
Escalonador sistema operacional ●●● PC SP P1 PC SP P2 PC SP Pn PC SP CPU virtual CPU física Chaveamento de contexto Sai Processo i SPi= SP PCi= PC Entra Processo j SP = SPj PC = PCj (há outras informações: GPRs, estados, etc que são salvos e recuperados) Instituto d e Informática -UFRGS
Modelo de três estados
Um processo passa a ter três estados básicos*:
■ Execução (running), bloqueado (blocked) e apto (ready)
Escalonamento
■ Política para decidir qual processo sai de ready para running ■ Define o momento de como e quando são feitos as trocas de contexto
Sistemas Operacionais * Modelo ainda está incompleto! Há mais estados!! 26
apto execução
bloqueado criação
término Solicitação de E/S ou sincronização A espera de:
Conclusão de E/S Sincronização Término de E/S ou ocorrência de
evento de sincronização A espera para usar a CPU