• Nenhum resultado encontrado

SO 03

N/A
N/A
Protected

Academic year: 2021

Share "SO 03"

Copied!
45
0
0

Texto

(1)

Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

(2)

Conceito de Processos

■ Um Sistema Operacional executa uma variedade de programas: ● Sistemas de Lote (Batch) – jobs ● Sistemas de Tempo Compartilhado – programas do usuário ou  tasks (tarefas) ■ Muitos livros usam os temos jobs e processos quase para a  mesma coisa. A difereça é muito sutil ■ Processo: um programa em execução; execução de processo deve  progredir de forma sequencial ■ Um processo inclui: ● Contador de Programas (PC) ● Pilha ● Seção de dados ● Seção de código

(3)

1.3 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

(4)

Estados de um Processo

Um processo muda de estado a medida que vai progredindo 

em sua execução:

novo:  Processo foi criado

executando:  suas instruções estão sendo executadas

esperando:  o processo está esperando algum evento 

ocorrer (geralmente de E/S)

pronto: o processo está esperando por uma chance de 

usar de ser executado pelo processador

terminado:  processo finalizou sua execução

(5)

1.5 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

(6)

Process Control Block (PCB)

Informações associadas a cada processo:

Estado do processo

Contador de Programa (PC)

Registradores de CPU

Informações de Escalonamento de CPU

Informações para Gerência de Memória

Informações de conta de usuário

Informações do status de E/S

(7)

1.7 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

(8)

Troca de CPU de Processo para 

Processo

(9)

1.9 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Filas de Escalonamento de Processos

Fila de Jobs – conjunto de todos os processos no 

sistema

Fila de Prontos – conjunto de todos processos 

residindo na memória principal, prontos e esperando 

para executar

Filas de Dispositivos – conjunto de processos 

esperando por um dispositivo de Entrada e Saída

Processos migram constantemente de uma fila para 

outra

(10)
(11)

1.11 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

(12)

Escalonadores

Escalonador de longo prazo (ou escalonador de jobs) – 

seleciona que processos devem ser levados para a 

Fila 

de Prontos

Escalonador de curto prazo (ou escalonador de CPU) – 

seleciona que processo deve ser o próximo a ser 

executado pela CPU

(13)

1.13 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

(14)

Escalonadores (Cont)

Escalonador de Curto Prazo é invocado muito 

frequentemente (milisegundos) 

 

deve ser rápido

Escalonador de Longo Prazo é invocado com pouca 

frequência (segundos ou minutos) 

 

pode ser lento

O escalonador de Longo Prazo controla o 

grau de 

multiprogramação

Processos podem ser descritos tanto como:

Processo orientado a E/S – gasta mais tempo fazendo 

E/S do que computação, com muitos usos curtos de 

CPU

Processo orientado a CPU – gasta mais tempo 

fazendo computação; poucos mas longos usos de CPU

(15)

1.15 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Troca de Contexto

Quando uma CPU troca para outro processo. O sistema deve 

salvar o estado do processo anterior e carregar o estado salvo do 

processo atual => troca de contexto

O Contexto de um processo é representado no PCB

Troca de Contexto é puro 

overhead; o sistema não faz nada de útil 

durante a troca.

Desempenho vai depender do suporte do hardware a troca de 

contexto

(16)

Criação de Processos

Processo 

pai cria processos filhos, que por sua vez, cria novos 

filhos formando uma 

árvore de processos

Geralmente um processo é identificado e gerenciado via um 

identificador de processo (PID)

Opções para compartilhamento de recursos:

Pai e filho compartilham todos os recursos

Filhos compartilham subconjunto de recursos do processo pai

Pais e filhos não compartilham recursos

Opções de execução:

Pai e filhos executam concorrentemente

Pai espera até filhos terminarem

(17)

1.17 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Criação de Processos (Cont)

Espaço de Endereçamento

Filho usa espaço de endereçamento do pai, ou

Filho possui seu próprio espaço

Exemplos no UNIX:

fork: system call que cria novo processo

exec: system call usada depois de um fork para substituir o 

espaço de memória do processo por um novo programa.

wait: system call que faz processo pai esperar a finalização do 

processo filho para continuar executando.

(18)
(19)

1.19 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Separação de Processos no Unix (C)

int main() { pid_t pid;

/* fork another process */ pid = fork();

if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); exit(-1);

}

else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); }

else { /* parent process */

/* parent will wait for the child to complete */

wait (NULL);

printf ("Child Complete"); exit(0);

} }

(20)
(21)

1.21 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Finalização de Processos

■ Processo executa sua última instrução e pede para SO deletá­lo  (system call exit) ● Dados de saída são enviados do filho para o pai (através de wait) ● Recursos do processo são desalocados pelo SO ■ Pai pode terminar a execução dos processos filho (system call abort) ● Filho excedeu o uso de recursos alocados ● Tarefa assimilada ao filho não é mais necessária ● Pai terminou sua execução  Alguns SOs não permitem que filhos continuem executando  se seu pai terminar – Nesse caso, deve haver uma finalização em cascata

