Vous êtes sur la page 1sur 4

Sistemas de Informacao

Faculdade de Engenharia da Universidade do Porto


Exame de 14 de Junho de 2012
Duracao: 2h
Sem consulta

Responda `
as perguntas (1 e 2) em folhas separadas.
A pergunta 3 deve ser respondida no pr
oprio enunciado.
1. Uma empresa pretende criar um sistema de informacao que permita guardar informacoes referentes `as
tarefas a executar pelos seus empregados.
As caractersticas do sistema de informacao pretendido s
ao as seguintes:

Cada empregado tem um n


umero identificativo (obrigatorio e u
nico), um nome (obrigatorio), uma
morada (facultativa) e um contacto telef
onico (obrigatorio).

Uma tarefa tem um id (


unico), um ttulo, uma descricao, uma data limite de conclus
ao e uma data
efetiva de conclus
ao. Todos estes dados s
ao obrigatorios exceto a data efetiva de conclus
ao que
apenas e preenchida quando a tarefa for terminada.

Uma tarefa pode depender de v


arias outras tarefas e pode ter v
arias tarefas que dependem dela.

Quando uma tarefa e introduzida no sistema deve ficar registado qual o empregado que a introduziu
(supervisor da tarefa). N
ao podem existir tarefas sem supervisor. Mais tarde, a tarefa e atribuda
a um empregado (executante).

Numa tarefa podem ser utilizados v


arios tipos de pecas. Um tipo de peca e caraterizado por uma

referencia (
unica), um nome e uma quantidade em stock. Todos estes dados s
ao obrigatorios. E
necessario guardar, para cada tarefa, quais os tipos de peca utilizados e em que quantidade.

31/2 val.

c
ao para uma base de dados que satisfaca os requisitos enu(a) Desenhe o modelo entidade-associa
merados. Escolha o nome mais apropriado para cada uma das entidades, atributos e associacoes
que ache necessarias.

21/2 val.

(b) Elabore o modelo relacional correspondente ao modelo entidade-associacao que acabou de desenhar. N
ao se esqueca de representar as chaves prim
arias, chaves estrangeiras, tipos dos dados e
campos que nao devem ter valores nulos.
Nota: Use a mesma notaca
o da pergunta 2 (na pr
oxima p
agina).

14 de Junho de 2012 (A)

Sistemas de Informacao / MIEEC

AOR, JMC, CMC

2. Considere o seguinte modelo relacional que representa a base de dados de um sistema de trouble tickets.
Neste sistema, cada operador e respons
avel por uma determinada area. Cada trouble ticket tambem
pertence a uma
area e pode ter um operador atribudo. O operador de um trouble ticket nao tem
necessariamente de ser da
area do trouble ticket. Um trouble ticket tem sempre uma data de nicio
(data i ) e, quando fica resolvido, passa a ter uma data de fim (data f ).
operador

ticket

id
integer
ref

integer
area

num
integer

nome
varchar
NN

data i
NN
date

email
varchar
NN, UK

data f
date

#area area
integer
NN

titulo
NN
varchar

descricao
NN
varchar

#area area
NN
integer

#id operador
integer

nome
varchar
NN

Responda `
as seguintes perguntas usando SQL:
1 val.

(a) Que tickets ainda est


ao por resolver e de que area s
ao? (ref, titulo, area)

1 val.

(b) Quantos tickets por resolver existem em cada area? N


ao se esqueca das areas que nao tem nenhum
ticket por resolver. (num, area, quantidade)

1 val.

area resolveu o operador com o email omaior@fe.up.pt? Ordene a resposta


(c) Quantos tickets de cada
da area com mais tickets para a
area com menos tickets. (num, nome, quantidade)

11/2 val.

(d) Que
area, ou
areas, tem mais trouble tickets por resolver? (num, area)

11/2 val.

(e) Que operadores resolveram todos os tickets da sua area em menos de dois dias? Para simplificar,
pode considerar que a subtracao de datas em SQL retorna um inteiro contendo o n
umero de dias
que as separa. (id, nome)
Nota: No fim de cada alnea encontram-se os nomes esperados das colunas da resposta.

14 de Junho de 2012 (A)

Sistemas de Informacao / MIEEC

AOR, JMC, CMC

Exame de Sistemas de Informacao


14 de Junho de 2012
Nome:
N
umero de Aluno:
3. Responda `
as seguintes perguntas sobre Sistemas Operativos e C++ no proprio enunciado. Nas perguntas
de resposta m
ultipla, respostas erradas descontam 1/3 da cotacao da pergunta mas pode escolher mais
do que uma resposta para cada pergunta.
1 val.

(a) No seguinte trecho de codigo:


int quadrado ( int a ) {
return ( a ) ( a ) ;
}
int main ( ) {
int b = 1 0 ;
quadrado(&b ) ;
}
Em que parte da mem
oria s
ao guardadas as variaveis a e b:
 a na stack e b na heap  ambas na stack  a na heap e b na stack

 ambas na heap

1 val.

(b) Trashing





e um fenomeno que acontece quando:


ha muitas trocas de paginas entre a mem
oria virtual e fsica.
dois apontadores apontam para o mesmo espaco de mem
oria destruindo o seu conte
udo.
um processo termina sem libertar todos os recursos deixando lixo em mem
oria.
um processo e obrigado a libertar espaco de mem
oria pelo SO.

1 val.

(c) Imagine duas threads que tem acesso a dois mutexes A e B. Ambas fazem lock aos dois mutexes
antes de entrar na seccao crtica e unlock ao sair mas por ordens diferentes:
Thread 1: lock(A); lock(B); <seccao critica>; unlock(B); unlock(A);
Thread 2: lock(B); lock(A); <seccao critica>; unlock(A); unlock(B);
Que problema pode resultar deste codigo:

1 val.

(d) Por que ordem s


ao efetuadas as seguintes operacoes quando queremos criar um socket POSIX num
servidor:
 accept, bind, listen  bind, listen, accept  accept, listen, bind  bind, accept, listen

14 de Junho de 2012 (A)

Sistemas de Informacao / MIEEC

AOR, JMC, CMC

1 val.

(e) No seguinte trecho de codigo:


void i n c r e m e n t a 1 ( int &a ) { a++; }
void i n c r e m e n t a 2 ( int a ) { a; }
void i n c r e m e n t a 3 ( int a ) { a++; }
void main ( ) {
int x = 1 0 , y = 5 ;
incrementa1 ( x ) ;
incrementa2 ( y ) ;
i n c r e m e n t a 3 (&x ) ;
}
Qual o valor final das variaveis x e y:

1 val.

(f) Quando criamos uma thread POSIX em C, temos de indicar uma funcao que vai servir de ponto
inicial de execucao para essa thread. O prot
otipo dessa funcao tem sempre o seguinte aspeto:
void f u n c a o ( void a r g s ) ;
Imaginando que queremos passar uma string para essa funcao, como fazemos para a desreferenciar
dentro da funcao? Complete o seguinte codigo de forma a atribuir `a variavel s o valor passado por
par
ametro:
void f u n c a o ( void a r g s ) {
string s =
}

1 val.

(g) Indique uma raz


ao para preferir usar alocacao din
amica de mem
oria em relacao `a alocacao est
atica
de mem
oria:

1 val.

(h) Indique duas diferencas entre processos e threads:

14 de Junho de 2012 (A)

Sistemas de Informacao / MIEEC

AOR, JMC, CMC

Vous aimerez peut-être aussi