Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
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.