(22)

Comunicação Interprocessos

■ Processos num sistema podem ser independentes ou  cooperativos ■ Processos cooperativos podem afetar ou ser afetado por outros  processos, incluindo o compartilhamento de dados ■ Razões para a existência de processos cooperativos: ● Compartilhamento de dados ● Aceleração na execução ● Modularidade ● Conveniência ■ Cooperação entre processo necessita de Comunicação  Interprocessos (IPC) ■ Dois modelos de IPC:

(23)

1.23 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Modelos de Comunicação

a) Por troca de mensagens b) Por memória compartilhada

(24)

Problema do Produtor­Consumidor

■ Paradigma para cooperação entre processos: ● Produtor produz informaçãoConsumidor consome (usa e apaga) a informação  produzida ■ Implementação: ● Dados produzidos pelo consumidor são armazenados  em memória (buffer) ● Consumidor lê o dado do buffer e o remove (consumo) ■ Dois modelos de implementação de buffer: ● Buffer ilimitado: não impõe limite no tamanho do bufferBuffer limitado: assume que há um tamanho máximo  fixo para o buffer

(25)

1.25 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Buffer Limitado – Memória Compartilhada

■ Memória compartilhada

#define BUFFER_SIZE 10

typedef struct {

. . .

} item;

item buffer[BUFFER_SIZE];

int in = 0;

int out = 0;

■ Solução é correta, mas apenas BUFFER_SIZE elementos  podem ser usados

(26)

Buffer Limitado – Produtor

