Você está na página 1de 2

PROVA 02 – 2013/02 (Turma A)

Observação: as respostas abaixo salientam apenas os principais conceitos e não se considera que elas sejam a resposta padrão e
completa a cada questão. Na resposta a prova se espera que essas ideias sejam elaboradas de acordo com o solicitado e, respostas
diferentes, bem fundamentadas, são avaliadas de acordo com sua correção e argumentação.

1ª Questão
(a) Quando se usa memória virtual, a quantidade de memória disponível para o sistema operacional e para os processos do sistema
operacional é dada pela capacidade da RAM e pelo tamanho da área de swap, então, tem-se uma área total de 12 GB. O maior
processo possível de ser executado pelo processador seria, teoricamente, 264, mas isso é superior à memória disponível, então o
fator limitante é a capacidade de memória. Ainda, 1 GB é consumido pelo próprio sistema operacional, por consequência, o maior
processo possível dispõe de 11 GB para si.
(b) Um carregador relocador ajusta os endereços de memória e referências aos dados do programa executável de acordo com o
endereço inicial de memória em que o programa foi carregado. Assim, o processo resultante da carga desse programa só executa
corretamente nesse endereço. Se os mecanismos de gerência de memória realizarem swap-out do processo (todos os modelos), ou
de partes dele, no caso da paginação e segmentação, o processo só poderá ser trazido de volta para memória se a área em que ele
foi carregado inicialmente estiver liberada. A solução para esse problema é utilizar um código executável absoluto, com um
carregador absoluto e um processador que tenha em sua MMU a capacidade fazer amarração dinâmica.

2ª Questão
(a) O tempo médio de acesso a memória é dado em função do hit-ratio, então, tmédio=(ttlb+tmem)*h + (1-h)(ttlb+tmem+tmem). Em caso de hit, há
um acesso a TLB e um acesso à memória para recuperar o dado/instrução. Em caso de mis, há um acesso a TLB, um acesso a
memória para recuperar a entrada da tabela de página correspondente e um acesso à memória para recuperar o dado/instrução. Isso
dá: tmédio=(10+100)*0,85+(10+100+100)*0,15= 125ns. O tempo efetivo é aquele que considera a paginação por demanda. Ele é
calculado com a probabilidade de um acesso à memória gerar uma falta de página, assim, no caso, tefetivo= tmédio*(1-p) + p*tpagefault..
Então, tefetivo = 125 ns * 0,98 + 0.02*2.000.000 ns = 40012,25 ns, ou seja, aproximadamente, 40 us.
(b) Nos mecanismos de gerência de memória alocação particionada fixa (estática), particionada dinâmica e paginação pura, TODO o
processo é carregado na memória, portanto, são necessários 512 MB de memória. Para o caso da paginação por demanda, serão
carregadas inicialmente, apenas as páginas necessárias para o início da execução do programa. Em um extremo, são necessárias
apenas a página de código, onde está o main, e uma página inicial para a pilha. Não há carga de páginas na área de heap (não se
sabe se o programa fará mallocs) e não se sabe quais dados serão usados. Dessa forma, em um extremo, apenas 2 páginas seriam
carregadas o que equivale a 8 KB de memória. (Nota.: poderiam ser feitas considerações sobre a carga de alguma – não todas –
páginas de dados. As demais páginas de código, dados, pilha e heap seriam alocadas a medida que o programa necessitasse).

