Você está na página 1de 3

EXERCÍCIO: faça os exercícios nº 20, 22, 23, 26, 28, 31 do livro-texto do autor

TANENBAUM (4ª ed., pág. 56-58 do cap. 1).

20. Para cada uma das chamadas de sistema a seguir, dê uma condição que a faça falhar: fork,
exec e unlink.
R:
Fork: Caso seja criado um processo filho não haja mais memória.
Exec: Passagem de parâmetros incorretos.
Unlink: Caso o arquivo não exista.
22. A chamada count = write(fd, buffer, nbytes); pode retornar qualquer valor em count fora
nbytes? Se a resposta for sim, por quê?
R: Sim, pois caso ocorra um erro na função write o count terá valor = -1.
23. Um arquivo cujo descritor é fd contém a sequência de bytes: 3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5. As
chamadas de sistema a seguir são feitas:
lseek(fd, 3, SEEK_SET);
read(fd, &buffer, 4);
onde a chamada lseek faz uma busca para o byte 3 do arquivo. O que o buffer contém após a
leitura ter sido feita?
R: 1
26. No exemplo dado na Figura 1.17, a rotina de biblioteca é chamada read e a chamada de
sistema em si é chamada read. É fundamental que ambas tenham o mesmo nome?
Se não, qual é a mais importante?
R: Não é necessário que ambos tenham o mesmo nome. A chamada ao sistema é mais
importante que a chamada da biblioteca. Já que sem a chamada do sistema, nenhuma biblioteca
pode fazer tal chamada, o que não é verdade para o contrário. O programa pode sim fazer uma
chamada direta ao sistema.
28. Para um programador, uma chamada de sistema parece com qualquer outra chamada para
uma rotina de biblioteca. É importante que um programador saiba quais rotinas de biblioteca
resultam em chamadas de sistema? Em quais circunstâncias e por quê?
R: Sim, em questão ao desempenho. Chamadas ao sistema requerem desvio de fluxo e
tratamento das chamadas que trazem consigo armazenamento e resgate de contexto, coisas que
tomam tempo de processamento.
31. Explique como a separação da política e mecanismo ajuda na construção de sistemas
operacionais baseados em micronúcleos.
R: Quando há a separação entre mecanismo e políticas em sistemas operacionais baseados em
micronúcleos a um extremo, permite que os designers implementem um conjunto básico de
blocos de construção primitivos no núcleo. Esses blocos são praticamente independentes da
política e isso ajuda na implementação de mecanismos e políticas mais avançadas para que estas
sejam adicionadas por meio de módulos de kernel criados pelo usuário ou por meio dos próprios
programas de usuário.
⇒ EXERCÍCIO: faça os exercícios nº 2.1, 2.6, 2.8, 2.16, 2.21, 2.22 do livro-texto do
autor SILBERSCHATZ (9ª ed., pág. 94-96 do cap. 2).
2.1 Qual é a finalidade das chamadas de sistema?
R: As chamadas de sistema são como portas de entrada para se ter acesso as rotinas. Também
fornecem uma interface com os serviços disponibilizados por um sistema operacional.
2.6 Que chamadas de sistema têm de ser executadas por um interpretador de comandos ou shell
para iniciar um novo processo?
R: Em sistemas UNIX, uma chamada de sistema fork, seguida por uma chamada de sistema
exec, precisa ser executada para iniciar um novo processo. A chamada fork clona o processo em
execução corrente, enquanto a chamada exec substitui o processo que fez a chamada por um
novo processo, com um executável diferente.

2.8 Qual é a principal vantagem da abordagem em camadas para o projeto de sistemas? Quais as
desvantagens da abordagem em camadas?
R:
Como em todos os casos de projeto modular, o projeto de um sistema operacional de forma
modular tem diversas vantagens. O sistema é mais fácil de depurar e modificar porque as
mudanças afetam apenas seções limitadas do sistema em vez de mexer com todas as seções do
sistema operacional. As informações são mantidas apenas onde são necessárias e são acessíveis
somente dentro de uma área definida e restrita, de modo que quaisquer bugs que afetem os
dados devem ficar limitados a um módulo específico ou camada
2.16 Quais são as vantagens e desvantagens do uso da mesma interface de chamadas de sistema
para manipular tanto arquivos quanto dispositivos?
R:
Esses sistemas operacionais são geralmente mais rápidos e mais fáceis de serem implementados,
logo é possível que haja mais falhas de sistemas do que por exemplo um de microkernel.

2.21 Qual é a principal vantagem da abordagem de microkernel para o projeto de sistemas?


como os programas de usuário e serviços do sistema interagem em uma arquitetura de
microkernel? Quais são as desvantagens do uso da abordagem de microkernel?
R:
As vantagens dos sistemas micro- núcleo são sua robustez e flexibilidade: caso um sub- sistema
tenha problemas, os mecanismos de proteção de memória e níveis de privilégio irão confiná-lo,
impedindo que a instabilidade se alastre ao restante do sistema. Além disso, é possível
customizar o sistema operacional, iniciando somente os componentes necessários ou escolhendo
os componentes mais adequados às aplicações que serão executadas.
Vários sistemas operacionais atuais adotam parcial mente essa estruturação; por exemplo, o
MacOS X da Apple tem suas raízes no sistema Mach, ocorrendo o mesmo com o Digital UNIX.
Todavia, o custo associado às trocas de mensagens entre componentes pode ser bastante
elevado, o que prejudica seu desempenho e diminui a aceitação desta abordagem.

2.22 Quais são as vantagens do uso de módulos de kernel carregáveis?


R:
Sem módulos de kernel carregáveis, um sistema operacional teria que incluir todas as
funcionalidades antecipadas possíveis compiladas diretamente no kernel base. Grande parte
dessa funcionalidade residiria na memória sem ser usada, desperdiçando memória e exigiria que
os usuários reconstruíssem e reinicializassem o kernel básico sempre que precisassem de uma
nova funcionalidade.

Você também pode gostar