traduzir o endereço virtual para o endereço físico

a tabela seguinte é para um sistema com endereços virtuais e físicos de 16 bits e com 4.096 páginas de bytes. O bit de referência é definido para 1 quando a página foi referenciada. Periodicamente, um thread elimina todos os valores do bit de referência.Todos os números são fornecidos em casas decimais. enter image description here

quero converter os seguintes endereços virtuais (em hexadecimal) para os endereços físicos equivalentes. Também eu quero definir o bit de referência para a entrada apropriada no mesa de página.

0xE12C

0x3A9D

0xA9D9

0x7001

0xACA1

Eu sei que as respostas são, mas quero saber como posso conseguir estas respostas.
0xE12C → 0x312C
0x3A9D → 0xAA9D
0xA9D9 → 0x59D9
0x7001 → 0xF001
0xACA1 → 0x5CA1
Encontrei e experimentei isto, mas não me ajudou muito.

Author: joke, 2016-10-27

3 answers

É dado que o endereço virtual tem 16 bits de comprimento.Assim, existem 2^16 endereços no espaço de endereços virtuais.
O tamanho da página é dado para ser 4 KB ( existem 4K (4 * (2 ^ 10) endereços em uma página), de modo que o número de páginas será ( 2^16 ) / ( 2 ^ 12 ) = 2 ^ 4.
para cada página são necessários 4 bits.
Os 4 bits mais significativos no endereço virtual denotarão o número da página a ser referido e os restantes 12 bits serão o deslocamento da página.

Uma coisa. lembrar é o tamanho da Página (no espaço de endereço virtual) é sempre o mesmo que o tamanho da moldura na memória principal. Assim, os últimos 12 bits permanecerão os mesmos no endereço físico que o do endereço virtual.

Para obter o endereço da moldura na memória principal basta usar os primeiros 4 bits.
Exemplo: considere o endereço virtual 0xACA1
Aqui a in aCA1 denota o número da Página (10 ) e o quadro correspondente no é 5 (0101) daí o endereço físico resultante será → 0x5CA1.

 9
Author: Akash Mahapatra, 2016-10-28 07:58:25

Para traduzir um endereço virtual para um endereço físico, precisamos de saber 3 coisas:

  • Tamanho da memória física (por exemplo, não é importante.. olha [1]
  • Tamanho Da Página
  • Número de bits para o endereço virtual

Neste exemplo: sistema de 16 bits, 4KB page size and physical memory size is 64KB .

Em primeiro lugar, temos de determinar o número de bits necessários para agir como deslocamento dentro da página.
log2(Page-Size) = log2(4096) = 12 bits para deslocamento

Dos 16 bits para o endereço virtual, 12 são para compensação, o que significa que cada processo tem 2^4 = 16 páginas virtuais. Cada entrada na tabela de páginas armazena a moldura correspondente acomodando a página. Por exemplo:

enter image description here

Agora vamos traduzir!

Em primeiro lugar, para facilitar o trabalho, vamos converter 0xE12C para binary.

0xE12C = (1110 0001 0010 1100) in base 2
1110 = 14 in decimal
Entry 14 in P.T => Page frame 3.
Vamos. concatená-lo aos 12 bits de offset
Answer: (0011 0001 0010 1100) = 0x312C
Outro exemplo: 0x3A9D
0x3A9D = 0011 1010 1001 1101
0011 = 3
PageTable[3] = 10
10 in decimal = 1010 in binary
1010 1010 1001 1101 in binary = 0xAA9D

[1] Se as entradas da tabela de página contivessem mais informações, teríamos precisado saber o número de bits necessários para referenciar cada quadro. No nosso caso são pedaços. isto é, se a entrada da tabela da página contivesse 6 bits, sabemos que apenas 4 deles são para o número da moldura e o resto são para bandeiras.

Por exemplo:

| page | page frame |
|-------------------|
|  5   |  100101    |

Page 5 is mapped to frame number 1001 = frame number 9.
 11
Author: Tony Tannous, 2017-06-13 08:10:57
Para o ajudar a resolver esta questão, temos de acertar os nossos detalhes.
  1. 16 bits de espaço de endereços virtuais = 2^16 = 65,536 espaço de endereços
  2. 16 bits de espaço de endereçamento físico = 2^16 = 65,536 espaço de endereçamento
  3. 4096 Byte tamanho da Página determina o deslocamento, que é Log(4096) / Log (2) = 12 bits. Isto significa, 2^12 para o tamanho da Página
  4. de acordo com @Akash Mahapatra, o deslocamento do endereço virtual é mapeado directamente para o endereço físico

Como assim, agora temos:

  • 2^16 (16bit) para o endereço virtual-2^12 (12bit) para offset = 4-bit para páginas, ou melhor, o número total de páginas disponíveis.
  • Não vou repetir o cálculo físico, já que são os mesmos números.
  • 2^4 (4bit) para páginas = 16, que se correlaciona com o número de entradas do quadro acima!
Estamos a chegar lá... sê paciente! :)

O endereço de memória 0xE12C na notação hex também é conhecido por ter 16 bits de endereço. (Desde está escrito na pergunta.)

Vamos cortar a morada agora...

Primeiro removemos ' 0x ' da informação.

Podemos converter E12C em notação binária como @Tony Tannous, mas vou aplicar um atalho.

Mapping of the Address and Offset

Eu simplesmente uso uma proporção. Bem, o endereço é anotado em 4 caracteres acima, e desde 16/4 = 4, Eu posso definir a primeira letra como endereço virtual, enquanto os outros 3 são endereço offset.

Com a informação, ' E ' em formato hexadecimal, preciso converter para Decimal = 14. Então eu olho para a sua mesa fornecida, e eu encontrei a moldura de Página '3'. Page frame 3 é anotado em formato decimal, que então precisa ser convertido de volta para o formato Hexadecimal... Duh!... que são três!

Assim, o mapeamento físico do endereço da localização da memória virtual de 0xE12C pode ser encontrado em 0x312C na memória física.

Você irá então voltar para a tabela, e se referir à coluna de bits de referência e colocar um ' 1 ' na linha 14.

Aplicar o mesmo conceito para estes -

0x3A9D → 0xAA9D
0xA9D9 → 0x59D9
0x7001 → 0xF001
0xACA1 → 0x5CA1

Se você notar, os últimos 3 dígitos são os mesmos (que determina o deslocamento). E o primeiro dos 4 dígitos é mapeado de acordo com o quadro:

table entry 3 -> page frame 10 -> hex notation A
table entry A (10) -> page frame 5 -> hex notation 5
table entry 7 -> page frame 15 -> hex notation F
table entry A (10) -> page frame 5 -> hex notation 5
Espero que esta explicação te ajude a ti e a outros como eu! :)
 1
Author: joke, 2018-07-05 07:34:57