1) O documento apresenta exercícios sobre sistemas operacionais tirados de dois livros-textos diferentes.
2) No primeiro exercício, 4 processos filhos são criados ao executar um programa em C que usa a função fork().
3) No segundo exercício, sobre pipes, são discutidos quando pipes comuns ou nomeados são mais adequados e os benefícios de comunicação síncrona e assíncrona, armazenamento em buffer automático e explícito, envio por cópia e referência, e mensagens de tamanho fixo e variável.
1) O documento apresenta exercícios sobre sistemas operacionais tirados de dois livros-textos diferentes.
2) No primeiro exercício, 4 processos filhos são criados ao executar um programa em C que usa a função fork().
3) No segundo exercício, sobre pipes, são discutidos quando pipes comuns ou nomeados são mais adequados e os benefícios de comunicação síncrona e assíncrona, armazenamento em buffer automático e explícito, envio por cópia e referência, e mensagens de tamanho fixo e variável.
1) O documento apresenta exercícios sobre sistemas operacionais tirados de dois livros-textos diferentes.
2) No primeiro exercício, 4 processos filhos são criados ao executar um programa em C que usa a função fork().
3) No segundo exercício, sobre pipes, são discutidos quando pipes comuns ou nomeados são mais adequados e os benefícios de comunicação síncrona e assíncrona, armazenamento em buffer automático e explícito, envio por cópia e referência, e mensagens de tamanho fixo e variável.
⇒ 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.