Buscar

SO_3-processos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 54 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition,
Capítulo 3: Processos
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 2
Capítulo 3: Processos
• Conceito de processo 
• Escalonamento de Processos 
• Operações em processos 
• Comunicação entre processos 
• Exemplos de Sistemas de Comunicação entre Processos - IPC 
• Comunicação em sistemas cliente-servidor
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 3
Objetivos
• Introduzir a noção de processo – um programa em execução, que 
forma a base de toda computação 
• Descrever as várias características de processos, incluindo 
escalonamento (agendamento), criação, término e comunicação 
• Descrever a comunicação em sistemas cliente-servidor
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 4
Conceito de Processo
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 5
Conceito de Processo
• Um sistema operacional executa uma variedade de 
programas: 
• Sistemas Batch (lote) – Jobs (tarefas) 
• Sistemas de Tempo Compartilhado – 
programas do usuário ou tarefas 
• OBS.: o livro texto usa os termos job e processo 
praticamente com o mesmo significado 
• Processo – um programa em execução 
• sua execução deve progredir de forma 
sequencial 
• Um processo inclui: 
• Contador de programa 
• Pilha (stack) 
• Seção de dados
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 6
Bloco de Controle de Processos (PCB)
Informação associada com cada processo 
• Estado do processo 
• Número do processo (PID) 
• Contador de programa 
• Registradores da CPU 
• Informações 
• de escalonamento da CPU 
• para gerência de memória 
• de tarifação 
• de status de E/S
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 7
Estados de um Processo
• À medida que um processo executa, seu estado é alterado 
• new: O processo é criado 
• running: Instruções são executadas 
• waiting: O processo está aguardando a ocorrência de algum evento 
• ready: O processo está aguardando para ser alocado a um 
processador 
• terminated: O processo finalizou sua execução
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 8
Escalonamento de Processos
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 9
Troca de Processos pela CPU
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 10
Filas para Escalonamento de Processos
• Job queue – Conjunto de todos os processos do sistema 
• Ready queue – conjunto de todos os processos residindo na 
memória principal, prontos e aguardando para execução 
(estado ready) 
• Device queues – conjunto de processos esperando por um 
dispositivo de E/S (estado waiting) 
• Observe que os processos 
migram entre as várias filas, de 
acordo com seu estado
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 11
Ready Queue e Várias Device Queues de E/S
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 12
Representação do Escalonamento de 
Processos
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 13
Escalonadores de Longo e Curto Prazo
• Long-term scheduler (ou escalonador de jobs) – seleciona quais 
processos devem ser trazidos para a ready queue 
• Short-term scheduler (ou escalonador da CPU) – seleciona qual 
processo deve ser executado em sequência (daqueles prontos) e 
faz a alocação da CPU
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 14
Escalonador de Médio Prazo
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 15
Escalonadores(Cont)
• Short-term scheduler é chamado frequentemente (milisegundos) ⇒ 
(deve ser rápido) 
• Long-term scheduler é chamado com menos frequência (segundos, 
minutos) ⇒ (pode ser lento) 
• O LTS controla o grau de multiprogramação 
• Processos podem ser descritos como: 
• I/O-bound process – gastam mais tempo fazendo E/S do que 
computação, muitas rajadas curtas de CPU 
• CPU-bound process – Gastam mais tempo com computação; 
poucas rajadas longas de CPU
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 16
Troca de Contexto
• Quando a CPU realiza a troca para um outro processo, o sistema deve fazer 
uma troca de contexto: 
• salvar o estado do processo antigo (atualizar o PCB na RAM) 
• carregar (na CPU) o estado salvo (na RAM) do novo processo 
• O contexto de um processo é representado no PCB 
• O tempo de troca de contexto gera overhead 
• O sistema não trabalha de forma útil durante a troca 
• Tempo dependente do suporte de hardware
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 17
Operações em Processos
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 18
Criação de Processos
• Processos Pai criam Processos Filhos, que por sua vez, criam outros 
processos, formando uma árvore de processos 
• Geralmente, um processo é identificado e gerenciado via um identificador 
de processo (pid) 
• Opções de Compartilhamento de Recursos 
• Pais e Filhos compartilham todos os recursos 
• Filhos compartilham um subconjunto dos recursos dos pais 
• Pais e filhos não compartilham recursos 
• Execução 
• Pais e filhos executam concorrentemente (ex.: multi-threading) 
• Pais aguardam o término de execução dos filhos 
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 19
Criação de Processos(Cont)
• Espaço de endereçamento 
• Filho duplica o endereço do pai 
• Filho possui um programa carregado nele 
• Exemplo no UNIX 
• Chamadas de sistema fork criam novos processos 
• Chamada de sistema exec usada após um fork para substituir o espaço 
de memória do processo com um novo programa
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 20
Programa em C Forking Separate Process
int main() {
 pid_t pid;
 
 /* fork o processo, criando um processo filho */
 
 pid = fork();
 
 if (pid < 0) { /* erro encontrado */
 
 
 fprintf(stderr, "Falha na criação do processo filho");
 
 
 exit(-1);
 
 }/* OBS (pid >= 0) indica sucesso no fork */
 
 /* OBS (pid == 0) indica o processo filho */
 
 else if (pid == 0) { /* processo filho criado e alocado */
 
 
 execlp("/bin/ls", "ls", NULL);
 
 }
 
 /* OBS (pid > 0) indica o processo pai */
 
 else { /*processo pai */
 
 
 /* pai aguardará o filho completar */
 
 
 wait(NULL);
 
 
 printf(“Filho completo");
 
 
 exit(0);
 
 }
 
}
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 21
Uma Árvore Típica de Processos no Solaris
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 22
Término de um Processo
• Um processo executa sua última instrução e solicita ao sistema 
operacional a sua remoção (exit) da fila de processos 
• Mas antes, coleta a saída de dados do filho para o pai (via wait) 
• Os recursos do processo são desalocados pelo SO 
• O processo pai pode terminar a execução dos processos filhos 
(abort) 
• Processo filho excedeu os recursos alocados 
• Tarefa associada ao filho não é mais necessária 
• Se o processo pai está terminando 
• Alguns sistemas operacionais não permitem o processo filho 
continuar se o processo pai terminar 
– Todos os filhos são terminados – terminaçãoem cascata
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 23
Comunicação Inter-Processos
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 24
Comunicação Inter-Processos
• Processos em um sistema podem ser independentes ou 
colaborativos 
• Um processo colaborativo pode ser afetado por outros processos, 
incluindo dados compartilhados 
• Razões para se ter processos colaborativos: 
• Compartilhamento de informação 
• Melhoria de desempenho 
• Modularidade (ex.: spellchecker invocado pelo LaTeX) 
• Conveniência (ex.: web browser + antivirus) 
• Processos colaborativos necessitam de comunicação inter-processos 
- interprocess communication (IPC) 
• Dois modelos de IPC 
• Memória compartilhada 
• Passagem de mensagens 
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 25
Modelos de Comunicação 
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 26
Colaboração entre Processos
• Um processo independente não pode afetar ou ser afetado pela execução 
de um outro processo 
• Um processo colaborativo pode afetar ou ser afetado pela execução de 
outro processo 
• Vantagens da colaboração entre processos 
• Compartilhamento de informação 
• Melhoria de desempenho 
• Modularidade 
• Conveniência
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 27
O Problema Produtor-Consumidor
• Paradigma de processos colaborativos; o processo produtor 
produz informação que é consumida por um processo 
consumidor 
• unbounded-buffer não restringe limite prático no tamanho 
do buffer 
• bounded-buffer assume a existência de um buffer de 
tamanho fixo
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 28
Bounded-Buffer – Solução de Memória 
Compartilhada
• Dado compartilhado 
#define BUFFER_SIZE 10 
typedef struct { 
 . . . 
} item; 
item buffer[BUFFER_SIZE]; 
int in = 0; //aponta para a próxima posição livre do buffer 
int out = 0; // aponta para a primeira posição preenchida 
• OBS.: A solução está correta, mas somente pode usar 
BUFFER_SIZE-1 elementos 
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 29
Bounded-Buffer – Produtor
item nextProduced;
while (true) { 

 /* produz um novo item e armazena em nextProduced */
 while ( ((in + 1) % BUFFER SIZE) == out) //buffer cheio
 ; /* não faz nada */
 
 // coloca o item produzido no buffer
 buffer[in] = nextProduced;
 in = (in + 1) % BUFFER SIZE;
}
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 30
Bounded Buffer – Consumidor
item nextConsumed; 
while (true) {
 while (in == out) //buffer vazio
 
 
 ; /* não faz nada */
 
 // remove um item do buffer
 
 nextConsumed = buffer[out];
 
 out = (out + 1) % BUFFER SIZE;
 
 /* consome o item contido em nextConsumed */
}
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 31
Comunicação Inter-Processos – Passagem de 
Mensagens
• Mecanismo para processos se comunicarem e sincronizarem suas ações 
• Sistema de Mensagem – processos se comunicam sem recorrer a variáveis 
compartilhadas 
• O mecanismo de IPC fornece duas operações: 
• send(mensagem) – tamanho da mensagem fixo ou variável 
• receive(mensagem) 
• Se P e Q desejam comunicar, eles precisam: 
• Estabelecer um link de comunicação entre eles 
• Trocar mensagens via send/receive 
• Implementação do link de comunicação 
• física(ex:, memória compartilhada, barramento de hardware) 
• lógica(ex: propriedades lógicas)
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 32
Questões de Implementação
• Como os links são estabelecidos? 
• Um link pode ser associado com mais de dois processos? 
• Quantos links podem existir entre cada par de processos de comunicação? 
• Qual é a capacidade de um link? 
• O tamanho de uma mensagem que um link pode acomodar é fixo ou 
variável? 
• Um link é unidirecional ou bi-direcional?
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 33
Comunicação Direta
• Processos devem nomear um ao outro explicitamente: 
• send (P, mensagem) – envia uma mensagem para um processo P 
• receive(Q, mensagem) – recebe uma mensagem de um processo Q 
• Propriedades de um link de comunicação 
• Links são estabelecidos automaticamente 
• Um link é associado com exatamente um par de processos de 
comunicação 
• Entre cada par existe exatamente um link 
• O link pode ser unidirecional, mas é normalmente bi-direcional
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 34
Comunicação Indireta
• Mensagens são direcionadas e recebidas de caixas de mensagens - 
mailboxes (também referenciadas como portas) 
• Cada mailbox tem um único id 
• Os processos pode comunicar somente se eles compartilharem um 
mailbox 
• Propriedades do link de comunicação 
• O link é estabelecido somente se os processos compartilharem uma 
caixa de mensagem em comum 
• Um link pode ser associado com vários processos 
• Cada par de processos podem compartilhar vários links de 
comunicação 
• Um link pode ser uni ou bi-direcional
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 35
Comunicação Indireta
• Operações 
• Criar uma nova caixa de mensagem 
• Enviar e receber mensagens através da caixa de mensagens 
• Destruir uma caixa de mensagem 
• As primitivas são definidas como: 
 send(A, mensagem) – envia uma mensagem para uma caixa de 
mensagem A 
 receive(A, mensagem) – recebe uma mensagem de um uma caixa de 
mensagem A
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 36
Comunicação Indireta
• Compartilhamento de uma caixa de mensagem 
• P1, P2, e P3 compartilham uma caixa de mensagem A 
• P1, envia; P2 e P3 recebem 
• Quem obtêm a mensagem? 
• Soluções 
• Permitir um link ser associado com no máximo dois processos 
• Permitir somente um processo por vez executar uma operação de 
recepção 
• Permitir que o sistema selecione arbitrariamente o receptor. O remetente 
é notificado que foi o receptor.
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 37
Sincronização
• A passagem de mensagem pode ser tanto blocking ou non-blocking 
• Blocking é considerada síncrona 
• Blocking send bloqueia o remetente até que a mensagem seja 
recebida 
• Blocking receive bloqueia o receptor até que uma mensagem 
esteja disponível 
• Non-blocking é considerada assíncrona 
• Envio Non-blocking o remetente envia a mensagem e continua 
• Recepção Non-blocking o receptor recebe uma mensagem 
válida ou null
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 38
Buffering
• Fila de mensagens anexadas ao link; implementada em uma de três 
formas 
1. Capacidade zero – 0 mensagem 
Remetente deve esperar até o destinatário receber a msg 
2. Capacidade limitada – tamanho finito de n mensagens. 
O remetente deve aguardar se o link estiver cheio 
3. Capacidade ilimitada – tamanho infinito. 
O remetente nunca espera
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 39
Exemplos de Comunicação Inter-Processos
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 40
Exemplos de Sistemas IPC - POSIX
• Memória compartilhada no POSIX 
• O processo primeiramente cria um segmento de memória compartilhada 
segment id = shmget(IPC PRIVATE, size, S IRUSR | S IWUSR); 
• O processo que quer acesso a esta memória compartilhada deve se 
anexar a ela 
shared memory = (char *) shmat(id, NULL, 0);• Agora o processo pode escrever na memória compartilhada 
sprintf(shared memory, "Writing to shared memory"); 
• Quando pronto, um processo pode desconectar a memória 
compartilhada do se espaço de endereçamento 
shmdt(shared memory);
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 41
Exemplos de Sistemas IPC - Mach
• A comunicação no Mach é baseada em mensagens 
• Mesmo as chamadas de sistema são mensagens 
• Cada tarefa obtêm duas caixas de mensagens no momento de criação – 
Kernel e Notify 
• Somente três chamadas de sistema são necessárias para a 
transferência de mensagem 
msg_send(), msg_receive(), msg_rpc() 
• Caixas de mensagem necessárias para comunicação, criadas via 
port_allocate()
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 42
Exemplos de Sistemas IPC - Windows XP
• Passagem de mensagem via mecanismo (LPC) - local procedure call 
• Somente funciona entre processos no mesmo sistema 
• Usa portas (da mesma forma que mailboxes) para estabelecer e manter 
os canais de comunicação 
• A comunicação funciona da seguinte maneira: 
• O cliente abre um handle para o objeto da porta de conexão do 
subsistema 
• O cliente envia uma requisição de conexão 
• O servidor cria duas portas de comunicação privadas e retorna o 
handle para um deles para o cliente 
• O cliente e o servidor usam o handle da porta correspondente para 
enviar mensagens e callbacks e escutar por respostas
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 43
Chamadas Locais de Procedimento no 
Windows XP
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 44
Comunicação Cliente-Servidor
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 45
Comunicação em Sistemas Cliente-Servidor
• Sockets 
• Chamadas Remotas de Procedimento - Remote Procedure Calls 
• Pipes 
• Invocação Remota de Métodos - Remote Method Invocation (Java)
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 46
Sockets
• Um socket é definido como um ponto final para comunicação - 
endpoint for communication 
• Concatenação do endereço IP e a porta 
• O socket 161.25.19.8:1625 refere-se à porta 1625 no host 
161.25.19.8 
• A comunicação consiste entre um par de sockets
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 47
Comunicação com Socket 
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 48
Chamadas Remotas de Procedimento - RPC
• Chamadas remotas de procedimento (RPC) abstraem as chamadas de 
procedimento entre processos em sistemas em rede 
• Stubs – proxy do lado-cliente para o procedimento no servidor 
• O stub no lado-cliente localiza o servidor e faz o empacotamento - 
marshalls - dos parâmetros 
• O stub do lado servidor recebe esta mensagem, desempacota os 
parâmetros que estavam empacotados, e executa o procedimento no 
servidor
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 49
Execução de RPC
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 50
Pipes
• Agem como um conduíte permitindo a comunicação de dois processos 
• Questões 
• A comunicação é unidirecional ou bidirecional? 
• No caso da comunicação bidirecional, ela é half ou full-duplex? 
• Deve existir um relacionamento (ex: pai-filho) entre os processos de 
comunicação? 
• Os pipes podem ser usados sobre uma rede?
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 51
Pipes Comuns
• Os Pipes Comuns permitem a comunicação no estilo padrão produtor-
consumidor

• O produtor escreve em um extremo - end (o extremo de escrita do pipe)

• O consumidor lê no outro extremo (o extremo de leitura do pipe)

• Os pipes comuns são portanto, unidirecionais

• Requerem um relacionamento pai-filho entre os processos de comunicação 
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 52
Pipes Comuns
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition 53
Pipes Nomeados 
• Os pipes nomeados são mais poderosos que os pipes comuns

• A comunicação é bidirecional

• Não é necessário o relacionamento pai-filho entre os processos de 
comunicação

• Vários processos podem usar o pipe nomeado para comunicação

• Fornecido tanto em sistemas UNIX como Windows 
Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition,
Fim do Capítulo 3

Outros materiais