如何计算16位地址指针中的页帧

时间:2013-01-07 16:31:31

标签: operating-system paging

我正在查看一些操作系统的试卷,我遇到了一个我根本想不通的问题。内存管理方案是分页 这是一个问题:

An operating system that runs on a CPU with a 16 bit address pointer employs a paging memory management scheme with a page size of 1024 bytes.
a)  At most how many frames can physical memory contain?
b)  Indicate which bits in an address pointer are used for page and offset. 
c)  A process image of size 3.5K resides in memory. You are given the page table of this process in Figure 1 below. What physical address will the hexadecimal logical address 0x0FCE result in? Show your calculations.
d)  How much internal fragmentation does this process produce?

Page    Frame
0             4
1             8
2             9
3             6
Figure 1 Process Page Table

有人可以帮我吗?

1 个答案:

答案 0 :(得分:6)

  1. 16位地址总线允许访问2^16 = 64kB物理内存。由于在此系统上您有大小为1024B = 2^10的页面,因此您的内存属于2^16 / 2^10 = 2^6个物理帧。

  2. 鉴于以前的结果,页面为1024 = 2^10 bytes,您需要10位才能访问页面的任何字节。因此,6个高位用于从页表中获取页面索引(基本上是作业中的图1),10个低位用于在该页面中进行偏移。

  3. 逻辑地址0xfce位于第四页,因为六个高位是000011b = 3 = 4th page = 0x0c00-0x0fff。给定页表并假设物理存储器是顺序的,第四页映射到从1024 * 6 = 0x1800 = 0001100000000000b开始的第六个物理帧。页面的六个高位是000110b,我们在其中添加了前一个答案产生的10位偏移量:000110b << 10 | 0x3ce = 0x1bce

  4. 由于帧分配不是连续的(4,6,8,9),第4页和第6页之间的孔(即1024B),以及第6页和第8页之间的孔(即1024B),结果在物理内存碎片化方面。

  5. 希望得到这个帮助。