while (true) {

/* produz um item aqui! */

while (((in = (in + 1) % BUFFER_SIZE count) == out)

; /* não há buffer livre – não faz nada!! */

buffer[in] = item;

in = (in + 1) % BUFFER_SIZE;

}

(27)

1.27 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Buffer Limitado – Consumidor

while (true) {

while (in == out)

; // nada para consumir – não faz nada!!

// remove um item do buffer item = buffer[out];

out = (out + 1) % BUFFER SIZE; return item;

(28)

Comunicação Interprocesso – Troca de Mensagens

■ Mecanismo para comunicação entre processos e sincronização de ações ■ Sistema de mensagens – processos se comunicam entre si sem  compartilhamento de variáveis ■ IPC oferece duas operações (system calls): ● send(message) – message size fixed or variable receive(message)If P and Q wish to communicate, they need to:establish a communication link between them ● exchange messages via send/receive ■ Implementation of communication link ● physical (e.g., shared memory, hardware bus) ● logical (e.g., logical properties)

(29)

1.29 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Questões de Implementação

■ Como os enlaces são estabelecidos? ■ Pode um enlace ser associado a mais de dois processos? ■ Quantos enlaces podem ser estabelecidos entre cada par de processos? ■ Qual a capacidade de um enlace? ■ O tamanho da mensagem que um enlace pode acomodar deve ser fixo ou  variável? ■ O enlace é uni ou bidirecional?

(30)

Comunicação Direta

■ Um processo deve nomear o outro explicitamente: ● send (P, message) – envia uma mensagem para o processo Preceive(Q, message) – recebe uma mensagem do processo Q ■ Propriedades do enlace de comunicaçäo: ● Enlaces são estabelecidos automaticamente ● Um enlace é associado exatamente a um par de processos  comunicantes ● Entre cada par há exatamente um enlace ● O enlace pode ser unidirecional, mas é geralmente bidirecional.

(31)

1.31 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Comunicação Indireta

■ Mensagens são dirigidas e recebidas de caixas de mensagens  (mailbox) ● Cada caixa de mensagem possui um ID único ● Processo só podem se comunicar se compartilharem uma caixa de  mensagem ■ Propriedades do enlace de comunicaçäo: ● Enlace estabelecido apenas se os processos compartilharem uma  caixa de mensagem ● Um enlace pode ser associado a vários processos ● Cada par de processo pode compartilhar vários enlaces ● Enlace pode ser uni ou bidirecional

(32)

Comunicação Indireta

■ Operações ● Criar uma caixa de mensagem ● Enviar e receber mensagens através de caixa de mensagem ● Destruir uma caixa de mensagem ■ Primitivas são definidas como: ● send(A, message) – envia uma mensagem para a caixa de  mensagem A ● receive(A, message) – recebe uma mensagem da caixa de  mensagem A

(33)

1.33 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Comunicação Indireta

■ Compartilhamento de Caixa Postal

P1, P2, e P3 compartilham caixa postal A ● P1, envia; P2 e P3 recebem

● Quem pegará a mensagem? ■ Soluções: ● Permitir um enlace ser associado com no máximo 2 processos ● Permitir apenas um processo por vez para executar a operação de  recebimento (receive) ● Permitir que o sistema escolha aleatoriamente o receptor. O emissor é  notificado que foi o receptor.

(34)

Sincronização

■ Passagem de mensagem pode ser Bloqueante ou Não­Bloqueante ■ Bloqueante é considerada síncrona ● A operação send bloqueante bloqueia o emissor até que a  mensagem seja recebida ● A operação receive bloqueante bloqueia o receptor até que a  mensagem esteja disponível. ■ Não­Bloqueante é considerada assíncrona ● A operação send não­bloqueante faz o emissor enviar a  mensagem e continuar ● A operação receive não­bloqueante faz o receptor receber a  mensagem de qualquer modo, mesmo que ela venha nula  (null).

(35)

1.35 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Buferização

■ Fila de mensagens é atachada ao enlace. ■ Implementada de uma das três formas abaixo: 1. Capacidade Zero – 0 mensagens  Emissor deve esperar pelo receptor (rendezvous) 2. Capacidade Limitada – comprimento finito de n mensagens Emissor deve esperar se o enlace estiver cheio 3. Capacidade Ilimitada – comprimento infinito Emissor nunca precisa esperar

(36)

Examples of IPC Systems ­ POSIX

■ POSIX Shared Memory ● Process first creates shared memory segment segment id = shmget(IPC PRIVATE, size, S IRUSR | S  IWUSR); ● Process wanting access to that shared memory must attach to it shared memory = (char *) shmat(id, NULL, 0); ● Now the process could write to the shared memory sprintf(shared memory, "Writing to shared memory"); ● When done a process can detach the shared memory from its address  space shmdt(shared memory);

(37)

1.37 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Exemplos de Comunicação entre Processos no 

Windows XP

■ Troca de mensagens centralizada através do recurso de  Local Procedure  Call (LPC) ● Funciona apenas entre processos no mesmo sistema ● Usa portas (como caixas postais) para estalecer e manter os canais de  comunicação ● Comunicação funciona da seguinte forma (semelhante ao TCP/IP):  O cliente abre uma porta para conexão  O cliente envia uma requisiçäo de conexão  O servidor cria duas portas privadas de comunicaçäo e returna o  manipulador (objeto) de um deles para o cliente.  Cliente e servidor usam o correspondente manipulador para enviar  mensagens e ouvir as respostas.

(38)
(39)

1.39 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Comunicação em Sistemas Cliente­Servidor

■ Sockets ■ Remote Procedure Calls (RPC) ■ Remote Method Invocation (RMI) ­ Java

(40)

Sockets

■ Um socket é definido como uma ponto de extremidade de  comunicaçäo ■ Formado pela conatenaçäo de um endereço IP e uma porta ■ O socket 161.25.19.8:1625 refere­se a porta 1625 no host  161.25.19.8 ■ Comunicações ocorrem entre um par de sockets

(41)

1.41 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

(42)

Remote Procedure Calls (RPC)

■ Remote Procedure Call (RPC): chamada abstrata de procedimentos em  sistemas em rede ■ Stubs – proxy no lado do cliente que implementa procedimentos do  servidor ■ O Stub do cliente localiza o servidor, empacota os parâmetros necessários  e envia a chamada do procedimento para o servidor através de uma  mensagem ■ O Stub no lado do servidor recebe essa mensagem, desempacota os  parâmetros e executa o procedimento no servidor

(43)

1.43 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

(44)

Remote Method Invocation (RMI)

■ Remote Method Invocation (RMI) é mecanismo Java semelhante ao RPC ■ RMI permite um programa Java em uma máquina evocar um método de um 

objeto remoto (localizado em outra máquina)

(45)

1.45 Adaptado do material deSilberschatz, Galvin and Gagne ©2009 Alisson Brito @ UFPB’2009

Referências

Documentos relacionados

PRECAUÇÕES ESPECIAIS DE ELIMINAÇÃO DO MEDICAMENTO NÃO UTILIZADO OU DOS SEUS DESPERDÍCIOS, SE FOR CASO DISSO Antes de utilizar, leia o folheto informativo.. MENÇÃO

Para poderem obter proteção para a Bordetella bronchiseptica, os cães não vacinados devem receber uma dose, no mínimo, 72 horas antes do período previsível de risco (ver também

Iniciou os seus estudos musicais aos nove anos no Instituto gregoriano de Lisboa, onde estudou até 1990, ano em que ingressou na Escola Superior de música de Lisboa, onde obteve

Um pequeno estudo comparou diretamente os efeitos do ARAII telmisartran com o IECA enalapril na função renal em diabéticos do tipo 2, revelando resultados sobreponíveis,

O objetivo de utilizar o modelo proposto por Cardoso e de chamar atenção às ponderações de Vainfas é justamente o de observar alguns dos diferentes processos de

Existem diversos métodos de análise dentária neste âmbito, sendo uma delas a análise dentária comparativa, que nos permite recorrer a registos ante-mortem e compará- los com

6 Anos de escolaridade aos candidatos nascidos entre 01.01.1967 a 31.12.1980; 9 Anos de escolaridade aos candidatos nascidos entre 01.01.1981 a 31.12.1994; 12 Anos de escolaridade

Com o uso do biodigestor os gases promotores do efeito estufa, como o metano e o carbônico, não são mais liberados naturalmente para a atmosfera, ao contrário, ele é conduzido