30
Sistemas Operativos: Processos Pedro F. Souto ([email protected]) March 22, 2011

Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto ([email protected]) March 22, 2011. Sumário Processos Conceito de Processo

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Sistemas Operativos: Processos

Pedro F. Souto ([email protected])

March 22, 2011

Page 2: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Sumário

ProcessosConceito de Processo SequencialMultiprogramaçãoChamadas ao SistemaRotinas AssíncronasImplementação de ProcessosLeitura Adicional

Page 3: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Processo (Sequencial)

Representa um programa em execução

int main(int argc, char *argv[], char* envp[])}

0x0

args

data

text

heap

stack

args Argumentos passados na linha decomando e variáveis de ambiente.

stack Registos de activação correspondenteà invocação de funções.

heap Dados alocados dinamicamente usandomalloc.

data Dados alocados estaticamente pelocompilador (p.ex. a string “Hello,World!”)

text Instruções do programa.

Page 4: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Stack

I Região de memória que “pode ser acedida apenas” numadas suas extremidades, usando as operações push e pop(Fig. 1).Stack Pointer

pop()push(n)

Stack PointerStack Pointer

Fig. 1

f()g()

h()

Fig. 2I Este tipo de acesso é particularmente adaptado para

implementar chamada a funções (Fig. 2).

Page 5: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Uso da stack em funções de C

I Em C, o compilador usa a stack para:I passar os argumentos;I guardar registos do processador;I guardar o endereço de retorno;I implementar as variáveis locais;I passar o valor de retorno;

duma função.I Cada compilador estabelece uma convenção sobre

como esta informação é guardada na stack : aestrutura correspondente designa-se por stack frameou activation record.

Page 6: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Stack Frame do 386

Page 7: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Unix/Linux são SOs multiprocesso (XP,Vista,...)

i02cu0108:~> ps ax | morePID TTY STAT TIME COMMAND1 ? S 0:05 init2 ? SW 0:00 [kflushd]3 ? SW 0:03 [kupdate]4 ? SW 0:00 [kpiod]5 ? SW 0:00 [kswapd]

82 ? S 0:00 /sbin/portmap139 ? S 0:00 /sbin/syslogd141 ? S 0:00 /sbin/klogd147 ? S 0:00 /sbin/rpc.statd149 ? SW 0:00 [lockd]150 ? SW 0:00 [rpciod]158 ? S 0:00 /usr/sbin/ypbind

--more (63)

SOs suportam múltiplos processos (multiprogra-mação) por razões de eficiência, conveniência eimpaciência.

Page 8: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Multi-processo e eficiência

Problema processos precisam de aceder a dispositivosperiféricos de entrada e saída de dados (consola,i.e. o monitor e o teclado, rato, disco, modem,placa de rede, etc):Parâmetro TempoCiclo do CPU 1 ns (1 GHz)Acesso à cache ~ 2nsAcesso à memória ~10 nsAcesso ao disco ~10 ms

Solução quando um processo inicia uma operação deentrada/saída de dados e fica à espera que elatermine, o sistema operativo atribui o processadora outro processo:

quando a operação terminar o periférico gera umainterrupção

Page 9: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Multi-processo e conveniência

I Utilizadores frequentemente necessitam de usar diferentesprogramas “ao mesmo tempo”.

I A “especialização” dos programas facilita:I o seu desenvolvimento;I a sua reutilização.

I Quanto a impaciência . . .

Page 10: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Execução multi-processo (1/2)

I Em sistemas multiprocessador (i), vários processos podemexecutar ao mesmo tempo: um em cada processador.

I Num sistema uniprocessador (ii), o sistema operativo gerea atribuição do processador aos diferentes processos (oprocessador é um recurso partilhado pelos diferentesprocessos): pseudo-paralelismo.

P1

CPU1

MEM

P1

CPU2

P1

CPU4

P1

CPU3

(i)

P1

P3

P4

P2

t(ii)

Page 11: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Execução multi-processo (2/2)

A

B

C

D

D

C

B

A

Process switch

One program counterFour program counters

Pro

cess

Time

B C DA

(a) (b) (c)

I O computador é partilhado por 4 processos;I O SO dá a ilusão de que cada processo executa

isoladamente num CPU, i.e. cada processo executa numCPU virtual.

Page 12: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Estados dum ProcessoI Ao longo da sua existência um processo pode estar em 1

de 3 estados:

running

waitingready

1

2

3

4

1. CPU atribuído ao processo (pelo SO);

2. CPU removido do processo (pelo SO);

3. processo bloqueia à espera dum evento;

4. ocorrência do evento esperado.

