Você está na página 1de 2

⇒ EXERCÍCIO: faça os exercícios nº 39 do livro-texto do autor TANENBAUM (4ª ed., pág.

122 do cap. 2).


1. (39) Considere o fragmento de código C seguinte:
void main( ) {
fork( );
fork( );
exit( );
}
Quantos processos filhos são criados com a execução
desse programa?
R: 4
⇒ EXERCÍCIO: faça os exercícios nº 3.15, 3.18 do livro-texto do autor SILBERSCHATZ
(9ª ed., pág. 153 do cap. 3).
1. (3.15) Dê um exemplo de uma situação em que pipes comuns sejam mais adequados do
que pipes nomeados e um exemplo de uma situação em que pipes nomeados sejam mais
apropriados do que pipes comuns.
R: Pipes comuns são mais adequados para quando precisa apenas uma passagem de
mensagem em um sentido, quando não necessita de uma resposta. Já pelo contrário, os
pipes nomeados são melhores por exemplo na criação de threads, que precisam ser
identificadas.
2. (3.18) Quais são os benefícios e as desvantagens de cada uma das situações a seguir?
Considere tanto o nível de sistema quanto o nível de programador.
a. Comunicação síncrona e assíncrona.
Um benefício da comunicação síncrona é que ela permite um encontro entre o
emissor e o receptor. Uma desvantagem de um envio com bloqueio é que um
ponto de encontro pode não ser exigido ea mensagem poderia ser entregue de
forma assíncrona, recebida em um ponto de nenhum interesse ao emissor. Como
resultado, os sistemas de troca de mensagens normalmente são as duas formas de
sincronismo.
b. Armazenamento em buffer automático e explícito
O buffer automático oferece uma fila com tamanho indefinido, garantindo assim
que o emissor nunca terá de bloquear enquanto espera para copiar uma
mensagem. Não existem especificações de como o buffer automático será
fornecido; um esquema pode reservar uma memória suficientemente grande, na
qual grande parte da memória é desperdiçada. O buffer explícito especifica o
tamanho do buffer. Nessa situação, o emissor pode ser bloqueado enquanto
espera pelo espaço disponível na fila. Porém, há menos probabilidade de que a
memória seja desperdiçada com o buffer explícito.
c. Envio por cópia e envio por referência.
Enviar cópia não permite que o receptor altere o estado do parâmetro; enviar por
referência permitir isso. Um benefício de enviar por referência é que permite que
o programador escreva uma versão distribuída de uma aplicação centralizada. A
RMI da Java oferece ambos, porém, uma passagem de um parâmetro por
referência exige uma declaração do parâmetro também como um objeto remoto.
d. Mensagens de tamanho fixo e de tamanho variável.
Como direito disso estão relacionadas, na maioria das vezes, a aspectos da
bufferização; com mensagens de tamanho fixo, um buffer com tamanho
específico pode manter uma quantidade de mensagens conhecida. Uma
quantidade de mensagens de tamanho variável que podem ser mantidas por esse
buffer é desconhecida. Considere uma forma como o Windows 2000 trata dessa
situação: com mensagens de tamanho fixo (qualquer coisa <256 bytes), como
mensagens são copiadas do espaço de endereço do emissor para o espaço de
endereço do processo receptor. Mensagens maiores (ou seja, mensagens de
tamanho variável) usam memória compartilhada para passar a mensagem.

Você também pode gostar