terça-feira, 10 de agosto de 2010

Capítulo 1, Questões 16~20

16. Por que é necessária uma tabela de processos em sistemas de tempo compartilhado? Essa tabela é essencial também em sistemas de computador pessoal (PC), nos quais existe apenas um processo, que detém o comando de toda a máquina até que ele termine?
S. Pois a cada vez que um processo for suspenso para que a execução de outro ocorra, o seu contexto, conjunto de registradores que inclui o contador de programa, o ponteiro para pilha, outros registradores de hardware e todas as demais informações necessárias para executar aquele programa, tem que ser salvo em algum lugar, tabela de processos. Em sistemas com apenas um processo em execução, esta tabela pode ser usada pelo mecanismo de interrupções para poder salvar o contexto do processo e trata-las.

17. Há alguma razão para se querer montar um sistema de arquivos em um diretório não vazio? Se há, qual é?
S. Sim, impossibilitar o uso dos arquivos que estavam no diretório antes do novo sistema ser montado.

18. Para cada uma das seguintes chamadas ao sistema, dê uma condição que faça com que elas falhem: fork, exec e unlink.
S. fork - falta de memória para criação do processo filho na memória. exec - número de parâmetros inválidos, e, unlink - i-número de arquivo inexistente.

19. count = write(fd, buffer, nbytes); essa chamada pode retornar algum valor em count que seja diferente de nbytes? Em caso afirmativo, por quê?
S. Sim, essa chamada pode retornar algum valor diferente de nbytes. Principalmente por dois motivos, um final de arquivo foi encontrado antes, ou o arquivo não pôde ser lido.

20*erro. Um arquivo cujo descritor é fd contém a seguinte sequencia de bytes: 3, 1, 4, 5, 9, 2, 6, 5, 3, 5. São executadas as seguintes chamadas ao sistema:
lseek(fd, 3, SEEK_SET);
fork(fd, &buffer, 4);
onde a chamada lseek faz uma busca ao byte 3 do arquivo. O que o buffer contém ao final da leitura?
S. Não consegui encontrar em lugar algum, nem mesmo em
http://www.opengroup.org/onlinepubs/9699919799/functions/fork.html alguma função fork contendo parâmetros.

*erro: Questão aparentemente com erro.

Nenhum comentário:

Postar um comentário