3ª Questão
(a) Na paginação o endereço lógico é identificado em duas partes: identificador de página e deslocamento. O número de páginas é dado
pela quantidade de bits do identificador de páginas, que corresponde ao número de entradas da tabela de páginas. Na paginação
multinível o identificador é “quebrado” em campos com o objetivo de paginar a tabela de página, posto isso:
I. o número total entradas na tabela de páginas é 2 (a+b+c), que corresponde a parte que identifica a página através de diretório
de diretórios tabelas de tabelas (a); diretórios de tabelas de páginas (b) e tabela de páginas propriamente dita (c). Esse é o
número total de páginas, o que inclui as páginas usadas pelos diretórios e tabela de páginas e as próprias do processo; afinal,
o sistema, como um todo, tem apenas 232/2d páginas.
II. O campo d sendo fixado em 10 bits, tem-se páginas de 1024 bytes (1 KB). A tabela de páginas contém um certo número de
entradas que é resultante da divisão do tamanho da página (1024) pelo tamanho da entrada. Supondo que cada entrada
tenha 32 bits, a tabela de páginas possui 256 entradas, o que implica em 8 bits para acessá-la. O mesmo raciocínio vale para
o diretório da tabela de páginas, ou seja, deve caber em uma página (1024 bytes). Com entradas de 32 bits, o diretório de
tabela de páginas também é endereçado por 8 bits (256 entradas). Sendo assim, os campos c e b são de 8 bits, sobrando 6
bits para o campo a. Conclusão: a=6; b=8; c=8 e d=10. O ponto chave é que todas as tabelas tem que armazenar seus dados
em páginas.
(b) A vantagem da paginação é que para carregar um processo na memória não é necessário ter uma área contígua de memória, do
tamanho do processo, disponível, basta ter a quantidade suficiente de páginas. Além disso, na paginação a fragmentação interna fica
limitada a última página do processo (ou da área de código, dados, heap e pilha), ao passo que na alocação particionada fixa a
fragmentação é a diferença entre o tamanho da partição e o tamanho do processo (tende a ser maior que a da paginação).
4ª Questão
(a) O working set de um processo Pi fornece a quantidade de quadros que ele necessita em um determinado momento para executar. A
soma da cardinalidade de todos os working sets dos processos que estão em execução não deve exceder a capacidade total de
quadros no sistema. Se isso acontecer, deve-se fazer o swap-out de um processo. Ao manter a soma da cardinalidade dos workings
set inferior a quantidade total dos quadros se permite que os processos tenham memória suficiente para executar causando pouca
falta de páginas.
(b) Item (i): a quantidade máxima de memória disponível por um processo é dado pelo somatório da capacidade de RAM e o tamanho da
área de swap. Se não há área de swap, o maior processo fica limitado a 2 GB (desconsiderando a área ocupada pelo sistema
operacional). Item (ii): O formato do endereço lógico da segmentação com paginação é dado por três campos: s, p e d. Oespaço de
endereçamento é de 32 bits, o maior segmento tem 1 MB (220 bits), então são necessário 12 bits para identificar o segmento (s=12).
Como é usado segmentação com paginação, e cada página possui 256 bytes, se necessita 8 bits para endereçar cada byte de uma
página, assim, o campo deslocamento possui 8 bits (d=8). Restam 12 bits para identificar a página (p=12). Resposta: s=12; p=12; e
d=8 bits. Item (iii): tmédio = 0.95*(10+100) + 0.05*(10+100+100+100) = 120 ns. Em caso hit, a entrada da tabela já está na TLB, então
acessa a TLB (10ns) e depois o dado (100 ns). Se não estiver na TLB (acesso em 10ns), é preciso acessar a tabela de segmentos
(100ns), a tabela de páginas dentro do segmento (100 ns) e, finalmente, o dado (100 ns).

5ª questão
(a) A vantagem da segmentação é que para carregar um processo na memória não é necessário ter uma área contígua de memória, do
tamanho do processo, disponível, basta ter a quantidade de memória suficiente para cada um dos seus segmentos. Esse
procedimento tende a reduzir a fragmentação externa.
(b) A substituição FIFO escolhe como vítima a página mais antiga em memória, ou seja, a primeira carregada, no caso, a página 2. No
LRU é escolhida a página que tem a sua referência de acesso mais antiga, ou seja, a que foi usada a mais tempo atrás (menos
recentemente usada) que é a página 0. No algoritmo de segunda chance melhorado, se varre as páginas na ordem FIFO de carga.
Um ponteiro faz um scan procurando a página que tem os bits RS igual a zero (selec). Cada vez que o ponteiro avança os bits RS
são atualizados de acordo com a tabela abaixo. Como tanto 10 como 01 levam para a situação 00 é necessário armazenar uma
informação adicional em algum lugar (o asterisco) para indicar qual combinação tinha a página suja (essa não deve ser a página a ser
preferencialmente substituída – tem que pagar o page-out) colocando o bit de referência igual a zero e, se já estiver em zero, analisa-
se o bit sujo. Sendo assim, a página a ser substituída é a 3. (Resposta: FIFO, página 2; LRU, página 0; segunda chance melhorado,
página 3).

Antes Depois
Bit RS Bit RS
11 01
10 00
01 00*
00 selec

Você também pode gostar