Si t
O
i
i
F
RGS
Sistemas Operacionais
c
a
-U
F
Processos
I l
t ã
t d d
o
rmáti
c
Implementação e estudo de casos
Pilha 2n-1
d
e Inf
o
SP Pilha heaptituto
d
Texto Dados (monte)Ins
t
Aula 03
PC Texto (código) 0Introdução
ç
Os processos são criados por ações do sistema operacional ou de
outros processo
Ch d d i t f õ ífi
■ Chamada de sistema ou funções específicas
■ Possuem um ciclo de vida: criação-execução-término
Cada processo possui
U
FRGS
Cada processo possui
■ Uma identificação única: Process Identifier (pid)
■ serve para “rastrear e monitorar” as atividades e demandas de um
rmática
-U p
processo em particular
■ Um PCB (Process Control Block) ou descritor de processo
u
to de
Info
O sistema operacional mantém uma tabela de processos
■ Uma lista (vetor) de descritores de processos (PCB)
Instit
u
Sistemas Operacionais 2
Criação e término: situação genérica
ç
ç g
Criação
■ Inicialização do sistema
E i t b t h (l t ) l i i i d t f
■ 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
U
FRGS
■ Requisição explícita do usuário via linha de comando ou cliques em ícones
em uma interface gráfica
Término
rmática
-U
■ Normal (voluntária)
■ Consequência de uma rotina de tratamento de erro (voluntária)
E f t l (i l tá i )
u
to de
Info ■ Erro fatal (involuntária)
■ Cancelamento (involuntário) Efeito colateral: o que fazer com os processos
que, eventualmente, foram criados pelo que
Instit
u
Sistemas Operacionais 3
q , , p q
termina?
Relacionamento entre processos
p
Processos independentes
■ Não apresentam relacionamentos com outros processos
Grupo de processos
■ Apresentam algum tipo de relacionamento
e g filiação
U
FRGS
■ e.g. filiação
■ Podem compartilhar recursos
■ Definição de hierarquia de processos
rmática -U 4 ç q p u to de Info issimi -8-août -1 Instit u Sistemas Operacionais 4 A. Car
Hierarquia de processos
q
p
Processo criador (pai) e processo criado (filho)
■ Um processo tem um único pai
Um processo filho pode criar outros processos filhos
■ Um processo filho pode criar outros processos filhos
■ Gera uma hierarquia
Representação através de uma árvore
U
FRGS
p ç
■ Evolução dinâmica
O que fazer na destruição de um processo?
rmática
-U
4
■ Toda a descendência “morre”
■ A descendência é herdada pelo processo “avô”
Postergar a destruição efetiva do processo pai até
u
to de
Info
issimi -8-août
-1 ■ Postergar a destruição efetiva do processo pai até
que os todos processos filhos terminem
Instit
u
Sistemas Operacionais 5
A. Car
Criação, execução e término de processos
ç ,
ç
p
Criação de um processo
■ Significa alocar um PCB para ele e inicializar adequadamente
U PCB (d it d ) t t d d d
■ Um PCB (descritor de processo) = estrutura de dados
Durante sua existência o processo passa pelos estados apto,
executando e bloqueado
U FRGSexecutando e bloqueado
Término
■ Liberação do PCB rmática -U ■ Liberação do PCBProcesso = Código + Pilha + Dados + heap + recursos + estado da CPU + pid
u to de Info g p p PCB Espaço de endereçamento Instit u Sistemas Operacionais 6
Princípio básico de implementação de processos
p
p
ç
p
Processo é uma estrutura de dados
■ Alocação estática: vetor de N
elementos do tipo PCBp criação Fila
■ Alocação dinâmica (e.g. malloc)
Os estados são filas de PCB
Fil d li apto execução término Fila de “em execução” U FRGS ■ Fila de livres ■ Fila de aptos
■ Fila de execução bloqueado
Fila de aptos rmática -U 14 ■ Fila de bloqueados
Eventos (arcos) realizam transição
de uma fila a outra
bloqueado Fila de bloqueados u to de Info rissimi -8-août
-1 de uma fila a outra
Interface genérica: Insere(fila, pid); Retira(fila, pid); Instit u A. Ca
Exemplo (simples) de implementação
p (
p )
p
ç
struct desc_proc{
char estado atual;
struct desc_proc *desc_livre; struct desc proc *espera cpu;
Estrutura de dados Inicialização
char estado atual; int prioridade; unsigned inicio_memoria; unsigned tamanho_mem; struct arq arq abertos[20];
struct desc proc *espera cpu; struct desc_proc *usando_cpu; struct desc_proc *bloqueados; /* Inicialização*/
U
FRGS
struct arq arq abertos[20]; unsigned tempo_cpu;
unsigned proc_pc; unsigned proc_sp; unsigned proc acc;
/* Inicialização*/
for (i=0; i < MAX_PROCESS; i++) tab_desc[i].prox = &tab_desc[i+1];
rmática
-U unsigned proc acc; unsigned proc_rx;
struct desc_proc *proximo; }
tab_desc[i].prox = NULL; desc_livre = &tab_desc[0]; espera cpu= NULL;
u
to de
Info struct desc_proc
tab_desc[MAX_PROCESS];
espera cpu= NULL; usando_cpu= NULL; bloqueado = NULL;
Instit
Estudo de caso: processos em Unix
p
Inicialização
Chamadas de sistema básicas
■ fork( )
■ exec( ) : possui uma série de variantes
wait ( ) : possui uma série de variantes
U
FRGS
■ wait ( ) : possui uma série de variantes
■ exit ( )
Sistema conhecido como fork-exec
rmática
-U
Sistema conhecido como fork exec
Todo processo tem um pai
■ A exceção (que confirma a regra) é o processo sched (pid=0) criado na
u
to de
Info
■ A exceção (que confirma a regra) é o processo sched (pid 0) criado na
inicialização do sistema
Instit
u
Sistemas Operacionais 9
Inicialização de uma máquina
ç
q
Sistema de bootstraping
■ Carregar o sistema operacional e passar o controle para ele
Nú l ti i t é i bi á i ( li )
■ 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
U
FRGS
Processador no processo de power-on ou reset
■ Inicia sempre no modo núcleo
■ Registrador PC recebe um valor específico
rmática
-U g p
■ Corresponde ao endereço de uma ROM
■ Código de diagnóstico e reconhecimento dos dispositivos do sistema
u
to de
Info ■ 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
Instit
u ■ Sistemas convencionais: imagem do núcleo está no disco
Sistemas Operacionais 10
Exemplo: mundo PC
p
1. Diagnóstico e BIOS
2. Desvio para o dispositivo de boot 3 Coloca carregador na RAM (eg MBR
Carrega MBR
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 MBR
Carrega o carregador
U
FRGS
5. Carrega a imagem do núcleo 6. Passa controle para o núcleo
a. Inicializa sistema operacional b. Criação do primeiro processo Carrega o sistema
operacional
rmática
-U ç p p
c. Passa para modo usuário 7. Espera inicio de sessão de
trabalho
u
to de
Info Master Boot Record - 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
Instit
u
Sistemas Operacionais 11
Após o passo 7, só via chamada de sistema ou interrupção de hardware para passar para o modo núcleo.
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
U
FRGS
■ Otimização copy-and-write
Ppai Ppai Pfilho
Não
rmática
-U
fork( ) fork( ) fork( )
Não executado
fork( ) tem dois retornos
u
to de
Info
fork( ) tem dois retornos Pai
id d filh Filho
Instit
u
Sistemas Operacionais 12
/* Orion Lawlor's Short UNIX Examples, olawlor@acm.org 2004/9/5 Shows how to use fork() in a UNIX program
Shows how to use fork() in a UNIX program. */
#include <stdio.h> #include <stdlib.h> #include <unistd h> #include <unistd.h>
#include <sys/types.h> /* for pid_t */ #include <sys/wait.h> /* for wait */ void doWork(char *) { void doWork(char ) { snipped code } int main() U FRGS int main() {
/*Spawn a new process to run alongside us.*/ pid_t pid=fork();
if (pid==0) { /* child process */
rmática
-U
4
if (pid==0) { / child process / doWork("child"); exit(0); }
else { /* pid!=0; parent process */
u
to de
Info
issimi -8-ago-1
4 else { / pid!=0; parent process /
doWork("parent");
waitpid(pid,0,0); /* wait for child to exit */ } return 0; Instit u Sistemas Operacionais II 13 A. Car return 0; }
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
Ti i t t d l filh
■ Tipicamente executado pelo filho
■ Carrega um arquivo binário (executável) na memória e inicia a execução dele
U
FRGS Ppai Ppai Pfilho Novo Pfilho
rmática
-U
fork( ) fork( ) fork( )
exec() código u to de Info exec() Instit u Sistemas Operacionais 14
/* Orion Lawlor's Short UNIX Examples olawlor@acm org 2004/9/5 / Orion Lawlor s Short UNIX Examples, olawlor@acm.org 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 <unistd.h> / for fork / #include <sys/types.h> /* for pid_t */ #include <sys/wait.h> /* for wait */ int main()
U
FRGS
int main() {
/*Spawn a child to run the program.*/ pid_t pid=fork();
if (pid==0) { /* child process */
rmática
-U
4
if (pid==0) { / child process /
static char *argv[]={"echo","Foo is my name.",NULL}; execv("/bin/echo",argv);
exit(127); /* only if execv fails */ } u to de Info issimi -8-ago-1 4 }
else { /* pid!=0; parent process */
waitpid(pid,0,0); /* wait for child to exit */ } return 0; Instit u A. Car return 0; }
Chamadas de sistema exit e kill
Chamada exit serve para terminar o processo
■ Possui um valor de retorno que é passado para seu processo pai
it(0) it( 1)
■ e.g.: exit(0); exit(-1)
Quando um processo termina, o núcleo libera os recursos usados
pelo processo
U
FRGS
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
rmática
-U
Um processo pode terminar outro processo usando a chamada kill
■ É um término involuntário causando por
■ Processo ultrapassou os recursos que poderia alocar
u
to de
Info ■ Tarefa que executa não é mais necessária
■ Processo pai está terminando e o filho não é autorizado a seguir sozinho
R li it d (f t l)
Instit
u
Término de processos em Unix
p
%prog1
Processo em primeiro plano (foreground)
■ Interação com usuário
O término do pai provoca término dos
fork
pid:512 shell
%prog1
■ O término do pai, provoca término dos
filhos
Processo em segundo plano (background):
shell exec prog1 pid:424
pid:512 Prog 1
U
FRGS
■ execução de tarefas concorrentes
(daemons)
No término do processo pai o processo
pid:512
% 1 &
rmática
-U ■ No término do processo pai, o processo
init “herda” os processos filhos
■ Processo init é a raiz da hierarquia e fork
pid:512 shell
%prog1 &
u
to de
Info é “imortal” shell exec prog1
pid:424 Prog 1 Instit u Sistemas Operacionais 17 pid:512 Prog 1
Chamada de sistema wait
Empregada pelo processo pai para esperar a conclusão do
processo filho
Término pai fork( ) wait( ) Término pai pai exit( ) U FRGS ( ) exec( ) exit( ) filho rmática -U Processo zumbi
(opcional) Término filho
u
to de
Info ■ 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
Instit
u ■ No momento que pai executa wait o PCB do filho é liberado
Sistemas Operacionais 18
Processos no sistema Windows
Procedimento similar ao mundo Unix, mas com particularidades
■ Processos são criados pela função CreateProcess( ) da API Win32
P i it â t d t t d filh
■ 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
U
FRGS
■ CreateProcess() é implementada por diferentes funções internas que
variam entre versões Windows
Quem executa Create pode passar o identificador de um processo
rmática
-U
que será o processo pai do que está sendo criado
■ Quebra a noção de hierarquia de processos
Os processos Uni não “deserdam” se filhos assim
u
to de
Info
■ Os processos Unix não “deserdam” seu filhos assim
Instit
u
Sistemas Operacionais 19
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
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),
U
FRGS
g g y ( )
John Wiley & Sons, 2009. (ou edições anteriores)
■ Capítulo 3 (seção 3.1, 3.2 e 3.3)
T b A Si t O i i M d (3a di ã ) Sã P l
rmática
-U Tanenbaum, A.;. Sistemas Operacionais Modernos (3aedição). São Paulo.
Editora Prentice-Hall, 2010. ■ Capítulo 2 (seção 2.1) u to de Info p ( ç ) Instit u 20 Sistemas Operacionais
Espaço de endereçamento
p ç
ç
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 2n-1 U FRGS ç Variáveis locais Alocação dinâmica SP Pilha heap Espaço de rmática -U Alocação dinâmica de memória Variáveis globais Dados heap (monte) Espaço de endereçamento (lógico) u to de
Info PC Texto Código a ser executado
(código) 0
Instit
u
Sistemas Operacionais 21
Espaço de endereçamento e processo
p ç
ç
p
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) 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
U
FRGS
processador apontar para o seu espaço de endereçamento
Pilha 2n-1 Pilha 2n-1 Processo 1 Processo 2 rmática -U SP Pilha heap (monte) Pilha heap (monte) Registradores u to de Info PC Texto Dados (monte) Texto Dados (monte) físicos do processador Instit u Sistemas Operacionais 22 PC (código) 0 (código) 0
Multiprogramação e chaveamento de contexto
p g
ç
●●● P1 P2 Pn Chaveamento de contexto Sai Processo i SP SP SP CPU i t l SPi= SP PCi= PC U
FRGS Escalonador sistema operacional
PC PC PC
virtual Entra Processo j
SP = SPj PC = PCj
rmática
-U Escalonador sistema operacional
SP CPU
(há outras informações: GPRs, estados, etc que são salvos e recuperados)
u
to de
Info
Fornece a ilusão que executam simultaneamente, mas estão alternados
PC física
Instit
u
■ Exceção: se houver mais de uma CPU física (ou core)
Sistemas Operacionais 23
Modelo de três estados
Um processo passa a ter três estados básicos*:
■ Execução (running), bloqueado (blocked) e apto (ready)
apto execução criação término Trocas de contexto U FRGS
apto execução término
Solicitação de E/S ou sincronização Término de E/S ou ocorrência de
A espera para usar a CPU
rmática
-U
bloqueado A espera de: Conclusão de E/S Término de E/S ou ocorrência de
evento de sincronização
u
to de
Info
Escalonamento
■ Política para decidir qual processo sai de ready para running
Sincronização
Instit
u p q p y p g
■ Define o momento de como e quando são feitos as trocas de contexto