Você está na página 1de 45

Sistemas Operacionais com Java

Captulo 4: Gerncia de Processos


Conceito de Processo Escalonamento de Processos Operaes sobre Processos Processos Cooperantes Comunicao entre Processos Comunicao em Sistemas Cliente-Servidor

Sistemas Operacionais com Java

Conceito de Processo

Um sistema operacional executa uma variedade de programas: Sistemas Batch tarefas Sistemas de tempo compartilhado programas de usurio ou tarefas O livro texto usa os termos tarefa e processo quase que indistintamente Processo um programa em execuo A execuo do processo precisa ocorrer de maneira seqencial Um processo inclui: contador de programa pilha seo de dados

Sistemas Operacionais com Java

Estado do Processo

Conforme um processo executado, ele muda de estado novo: O processo est sendo criado executando: As instrues esto sendo executadas esperando: O processo est esperando que ocorra algum evento pronto: O processo est esperando para ser atribudo a um processador terminado: O processo terminou sua execuo

Sistemas Operacionais com Java

Diagrama de Estado do Processo

Sistemas Operacionais com Java

Bloco de Controle de Processo (Process Control Block)


Informaes associadas a cada processo Estado do processo Contador de programa Registradores da CPU Informao de escalonamento de CPU Informao de gerenciamento de memria Informao contbil Informao de status de E/S

Sistemas Operacionais com Java

Bloco de Controle de Processo (Process Control Block)

Sistemas Operacionais com Java

Troca da CPU de um Processo para Outro

Sistemas Operacionais com Java

Filas de Escalonamento de Processo

Fila de tarefas (Job Queue) conjunto de todos os processos no sistema Fila de prontos (Ready Queue) conjunto de todos os processos residindo na memria principal que esto prontos e esperando para serem executados Fila de dispositivo (Device Queue) conjunto dos processos esperando um dispositivo de E/S Migrao de processo entre as diversas filas

Sistemas Operacionais com Java

Fila de Prontos e Vrias Filas de Dispositivo de E/S

Sistemas Operacionais com Java

Representao do Escalonamento de Processos

10

Sistemas Operacionais com Java

Escalonadores

Escalonador de longo prazo (ou escalonador de tarefas) seleciona os processos que devem ser trazidos para a fila de prontos Escalonador de curto prazo (ou escalonador de CPU) seleciona os processos que devem ser executados em seguida e aloca a CPU

11

Sistemas Operacionais com Java

Acrscimo do Escalonamento de Mdio prazo

12

Sistemas Operacionais com Java

Escalonadores

O escalonador de curto prazo chamado freqentemente (milissegundos) precisa ser veloz O escalonador de mdio prazo chamado raramente (segundos ou minutos) pode ser lento O escalonador de longo prazo controla o grau de multiprogramao Os processos podem ser descritos como: Processos I/O-Bound gasta mais tempo realizando E/S do que clculos; muitos surtos de CPU curtos Processos CPU-Bound gasta mais tempo realizando clculos; poucos surtos de CPU muito longos
13

Sistemas Operacionais com Java

Troca de Contexto

Quando a CPU passa para outro processo, o sistema precisa salvar o estado do processo antigo e carregar o estado salvo do novo processo O tempo da troca de contexto custo adicional; o sistema no realiza qualquer trabalho til durante a troca O tempo depende do suporte do hardware

14

Sistemas Operacionais com Java

Criao de Processo

Os processos pai criam processos filhos, que, por sua vez, criam outros processos, formando uma rvore de processos Compartilhamento de recursos Pai e filhos compartilham todos os recursos Filhos compartilham um subconjunto dos recursos do pai Pai e filho no compartilham recurso algum Execuo Pai e filhos so executados concorrentemente Pai espera at que os filhos terminem
15

Sistemas Operacionais com Java

Criao de Processo

Espao de endereos Cpia filha do processo pai Filho contm um programa carregado Exemplos do UNIX Chamada de sistema fork cria novo processo Chamada de sistema exec usada aps um fork para substituir o espao de memria do processo por um novo programa

16

Sistemas Operacionais com Java

Programa em C criando um processo separado


#include <stdio.h> #include <unistd.h> int main(int argc, char **argv) { int pid; /* cria outro processo */ pid = fork(); if (pid < 0) { /* ocorreu erro na execuo do Fork */ fprintf(stderr, Falha no Fork "); exit(-1); } else if (pid == 0) { /* processo filho */ execlp("/bin/ls","ls",NULL); exit(1); } else { /* processo pai */ wait(NULL); /* pai espera o trmino do filho */ printf(Filho terminou "); exit(0); } }

