Você está na página 1de 6

Sistemas Operativos

1º ano - Licenciat ura em Engenhar ia


Informática
REGIME DIURNO E PÓS-LABORAL
2ºSemestre 2017/2018

Prova Escrita (sem consulta) – Avaliação contínua – Enunciado A


Data: 2018.06.09 / 09h30 Duração: 60 minutos Publicação resultados: 2018.06.21
Nome Completo:______________________________________ N.º aluno:________ Regime: D [ ] PL [ ]

Todas as perguntas devem ser resolvidas no enunciado!

Grupo I [16 valores]


- Considere que todas as perguntas deste grupo são independentes.
- Todas as perguntas respondidas incorretamente ou de forma ambígua
descontam 25% da cotação da pergunta.
- Indique, na tabela de respostas, a opção que considera a mais completa para cada
uma das questões do grupo.

Tabela de respostas do Grupo I


Escreva, de forma legível, no retângulo reservado para o efeito, a letra da opção que considera a resposta certa. Caso não
pretenda responder à pergunta, escreva “X“ no meio do retângulo.

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

4. [1 valor] No Unix/Linux, cada processo é identificado…


Resposta:A
a) pelo Process ID (PID)
b) pelo User ID (UID)
c) pelo Parent Process ID (PPID)
d) nenhuma das anteriores
5. [1 valor] O utilizador user executou a seguinte linha de comandos num sistema Linux Lubuntu:

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

Prova Escrita 2/6


c) cada processo
d) todas as anteriores

Prova Escrita 3/6


11. [1 valor] Qual é a chamada ao sistema invocada pelo comando chmod? Resposta B(2ª parte da matéria)
a) chmod_syscall
b) chmod
c) stat
d) nenhuma das anteriores

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 p19, offset11. p2=(32-(9+11))=32-20=12 bits

Prova Escrita 4/6


Grupo II [4 valores]
Deve escrever com caligrafia legível. Respostas ilegíveis não são consideradas,
resultando na atribuição da nota 0 (zero valores) à alínea em apreço.

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)

a) Indique, justificando convenientemente, o que levou ao término abrupto do programa.

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.
______________________________________________________________________________
______________________________________________________________________________

b) Apesar da mensagem de término indicar “(core dumped)”, constata-se que nenhum


ficheiro core foi criado. Porque será? Justifique convenientemente.
Resposta: a não criação do ficheiro core deve-se à configuração da sessão, que por omissão tem
o valor do core file size a zero. Caso se pretenda que seja criado ficheiro core, deve-se executar
ulimit -c 9999999 na sessão antes de executar o programa.
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________
______________________________________________________________________________

Prova Escrita 5/6


______________________________________________________________________________
______________________________________________________________________________

Prova Escrita 6/6

Você também pode gostar