Você está na página 1de 11

Ministério da Ciência, Tecnologia e Ensino Superior

Curso: ................................................................................................................................................

Prova de Sistemas Operativos (21111) Data: 04 de Setembro de 2009

Nome: .................................................................................................................................................
Nº de Estudante: ........................................ B. I. nº ..............................................
Turma: ................... Assinatura do Vigilante: .............................................

RESERVADO PARA A Universidade Aberta

Classificação: ( ) ..................................................................................................................

Prof. que classificou a prova: ......................................................................................................

Para a resolução do teste, leia as seguintes informações e


instruções, antes de responder

- O enunciado do teste tem 11 páginas, sendo constituído por duas partes, I e II, com a
cotação total de 20 valores.
- Nas respostas, tenha a preocupação de utilizar uma letra legível por outra pessoa.
- A parte I é constituída por questões do tipo resposta aberta, com a cotação total de
12 valores.
- A parte II é constituída por questões de escrita de Software, com a cotação total de 8
valores.
- As cotações são indicadas nas próprias questões/alíneas.
- As respostas às questões devem ser dadas no próprio enunciado, limitadas ao espaço
em branco a seguir a cada questão. Antes de escrever, planeie a sua resposta de
acordo com o espaço disponível.
- Todas as respostas devem ser escritas unicamente com caneta azul ou preta.
- É permitido utilizar máquina de calcular.
- O não cumprimento das instruções implica a anulação das respectivas questões ou
do teste.
- O tempo de realização do teste é de 150 minutos.
- Verifique se o teste está completo e termina na palavra FIM.

1
Grupo I

1.1. [1] Relacione e caracterize os conceitos de multiprogramação e de partilha no


tempo (timesharing).

1.2. [1] O que entende por uma “pathname” ?

2
1.3. [1] Explique o funcionamento e utilidade da instrução de CPU designada por
TRAP.

1.4. [1] Caracterize resumidamente o conceito de sistema operativo de tempo real e as


suas variantes.

3
1.5. [1] Em que consiste uma tabela de processos ?

1.6. [1] O que entende por um processo tipo “deamon” ?

4
1.7. [1] Suponha um sistema constituído por dois processos em que cada um passa 60%
do seu tempo à espera de operações de I/O. Indique a percentagem temporal
aproximada de ocupação do CPU.

1.8. [1] Explique sucintamente em que consiste a técnica de “swapping”. Que


problemas levanta a nível de gestão de memória?

5
1.9. [1] Explique em que consiste uma Tabela de Tradução de Endereços (TLB) e a
importância da sua existência.

1.10. [1] No âmbito do software de I/O, explique o conceito de “independência do


dispositivo”.

6
1.11. [2] Considere um disco rígido com um tempo de acesso de pista para pista de 5
ms, posição actual das cabeças de leitura no cilindro 29. Ao gestor de
dispositivo chegam pedidos de leitura para os cilindros 10, 4, 35, 30, 47 e 28.
Calcule o tempo de acesso (em segundos) para satisfazer todos os pedidos
quando são aplicados os seguintes algoritmos: (i) primeiro a chegar primeiro a
ser servido; (ii) Cilindro mais próximo; (iii) elevador (movimento inicial para
cima).

7
Grupo II

Nas questões que se seguem, além de apresentar o código, deverá também


comentar/explicar a sua estrutura e funcionamento, factor igualmente importante para
a classificação das respostas.

2.1. [4] Escreva um programa multitarefa em linguagem C segundo a norma POSIX


que determine o valor médio e o valor mínimo dos elementos de um vector int
x[] de dimensão int nx. O vector e a sua dimensão constituem variáveis
globais ao programa e admite-se que foram devidamente inicializados.

A tarefa principal deve criar duas sub-tarefas em que cada uma em paralelo (ou
em pseudo-paralelismo) calcula um dos valores desejados. A tarefa principal
deve esperar que ambas as tarefas terminem e depois deve imprimir os resultados
finais e terminar.

Nota: planeie cuidadosamente como é efectuada a sincronização e a comunicação


da informação necessária à resolução do problema entre as três tarefas

8
(espaço de resposta à questão 2.1.)

9
2.2. [4] Escreva um programa em pseudo-linguagem C para o problema dos
escritores-leitores, em que se consideram múltiplos escritores e múltiplos
leitores. Um escritor não pode aceder à base de dados em simultâneo com
nenhum outro processo. Vários leitores, no máximo até quatro, podem aceder
simultâneamente à base de dados. Para o acesso à base de dados considere
funções genéricas ler()e escrever().

Comente se na solução que apresentou pode ocorrer privação para um escritor.

10
Formulário

#include <stdlib.h>
int system(char *string);

#include <sys/types.h>
#include <unistd.h>
pid_t fork(void);
pid_t getpid(void);
pid_t getppid(void);

#include <unistd.h>
unsigned int sleep(unsigned int seconds);
extern char **environ;
int execl(char *path, char *arg, ...);
int execlp(char *file, char *arg, ...);
int execle(char *path, char *arg , ..., char *envp[]);
int execv(char *path, char *argv[]);
int execvp(char *file, char *argv[]);
int execve(char *path, char *argv [], char *envp[]);

#include <sys/types.h>
#include <sys/wait.h>
pid_t wait(int *status);

#include <pthread.h>
int pthread_create(pthread_t *thread, pthread_attr_t *attr,
void *(*start_routine)(void*), void *arg);
int pthread_attr_init(pthread_attr_t *attr);
int pthread_attr_setdetachstate(pthread_attr_t *attr, int
detachstate);
#define PTHREAD_CREATE_DETACHED
#define PTHREAD_CREATE_JOINABLE
int pthread_join(pthread_t thread, void **value_ptr);
int pthread_mutex_init(pthread_mutex_t *mutex,
pthread_mutexattr_t * attr);
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
int pthread_mutex_destroy(pthread_mutex_t *mutex);

FIM

11

Você também pode gostar