17

Sistemas Operacionais com Java

rvore de Processos no UNIX

18

Sistemas Operacionais com Java

Trmino de processo

O processo executa sua instruo final e pede ao sistema operacional que o termine (exit()) Envia os dados de sada do filho para o pai (atravs do wait()) Os recursos do processo so desalocados pelo sistema operacional

19

Sistemas Operacionais com Java

Trmino de processo

O pai pode terminar a execuo dos processos filhos (abort()) O filho excedeu os recursos alocados A tarefa atribuda ao filho no mais necessria Se o pai est terminando Alguns sistemas operacionais no permitem que o filho continue se seu pai tiver terminado
Todos os filhos terminaram trmino em

cascata

20

Sistemas Operacionais com Java

Processos Cooperantes

Um processo independente no pode afetar ou ser afetado pela execuo de outro processo Um processo cooperante pode afetar ou ser afetado pela execuo de outro processo Vantagens da cooperao de processos Compartilhamento de informaes Agilidade na computao Modularidade Convenincia

21

Sistemas Operacionais com Java

Problema Produtor-Consumidor

Paradigma para os processos cooperativos, um processo produtor gera informaes que so consumidas por um processo consumidor O buffer ilimitado (unbounded-buffer) no coloca qualquer limite prtico no tamanho do buffer O buffer limitado (bounded-buffer) considera que existe um tamanho de buffer fixo

22

Sistemas Operacionais com Java

Buffer Limitado Soluo para Memria Compartilhada