execução(running): o CPU está a executar as instruçõesdo processo;

bloqueado(waiting): o processo está à espera de umevento externo (tipicamente, o fim de umaoperação de E/S) para poder prosseguir;

pronto(ready): o processo está à espera do CPU, oqual está a executar instruções de outroprocesso.

Page 13: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Processos: Segurança

Espaço de endereçamento disjunto Por omissão o espaço deendereçamento dum processo é disjunto do dos restantesprocessos, e do espaço de endereçamento do kernel

Associação a um utilizador Cada processo está associado aum utilizador, o seu dono, podendo executar apenas asoperações permitidas ao seu dono

Chamadas ao sistema O acesso a recursos do SO e ao HW émediado pelo kernel.

Page 14: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Criação de Processos

I Durante o arranque do SO:I Normalmente estes processos são não -interactivos e

designam-se por daemons:I Alguns executam sempre em kernel space, p.ex. kswapd;I Outros executam normalmente em user space, p.ex. o

servidor de HTTP (Web) e o servidor de impressão.I Em alguns SOs, conhecidos por microkernel, diferentes

serviços são fornecidos por processos especializados.

I Por invocação da chamada ao sistema apropriada.

Page 15: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Criação de Processos em Unix/Linux

#include <unistd.h>pid_t fork(void); /* clones the calling process */

I O processo criado (filho):I executa o mesmo programa que o programa pai;I inicia a sua execução na instrução que segue a fork().

I O processo filho herda do pai:I o ambiente e “privilégios de acesso a recursos”;I alguns recursos, incluindo ficheiros abertos.

I Contudo, o processo filho tem os seus própriosI identificador;I espaço de endereçamento:

após a execução de fork(), alterações à memóriapelo pai não são visíveis ao filho e vice-versa.

Page 16: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Criação de Processos em Unix/Linux (cont.)

Problema: Como é que se distingue o processo pai doprocesso filho?

Solução: fork() retorna:I o pid do filho ao processo pai;I 0 ao processo filho.

if( (pid = fork()) != 0 ) {parent(); /* this is executed by the parent */

} else {child(); /* and this by its child */

}

Page 17: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Hierarquia de processos em Unix/Linux

P1 P1

P2 P3

P4 P5 P6

P2

P3

I Em Unix/Linux há uma relação especial :I entre o processo pai e os seus filhos;I entre processos que têm um pai comum (grupo de

processos).

Page 18: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

pstree

init-+--acpid+--atd+--battstat-applet+--bonobo-activati----{bonobo-activati}+--cron+--cupsd+--2*[dbus-daemon]+--dbus-launch+--dd+--events/0+--firefox-bin-+-acroread| +-7*[{firefox-bin}]+--gconfd-2+--gdm---gdm-+-Xorg| +-x-session-manag-+-gnome-cups-icon| +-gnome-panel---{gnome-panel}| +-gnome-terminal-+-6*[bash]| | +-bash---pstree

[...] [...] [...]

Page 19: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Execução de programasProblema: Como é que um processo pode executar um

programa diferente do do pai?Solução: Usando a chamada ao sistema execve()

#include <unistd.h>int execve(const char* filename, char *const argv[],

char *const envp[])

0x0 0x0text1

data1

args1stack1

heap1

args2stack2

heap2

data2

text2

I Substitui o programa em execução pelo contido emfilename;

I argv e envp permitem especificar os argumentos apassar à função main() do programa a executar.

Page 20: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Terminação de Processos

I Um processo pode terminar por várias causas:1. decisão do próprio processo, executando a chamada ao

sistema apropriada (directa ou indirectamente, p.ex. porretorno de main());

2. erro causado pelo processo, normalmente devido a umbug, p.ex. divisão por zero ou acesso a uma região dememória que não lhe foi atribuída;

3. decisão de outro processo, executando a chamada aosistema apropriada (kill em POSIX);

4. decisão do SO (falta de recursos).

I Note-se que um processo pode terminarvoluntáriamente quando detecta um erro, p.ex. umcompilador não pode compilar um ficheiro que nãoexiste.

Page 21: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Mais chamadas ao sistema

#include <unistd.h>void exit(int status)void _exit(int status)pid_t getpid()pid_t getppid()

