Escolar Documentos
Profissional Documentos
Cultura Documentos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Estudante
Professor
1. [1 valor] Considere um processador que apresenta uma frequência de funcionamento de 1 GHz. Caso a
memória RAM tenha um tempo de acesso de 80 nanossegundos, o número mínimo de ciclos de relógio que é
gasto para um acesso à memória RAM é… Resposta B
a) 160
b) 80 → 1 GHz = 1 x 109 Hz –> período do ciclo de relógio: 1/frequência = 1x10-9 s = 1 ns
c) 40
d) Nenhuma das anteriores
2. [1 valor] Na imagem em memória de um processo, o segmento que contém as variáveis globais e as variáveis
ditas static é… Resposta: D
a) o segmento text
b) o segmento stack
c) o segmento heap
d) o segmento data
3. [1 valor] Para determinar o PID corrente da shell, qual dos seguintes comandos deve ser executado?
Resposta: A (experimentar na máquina virtual para confirmar)
a) echo $$
b) echo $
c) echo $SHELL
d) echo $PATH
time ps aux
O resultado da execução da linha de comandos foi o seguinte:
real 0m0.145s→ tempo decorrido entre inicio e fim do processo
user 0m0.008s→ tempo de CPU gasto pelo processo em modo utilizador
sys 0m0.084s → tempo de CPU gasto pelo processo em modo kernel
Resposta C
a) A execução esteve 0.008 segundos à espera do utilizador
b) A execução ficou completa em 0.092 segundos
c) A execução requereu 0.084 segundos de CPU em modo kernel
d) Nenhuma das anteriores
6. [1 valor] O mecanismo de Direct Memory Access (DMA) é empregue com… Resposta: B
a) com dispositivos de baixa velocidade (teclados, ratos, etc.)
b) com dispositivos de alta velocidade (discos, placas gráficas, placas de rede)
c) para aliviar a unidade de vírgula flutuante do CPU
d) nenhuma das anteriores
7. [1 valor] Assumindo que sizeof(int) é 4, qual é o tamanho, em bytes, do vector Vetor, declarado da
seguinte forma: int Vetor[20]; Resposta D (20 elementos, cada um ocupando 4 bytes = 20 x 4 = 80 bytes)
a) 20
b) 4
c) 60
d) Nenhuma das anteriores
8. [1 valor] Que tipo de dado da linguagem C é empregue pela chamada ao sistema open para devolver o
descritor de ficheiro? Resposta: C (2ª parte da matéria)
a) double
b) char*
c) int
d) FILE*
9. [1 valor] Considere o seguinte fragmento de linguagem C: printf("INFO"); … Resposta: B (2ª parte da matéria)
a) A palavra INFO é imediatamente escrita para o canal de saída padrão
b) A palavra INFO apenas é escrita para o canal de saída padrão quando o buffer de saída estiver cheio, quando for enviado
um “\n” para a saída padrão ou quando for executado um fflush(stdout)
c) A palavra INFO é imediatamente escrita para o canal de erro padrão
d) Nenhuma das anteriores
10. [1 valor] O sistema operativo mantém uma tabela de página por…Resposta: C (2ª parte da matéria)
a) cada endereço de memória
b) cada instrução
12. [1 valor] No sistema operativo Linux, ocorre um page fault quando…Resposta: B (2ª parte da matéria)
a) uma página retorna dados inconsistentes
b) uma página não pode ser acedida no imediato por não estar presente na memória RAM
c) uma página está corrompida
d) todas as anteriores
13. [1 valor] As duas operações a realizar para que se possam começar a guardar ficheiros regulares e diretórios
num disco HDD ou SSD são: Resposta: A(2ª parte da matéria)
a) Particionamento do disco e criação de sistemas de ficheiros através da formatação lógica
b) Criação da partição de swap e ativação da cache do CPU
c) Criação da partição de swap e criação da hierarquia de diretórios
d) Nenhuma das anteriores
14. [1 valor] Considere o seguinte fragmento de código em linguagem C Resposta C
int func(int n){
assert( n > 0 );
return n / 10; -→ Divisão inteira: 8 / 10 → 0
}
Se a função func for chamada da seguinte forma:
int a = 8;
int r = func(a);
O valor de r será…
a) 8
b) 4
c) 0
d) A aplicação é terminada pela chamada ao assert
15. [1 valor] Considere a seguinte declaração: int **(*X)(int *, char *[]); Resposta A
Uma função compatível com X é:
a) int** F1(int*, char **);
b) int** F2(int*, char [ ]);
c) int* F3(int*, char [ ] [ ]);
d) nenhuma das anteriores
16. [1 valor] Considere um esquema de memória virtual que manipula endereços de 32 bits assente em paginação
dupla (i.e., com dois níveis hierárquicos) em que o primeiro nível (p1) pode ter até 512 entradas e o tamanho
de cada página é de 2KiB. No endereço virtual, qual é o número de bits empregue pelo 2º nível (p2)? Resposta:
D (2ª parte da matéria)
a) 9 bits
b) 10 bits
c) 11 bits
d) 12 bits p19, offset11. p2=(32-(9+11))=32-20=12 bits
17. [4 valores] Considere a seguinte listagem de código em linguagem C. O código compila sem avisos
(warnings) nem erros num sistema Linux empregue na UC de SO.
#include <stdio.h>
void A(int a_param);
void B(int b_param);
void A(int a_param){
printf("A:%d\n", a_param);
B(a_param+1);
}
void B(int b_param){
printf("B:%d\n", b_param);
A(b_param+1);
}
int main(void){
A(1);
return 0;
}
Quando executado no sistema Linux similar ao empregue nas aulas de SO, o programa
termina abruptamente com a seguinte saída:
(…)
A:261945
B:261946
Segmentation fault (core dumped)
Resposta: Existe recursividade sem condição de terminação, o que leva a um ultrapassar dos
limites da pilha (stack overflow) e ao consequente acesso a zonas de memória fora do espaço de
endereçamento do processo, resultando no segmentation fault.
______________________________________________________________________________
______________________________________________________________________________