Aqui pode encontrar os enunciados, ficheiros auxiliares e soluções de cada um dos exercícios que constituem o projecto de SO.

FAQ do Projecto

[2015.11.26] - Não consigo criar o pipe. Dá o erro "Operation not permitted". Que devo fazer?As áreas dos laboratórios estão numa partição AFS e o AFS, por limitações de implementação, não suporta fifos. Pode experimentar a criar o pipe em /tmp/par-shell-in.

[2015.11.26] - O que é que a par-shell deve fazer quando no par-shell-terminal escrevo “exit-global"?Nessa situação a par-shell deve fazer o mesmo que quando se faz CTRL-C na par-shell.

[2015.11.26] - Na secção 3 do enunciado, no ponto 13 não devia estar escrito “exit-global” em vez de "exit"?
Sim. Devia estar escrito “exit-global”.
[2015.11.24] - A função open() pode bloquear-se?Sim. No caso de se fazer open() de um pipe a função fica bloqueada até que do outro lado do pipe se faça open() também.

[2015.11.24] - Quando crio um ficheiro, ele não fica com permissões de leitura e escrita. Que devo fazer? Quando se faz open() de um ficheiro deve-se passar as permissões com que é criado. Por exemplo, pode-se fazer:open("ficheiro", O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);

[2015.11.24] - Quando escrevo "stats" no terminal o que deve ser imprimido exatamente? Deve se impresso o número de processos filho atualmente a serem executados na par-shell e o tempo total de todos os processos que já terminaram incluindo os que estão no ficheiro "log.txt". 

[2015.11.24] - O que se entende por terminar ordeiramente os processos quando quando a par-shell recebe um signal SIGINT (vindo de ctrl-c)?Quando a par-shell recebe um signal SIGINT, a par-shell não deve aceitar mais comandos; deve esperar que todos o processos filho que estavam em execução terminem e deve enviar um signal aos par-shell terminais para eles terminarem. Os par-shell terminais podem terminar de forma abrupta.