I _exit() termina o processo que a invoca;I exit() é uma função da biblioteca C (deve usar-se com#include <stdlib.h>):

I invoca as funções registadas usando at_exit();I invoca a chamada ao sistema _exit().

I Após retornar de main(), um processo invoca exit().I getpid() retorna o pid do processo que o invoca.I getppid() retorna o pid do processo pai.

Page 22: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Sincronização com wait()

#include <sys/types.h>#include <sys/wait.h>pid_t wait(int *status)pid_t waitpid(pid_t pid, int *status, int options);

I Suspende a execução do processo até:I um processo filho terminar (wait());I o processo filho especificado em pid terminar

(waitpid());I status permite obter informação adicional sobre o

processo que terminou. Nomeadamente, o argumentocom que invocou a função exit().

I options controla o modo de funcionamento dewaitpid().

Page 23: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Sincronização com wait(): exemplo

...int status;pid_t pid;...if( (pid = wait(&status)) != -1 ) {

if( WIFEXITED(status) != 0 ) {printf(‘‘Process %d exited with status %d\n’’,

pid, WEXITSTATUS(status));} else {

printf(‘‘Process %d exited abnormally\n’’, pid);}

}

Page 24: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Eventos Assíncronos em Processos (Sequenciais)Eventos Assíncronos (Sinais em Unix/Linux)

Excepções p.ex. divisão por 0, tentativa de acesso a umaposição de memória não válida

Notificação de eventos pelo SO, p.ex., fim duma temporizaçãoou da terminação dum processo filho, pressão dum conjuntode teclas

Comunicação entre processos Em Unix/Linux é possível umprocesso notificar um outro processo do mesmo dono

Processamento de Eventos Assíncronos

Signal Handlers são as rotinas de processamento de sinaisI Têm que ser registadas no kernel usando uma

chamada ao sistemaI Executam assincronamente ao código do processo

(semelhante às rotinas de serviço de interrupção)

Page 25: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Implementação de Processos

I O SO tem que manter para cada processo algumainformação numa estrutura de dados conhecida porprocess control block (PCB).

I O PCB inclui, entre outra informação:I O identificador do processo.I O estado do processo (READY,RUN,WAIT).I O evento pelo qual o processo está à espera, se algum.I O estado do CPU (PC, SP e outros registos), quando o SO

o retirou do processo, i.e. saiu do estado running.I As credenciais do processo (incluindo o owner ).I Informação sobre a memória usada pelo processo.I Informação sobre outros recursos usados (p.ex. ficheiros)

pelo processo e o estado desses recursos.

I Os PCBs de todos os processos constituem umaestrutura de dados conhecida por process table.

Page 26: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Comutação de Processos (1/3)

I A comutação entre processos (process switching),consiste em retirar o CPU a um processo e atribuí-lo aoutro.

I É uma função fundamental do kernel em SO multiprocesso.I A comutação entre processos inclui:

1. Transferir o estado do processo em execução para amemória (o Process Control Block );

2. Carregar o processador com o estado do processo quepassa para o estado de execução;

I Passar o controlo para o novo processo, possivelmentecomutando para user-mode.

Page 27: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Comutação de Processos (2/3)

I P0 está no estado RUN e passa para o estado READY :

P1

queue head

null

P2 P3P0CPU

P1CPU P0

null

queue head

P2 P3

Page 28: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Comutação de Processos (3/3)

I A parte do SO que faz a comutação de processosdesigna-se por despacho (dispatcher).

I A comutação entre processos é feita em instantes"oportunos", incluindo:

I chamadas ao sistema (p.ex., exit(), read());I interrupções:

I por dispositivos de E/S;I pelo relógio.

Page 29: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Processamento de Interrupções

Depende do hardware e do SO1. O hardware salva o estado do CPU na stack2. O hardware carrega o PC com o vector de interrupção3. A rotina em assembly guarda registos que o hardware não

tenha salvadoI Primeira parte da comutação de processos

4. A rotina em assembly inicializa uma stack para servir ainterrupção (por razões de segurança)

5. A interrupção é servida por uma rotina normalmente em C6. O despacho é executado para comutar o processo, se

necessárioI Tipicamente, a interrupção altera o estado dum processo

de WAIT para READY

7. A rotina em assembly reinicia o (?novo?) processoI Segunda parte da comutação de processos

Page 30: Sistemas Operativos: Processospfs/aulas/so1011/at/4proc.pdf · Sistemas Operativos: Processos Pedro F. Souto (pfs@fe.up.pt) March 22, 2011. Sumário Processos Conceito de Processo

Leitura Adicional

I Secções 2 e 2.1 deModern Operating Systems, 2nd Ed.

I Secções 3.1, 3.2, 3.3, 3,4 e 3.6 deJosé Alves Marques e outros, Sistemas Operativos,FCA - Editora Informática, 2009

I Outra documentação (transparências e enunciadosdos TPs):via http://web.fe.up.pt/~pfs/