public interface Buffer { // produtores chamam este mtodo public abstract void insert(Object item); // consumidores chamam este mtodo public abstract Object remove(); }

23

Sistemas Operacionais com Java

Buffer Limitado Soluo para Memria Compartilhada


import java.util.*; public class BoundedBuffer implements Buffer { private static final int BUFFER_SIZE = 5; private int count;// nmero de itens no buffer private int in; // aponta para prxima posio livre private int out; // aponta prxima posio cheia private Object[] buffer; public BoundedBuffer() { // buffer inicialmente est vazio count = 0; in = 0; out = 0; buffer = new Object[BUFFER_SIZE]; } // produdores chamam esse mtodo public void insert(Object item) { // Slide 4.24 } // consumidores chamam esse mtodo public Object remove() { // Figura 4.12 } }

24

Sistemas Operacionais com Java

Buffer Limitado Mtodo insert()


public void insert(Object item) { while (count == BUFFER SIZE) ; // no faz nada -- nenhum buffer livre ++count; // acrescenta um item ao buffer buffer[in] = item; in = (in + 1) % BUFFER SIZE; }

25

Sistemas Operacionais com Java

Buffer Limitado Mtodo remove()


public Object remove() { Object item; while (count == 0) ; // no faz nada -- nada para consumir --count; // remove um item do buffer item = buffer[out]; out = (out + 1) % BUFFER SIZE; return item; }

26

Sistemas Operacionais com Java

Comunicao Entre Processos (Interprocess Communication - IPC)


Mecanismo para que os processos se comuniquem e sincronizem suas aes Sistema de mensagens Os processos se comunicam entre si sem recorrer s variveis compartilhadas O recurso de IPC oferece duas operaes: send(mensagem) tamanho de mensagem fixo ou varivel receive(mensagem)

27

Sistemas Operacionais com Java

Comunicao Entre Processos (Interprocess Communication - IPC)


Se P e Q desejam se comunicar, eles precisam: estabelecer um enlace de comunicao entre eles trocar mensagens atravs de send/receive Implementao do enlace de comunicao fsico (memria compartilhada, barramento do hardware) lgico (propriedades lgicas)

28

Sistemas Operacionais com Java

Questes de Implementao

Como os enlaces so estabelecidos? Um enlace pode ser associado a mais de dois processos? Quantos enlaces podem existir entre cada par de processos de comunicao? O que a capacidade de um enlace? O tamanho de uma mensagem que o enlace pode acomodar fixo ou varivel? Um enlace unidirecional ou bidirecional?

29

Sistemas Operacionais com Java

Comunicao Direta
Os processos precisam nomear explicitamente um ao outro: send (P, mensagem) envia uma mensagem ao processo P receive(Q, mensagem) recebe uma mensagem do processo Q Propriedades do enlace de comunicao Os enlaces so estabelecidos automaticamente Um enlace associado a exatamente um par de processos de comunicao Entre cada par existe exatamente um enlace O enlace pode ser unidirecional, mas normalmente bidirecional

30

Sistemas Operacionais com Java

Comunicao Indireta
As mensagens so enviadas e recebidas a partir de caixas de correio (tambm chamadas de portas) Cada caixa de correio possui uma identificao exclusiva Os processos s podem se comunicar se tiverem uma caixa de correio compartilhada Propriedades de um enlace de comunicao Um enlace estabelecido apenas se os processos compartilharem uma caixa de correio Um enlace pode ser associado a muitos processos Cada par de processos pode compartilhar vrios enlaces de comunicao O enlace pode ser unidirecional ou bidirecional

31

Sistemas Operacionais com Java

Comunicao Indireta
Operaes criar uma nova caixa de correio enviar e receber mensagens atravs da caixa de correio excluir uma caixa de correio As primitivas so definidas como: send(A, mensagem) enviar uma mensagem caixa de correio A receive(A, mensagem) receber uma mensagem da caixa de correio A

32

Sistemas Operacionais com Java

Comunicao Indireta

Compartilhamento de caixa de correio P1, P2 e P3 compartilham a caixa de correio A P1, envia; P2 e P3 recebem Quem ficar com a mensagem? Solues Permitir que um enlace seja associado a, no mximo, dois processos Permitir que apenas um processo por vez execute uma operao receive Permitir que o sistema selecione arbitrariamente o receptor. O emissor notificado de quem foi o receptor.

33

Sistemas Operacionais com Java

Sincronismo

A troca de mensagens pode ser bloqueante ou no bloqueante Bloqueante considerada sncrona No send bloqueante, o emissor bloqueado at que a mensagem seja recebida No receive bloqueante, o receptor bloqueado at que uma mensagem esteja disponvel No bloqueante considerada assncrona No send no bloqueante, o emissor envia a mensagem e continua No receive no bloqueante, o receptor recebe uma mensagem vlida ou um nulo

34

Sistemas Operacionais com Java

Buffers

Fila de mensagens associadas ao enlace; implementadas de trs maneiras 1. Capacidade zero 0 mensagem O emissor precisa esperar o receptor (rendezvous - encontro) 2. Capacidade limitada tamanho finito de n mensagens O emissor precisa esperar se a fila encher 3. Capacidade ilimitada tamanho infinito O emissor nunca espera

35

Sistemas Operacionais com Java

Comunicao em Sistemas Cliente-Servidor


Sockets Remote Procedure Call (RPC) Remote Method Invocation (Java)

36

Sistemas Operacionais com Java

Sockets
Um socket definido como uma extremidade para comunicao Concatenao do endereo IP com a porta O soquete 161.25.19.8:1625 refere-se porta 1625 no host 161.25.19.8 A comunicao consiste necessita de um par de sockets

37

Sistemas Operacionais com Java

Comunicao Usando Sockets

38

Sistemas Operacionais com Java

Remote Procedure Call

A Remote Procedure Call (RPC) abstrai chamadas de procedimento entre processos em sistemas em rede Stubs substituto do lado do cliente para o procedimento real no servidor O stub do lado do cliente localiza o servidor e empacota os parmetros O stub do lado do servidor recebe essa mensagem, desempacota os parmetros e chama o procedimento no servidor
39

Sistemas Operacionais com Java

Execuo de uma RPC

40

Sistemas Operacionais com Java

Remote Method Invocation

Remote Method Invocation (RMI) um mecanismo Java semelhante s RPCs A RMI permite que um programa Java em uma mquina invoque um mtodo em um objeto remoto

41

Sistemas Operacionais com Java

Empacotando Parmetros

42

Sistemas Operacionais com Java

Threads

Uma Thread (ou processo leve) uma unidade bsica da utilizao da CPU; ela consiste em: contador de programa conjunto de registradores espao de pilha Uma Thread compartilha com suas Threads afins: sua seo de cdigo sua seo de dados seus recursos de sistema operacional coletivamente conhecidos como uma tarefa Um processo tradicional, ou pesado, igual a uma tarefa com uma nica Thread

43

Sistemas Operacionais com Java

Threads

Em uma tarefa com mltiplas threads, enquanto uma thread servidora est bloqueada e esperando, uma segunda thread da mesma tarefa pode ser executada A cooperao de mltiplas threads na mesma tarefa confere maior throughput e melhor desempenho As aplicaes que precisam compartilhar um buffer comum (ou seja, produtor-consumidor) tiram proveito da utilizao da thread As Threads fornecem um mecanismo para permitir que processos seqenciais faam chamadas de sistema bloqueantes ao mesmo tempo em que obtm paralelismo

44

Sistemas Operacionais com Java

Mltiplas Threads dentro de uma tarefa

45

Você também pode gostar