• Nenhum resultado encontrado

Sistemas Operacionais

N/A
N/A
Protected

Academic year: 2021

Share "Sistemas Operacionais"

Copied!
6
0
0

Texto

(1)

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 heap

tituto

d

Texto Dados (monte)

Ins

t

Aula 03

PC Texto (código) 0

Introduçã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

(2)

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 FRGS

executando e bloqueado

Término

■ Liberação do PCB rmática -U ■ Liberação do PCB

Processo = 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

(3)

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

(4)

/* 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

(5)

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

(6)

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

Referências

Documentos relacionados

Por meio do ordenamento dos ciclos de fácies, foram caracterizadas seis seqüências deposicionais, formadas por ciclos siliciclásticos regressivo-transgressivos, R-T (seqüências S1 e

Capítulo 7 – Novas contribuições para o conhecimento da composição química e atividade biológica de infusões, extratos e quassinóides obtidos de Picrolemma sprucei

Apresenta-se neste trabalho uma sinopse das espécies de Bromeliaceae da região do curso médio do rio Toropi (Rio Grande do Sul, Brasil), sendo também fornecida uma chave

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Demonstrou-se que ao utilizar um método usual para a escolha do MR, o controlador obtido tende a cancelar o polo do processo para a resposta à variação na referência,

Analysis of relief and toponymy of the landscape based on the interpretation of the military topographic survey: Altimetry, Hypsometry, Hydrography, Slopes, Solar orientation,

A assistência da equipe de enfermagem para a pessoa portadora de Diabetes Mellitus deve ser desenvolvida para um processo de educação em saúde que contribua para que a

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...