Escolar Documentos
Profissional Documentos
Cultura Documentos
2º Teste So 2013-2014-Com Solucoes
2º Teste So 2013-2014-Com Solucoes
Nome:
Considere
a
seguinte
figura
que
ilustra
a
gesto
de
blocos
na
cache
de
blocos
num
sistema
de
ficheiros
Unix.
9 - S ISTEMA DE F ICH
Tabela
de hash
Listas LRU
Dirty
Locked
0.5 K 1 K
Clean
2K
4K 8K
Figura 9.13 - Cache de disco tradicional do Unix
1. [0.5
val]
Considere
que
um
processo
pretende
ler
um
bloco
e
este
encontrado
na
lista
de
Dirty.
Se um descritor possui o endereo de um tampo que nunca foi usado por nenhum
Que
alteraes
lista
decorreriam
da
leitura?
Justifique.
desde que o sistema foi iniciado ento o descritor diz-se livre, e colocado num
listas de blocos livres (ver detalhe na seco 9.1.2.4). Se o descritor referencia um
A
lista
LRU
dos
blocos
Dirty
seria
alterada,
para
que
o
bloco
acedido
ficasse
na
posio
associada
ao
acesso
de dados ento colocado numa tabela de disperso indexado pelo tuplo que cons
mais
recente.
identificador do bloco.
Locked.
mas que ainda no foram actualizados no disco, diz-se que a entrada est modif
3.
[1
val]
Considere
que
a
cache
est
cheia
e
necessrio
trazer
um
novo
bloco
para
memria.
De
que
de/para o disco ento diz-se que a entrada est reservada (Locked).
lista
iria
retirar
um
bloco?
Justifique.
O processo de leitura comea por tentar localizar o bloco na cache (em qualquer um
listas). Se o bloco no existir na cache tem de ser lido do disco e comea-se por re
um bloco da lista de blocos livres. Caso no existam blocos na lista de blocos livres
executa-se o procedimento de substituio que retira alguns blocos da cache, de a
Pgina 2 de 5
5. [1
val]
O
suporte
para
memory
mapped
files
obrigou
a
integrar
a
cache
de
blocos
(buffer
cache)
do
sistema
de
ficheiros
com
a
gesto
de
memria
virtual.
Indique
porque
que
esta
integrao
necessria.
Um
processo
que
usa
a
interface
memory
mapped
deve
ver
o
mesmo
contedo
do
ficheiro
que
um
processo
que
usa
a
cache
de
blocos.
Desta
forma,
se
o
bloco
em
cache
no
estivesse
localizado
na
mesma
trama
(ou
pgina
fsica)
)
que
a
pgina
virtual,
existiriam
na
RAM
duas
cpias
do
mesmo
bloco
e
seria
necessrio
replicar
qualquer
atualizao
que
fosse
feita
no
ficheiro,
nessas
duas
cpias.
Grupo II [8v]
1. Considere
um
sistema
de
gesto
de
memria
paginado
com
pginas
de
2KByte
de
dimenso.
a. [1
val]
Quantos
bits
de
um
endereo
virtual
so
necessrios
para
indicar
o
deslocamento
dentro
de
uma
pgina?
So
precisos
11
bits
(os
menos
significativos).
b.
[1
val]
Assumindo
que
os
endereos
virtuais
neste
sistema
tm
32
bits,
quantas
pginas
virtuais
existem
no
mximo?
Dado
que
dos
32
bits
os
11
menos
signidicaftivos
so
para
o
deslocamento,
ficam
21
bits
(ao
mais
significativos)
para
identificar
cada
uma
das
pginas.
Assim,
temos
no
mximo
2^21
pginas.
2. [1
val]
Considere
a
utilizao
de
uma
TLB
(translation
lookaside
buffer)
tal
como
ilustrada
em
seguida.
Complete
as
caixas
em
falta.
Bits da pgina
so enviados
para o TLB
Comparao
Acesso
1 de
tabela
pginas
Pgina
presente?
N
(1)
acesso
tabela
de
pginas
(2)
trazer
pgina
de
memria
secundria
(3)
actualizar
TLB
Actualizar
3
TLB
Concatenar
base e
deslocamento
Nmero:
Pgina 3 de 5
3. [1
val]
Considere
o
suporte
de
pginas
partilhadas
no
Linux.
A
existncia
de
pginas
partilhadas
entre
processos
distintos
levanta
um
potencial
problema
de
desempenho:
quando
alterado
o
estado
de
uma
pgina
partilhada,
por
exemplo,
deixa
de
estar
carregada
em
memria
passando
para
memria
secundria,
preciso
actualizar
todas
as
page
table
entries
(PTE)
correspondentes
em
todos
os
processos
de
cujo
espao
de
endereamento
essa
pgina
faz
parte.
Diga
como
que
o
Linux
efectua
essas
actualizaes
de
forma
eficiente.
O
Linux
usa
o
mecanismo
de
projeco
inversa
(reverse
mapping).
Consiste
em
usar
estruturas
de
dados
auxiliares
associadas
a
pginas
partilhadas;
para
qualquer
uma
dessas
pginas
fsicas
partilhadas,
as
estruturas
de
dados
auxiliares
permitem
saber
quais
as
PTE
que
a
referenciam,
sem
ter
de
percorrer
as
tabelas
de
pginas
de
todos
os
processos.
4. [1
val]
Considere
o
algoritmo
de
substituio
de
pginas
designado
FIFO.
Apresente
a
sua
desvantagem
principal.
Justifique
com
um
exemplo
concreto.
No
atende
ao
grau
de
utilizao
das
pginas
(apenas
ao
seu
tempo
de
permanncia
em
memria
primria).
Uma
pgina
muito
usada
pode
ser
retirada
para
ser
carregada
imediatamente
de
seguida.
5. [1
val]
Certos
algoritmos
de
gesto
de
memria
so
adaptativos
pois
tentam
manter
o
working
set
de
cada
processo
em
memria
principal.
Diga
o
que
pode
suceder
se
a
estimativa
da
dimenso
do
working
set
for
muito
baixa
(i.e.
inferior
realidade).
Aumento
significativo
da
paginao
durante
a
execuo
do
processo,
devido
ao
facto
de
as
pginas
que
constituem
o
espao
de
trabalho
no
estarem
simultaneamente
em
memria
principal.
6. [2
val]
Um
dos
algoritmos
de
substituio
de
pginas
designado
Not
Recently
Used
(NRU).
Diga
quais
os
bits
que
so
usados
para
implementar
este
algoritmo;
onde
se
encontram
guardados
estes
bits;
quais
os
seus
valores
e
significados;
este
algoritmo
escolhe
quais
pginas
para
serem
substitudas?
Os
bits
em
causa
so
os
R
e
M
que
significam
R
de
pgina
lida
e
M
de
pgina
modificada.
So
guardados
na
Tabele
de
Pginas,
cada
par
R
e
M
em
cada
PTE.
Valores:
0:
(R
=
0,
M
=
0)
No
referenciada,
no
modificada
1:
(R
=
0,
M
=
1)
No
referenciada,
modificada
2:
(R
=
1,
M
=
0)
Referenciada,
no
modificada
3:
(R
=
1,
M
=
1)
Referenciada,
modificada
Libertam-se
primeiro
as
pginas
dos
grupos
de
nmero
mais
baixo
Pgina 4 de 5
Grupo III [8v]
Considere
o
seguinte
pseudo-cdigo.
main() {
char msg[DIM], tmp[DIM];
int fds[2], pid_filho;
[...]
if (pipe (fds) < 0) exit(-1);
if (fork () == 0) {
read (fds[0], tmp, sizeof (msg));
exit (0);
}
else {
write (fds[1], msg, sizeof (msg));
pid_filho = wait();
}
}
1. [2
val]
Diga
qual
a
comunicao
que
est
a
ser
efectuada
(no
se
esquea
de
indicar
qual
o
processo
emissor
e
qual
o
processo
receptor).
Comunicao
unidirecional
atravs
de
um
pipe
annimo
entre
o
processo
pai
(emissor)
e
o
processo
filho
(receptor).
2.
[2
val]
Considere
que
o
processo
que
faz
read(...)
executaria,
em
vez
disso,
exec
(xpto)
sendo
xpto
um
programa
que
l
strings
do
stdin.
Altere
o
pseudo-cdigo
dado
de
modo
a
que:
-
o
programa
xpto
consiga
receber
a
informao
enviada
pelo
processo
que
executa
write(),
e
-
que
este
envia
a
informao
escrevendo
no
stdout.
(Note
que
no
possvel
alterar
o
cdigo
do
programa
xpto).
main()
{
char
msg[DIM],
tmp[DIM];
int
fds[2],
pid_filho;
[...]
if
(pipe
(fds)
<
0)
exit(-1);
if
(fork
()
==
0)
{
close
(0);
dup
(fsd[0]);
exec
(xpto);
}
else
{
close
(1);
dup
(fsd[1]);
write
(1,
msg,
sizeof
(msg));
pid_filho
=
wait();
}
}
Nmero:
Pgina 5 de 5
3. Tenha
em
conta
que
um
canal
de
comunicao
pode
ser
implementado
com
dois
tipos
de
mecanismos
(cpia
via
ncleo
ou
por
cpia
recorrendo
a
memria
partilhada).
a) [1
val]
Diga
qual
o
mecanismo
usado
no
programa
acima
apresentado.
O
mecanismo
a
transferencia
atravs
do
ncleo
do
sistema
operativo;
os
dados
so
sempre
copiados
para
o
ncleo
antes
de
serem
transferidos
para
o
espao
de
endereamento
do
receptor.
b) [1
val]
Considere
o
mecanismo
alternativo
ao
que
indicou.
Explique
em
que
consiste.
Como
compara
ambos
no
que
diz
respeito
ao
desempenho?
Justifique
a
sua
resposta
explicando
a
razo
para
a
sua
resposta.
O
mecanismo
alternativo
a
memria
partilhada.
Neste
mecanismo
os
processos
acedem
a
uma
zona
de
memria
que
faz
parte
do
espao
de
endereamento
dos
processos
comunicantes.
A
comunicao
atravs
do
ncleo
mais
lenta
pois
implica
duas
cpias
da
informao
(atravs
do
ncleo)
assim
como
o
custo
das
chamadas
ao
sistema
(embora
tipicamente,
quando
se
usa
memria
partilhada,
acaba
por
ser
tambm
necessrio
fazer
chamadas
ao
sistema
para
concretizar
a
sincronizao).
4. Considere
no
Linux
um
processo
que:
- pode
receber
mensagens
atravs
de
um
pipe,
de
um
socket
AF_UNIX
ou
de
um
socket
AF_INET.
-
os
descritores
so,
respectivamente,
5,6
e
7.
a) [1
val]
Qual
a
chamada
sistema
que
utilizaria
para
se
bloquear
at
receber
dados
por
qualquer
um
destes
canais?
Justifique
a
sua
resposta
explicando
o
modo
de
funcionamento.
Chamada
sistema
select;
Permite
dizer
ao
SO
quais
os
descritores
em
que
o
processo
pretende
receber
informao
ficando
bloqueado
apenas
nesta
funo;
Processo
desbloqueia
quando
houver
alguma
informao
num
dos
descriptores
(ou
em
vrios).
b) [0.5
val]
Nessa
chamada,
como
indicaria
quais
os
descritores
em
que
o
processo
em
causa
pretende
receber
mensagens?
Um
dos
parmetros
da
chamada
select
um
vector
de
bits
associados
aos
file
descriptors
de
onde
se
pretende
ler
(mais
precisamente,
o
segundo
parmetro).
Indicaria
os
descritores
atravs
da
colocao
a
1
dos
bits
correspondentes
aos
descritores
em
causa
(bits
na
posio
5,
6
e
7)
no
vector
acima
referido.
Isto
pode
ser
feito
atravs
da
macro
FD_SET.
c) [0.5
val]
Nessa
chamada,
como
que
o
programa
pode
saber
qual
ou
quais
os
descritores
que
tm
informao
que
pode
ser
acedida?
O
parmetro
referido
na
pergunta
anterior
passado
por
referncia.
O
sistema,
ao
retornar
do
select,
coloca
a
1
os
bits
cuja
posio
correspondem
aos
descritores
que
tm
informao
para
ser
acedida
e
apaga
os
restantes
bits.
Isto
pode
ser
feito
atravs
da
macro
FD_ISSET.