Departamento de Engenharia Electrotécnica e de Computadores
Sistemas Informáticos
Exame, 5 de Julho de 1995
II Parte,
DURAÇÃO MÁXIMA 60 minutos, com consulta

1 Descreva tudo o que acontece até que o comando grep é executado, em termos de processos e descritores de ficheiros, após a chamada a:

popen("grep jlopes /etc/passwd","r");

2 Considere o diagrama da figura para o sistema de ficheiros UNIX:

a. Complete o diagrama com os resultados da execução do programa seguinte, dentro do directório representado na figura:

1 mkdir("dir2",S_IRUSR | S_IWUSR | S_IXUSR);

2 chdir("dir2"); fd= creat("f33",S_IRUSR | S_IWUSR );

b. Qual é o número mínimo de entradas de um directório e porquê? Qual é o valor mínimo de st_nlink para o i-node 4420 após a execução do programa; porquê?

2 Considere o seguinte programa:

1 char buf[]="The quick brown fox jumpes over a lazy dog\n";

2 int s[10];

3 int sum(int op1, int op2) {

4 int j=0;

5 j= op1 + op2;

6 return(j);

7 }

8 int main(void) {

9 int i=0; char *ptr;

10 ptr= malloc(1000);

11 for (i=0;i<9;i++)

12 s[i]= sum(s[i],s[i+1]);

13 exit(0);

14 }

a. Situe cada uma das variáveis do programa nos segmentos do mapa de memória do processo.

b. Para que se usam as funções setjmp() e longjmp()? Que problemas podem resultar do seu uso em termos das variáveis de um programa automatic, register, volatile e static ? E em termos de sinais?

4

a. Descreva todos os passos necessários, num programa em C, à criação de uma FIFO, chamada fifo, com permissões de acesso rw-r--r--, no directório corrente. Como é que outro processo pode usar essa FIFO para escrever "BLA"? Em que condições?

b. O que acontece quando um processo tenta abrir para escrita uma FIFO que nenhum outro processo tem aberta para leitura? O que acontece quando um processo tenta escrever para uma FIFO que não está aberta para leitura por nenhum processo?

NB! No código apresentado, para simplificar, não são testadas eventuais condições de erro.