Você está na página 1de 5

Nmero:

Nome:

LEIC/LERC 2013/14 - 2 Teste de Sistemas Operativos 8/Janeiro/2014


Identifique todas as folhas. Responda no enunciado, apenas no espao fornecido.
Justifique todas as respostas. Durao: 1h30m
Grupo I [4v]

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.

2. [0.5 val] Um bloco pode


sair da
lista listas
de Dirty
e passar
para a lista de Clean?
Justifique.
Existem
trs
ligadas
que correspondem
a trs estados
diferentes dos tamp

cache. Se o contedo do tampo igual ao contedo do bloco existente em disco,

Sim, embora no diretamente.


cleo
copia periodicamente
os blocos
para dcontm
isco, ficando
diz-seO nque
a entrada
est limpa (Clean).
Sedirty
a entrada
dadosestes
que foram e
clean. No entanto, durante
a

c
pia
p
ara
d
isco,
o

b
loco
f
icaria

Locked.
mas que ainda no foram actualizados no disco, diz-se que a entrada est modif

(Dirty). Finalmente, se a entrada estiver actualmente a ser alvo de uma transfe

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.

As trs listas ligadas servem para simplificar a escolha do bloco a substituir. Um


Da lista de blocos Clean. que esteja na lista Clean pode ser substitudo imediatamente, pois no necessrio
lizar a sua imagem em disco. J um bloco que esteja na lista Dirty tem de ser escr
4. [1 val] Indique que odisco
peraes
podem
colocar
um bloco
na lista
Locked. de substituio de blocos d,
antes
de ser
substitudo,
pelo
que doe algoritmo

mente, prioridade aos blocos na lista Clean. Por fim um bloco que esteja na lista L
O bloco est a ser alvo de uno
ma dever
operao
escrita ou lem
eitura
para
memria
secundaria Clean,
(tipicamente,
serde
substitudo
caso
algum.
As estruturas
Dirty e Locked so
atravs de DMA).
porque o que se pretende uma poltica de substituio do tipo LRU (Captulo 8
interessa localizar o bloco menos utilizado dentro de cada lista.

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.

Você também pode gostar