多级页表示例分析

详细的多级示例

问题提出:为什么多级页表会节省空间以及在多级页表的情况下如何将虚拟地址VA转换为物理地址PA?

条件设定:

地址空间大小:16kb

页大小:64byte

过程说明

对于16kb ( 2 14 ) (2^{14}) (214)的地址大小空间,大小为64byte ( 2 6 ) (2^{6}) (26)的页,如果使用传统的分页机制,则需要 ( 2 14 / 2 6 = 2 8 ) (2^{14}/2^{6}=2^{8}) (214/26=28)个页表项。现在我们同样构建 2 8 2^{8} 28个页表项,但是使用多级分页的形式,也就是说分为16个页目录,每个页目录放16个页表项,为什么这么分呢?证明如下:

  1. PTD.num *PTE.num = PTE.sum
  2. Page.Size = 64Byte
  3. SizeOf(PTE) = 4Byte
  4. SizeOf(PTD) = 4Byte

解释:
初始构建的页表项总量是相同的,总不能用传统分页放得下,用多级分页就放不下了。
页的大小是64字节,PTE和PTD的大小都是4byte,正好一页放16个。

也许会有疑问,这样都是256项,何以见得多级分页节省内存呢?下面以一个具体例子说明:

表20.2中Page Directory下只有PFN=100或101时才有效,这时才会构建它们对应的页表,而其余的都不会构建,但是在传统的分页机制中,那些无效的页目录中的页表也会被构建。

请添加图片描述

那如何从虚拟地址转换为物理地址呢 ?

假设虚拟地址为:0x3f80

  1. 转换为14位二进制:1111 1110 00 0000
  2. 页目录有16项PTD,因此是4位,1111,表示第15项,读取表20.2对应的值为101,表明下一次要检索的表为PFN:101,页表项也有16个,也是4位,读到1110,因此是第14项,对应55,即PFN=55,OFFSET为剩下的000000
  3. 得到物理地址为:0011 0111 00 0000(0x0DC0)
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言编写“helloworld!”实际上是一种程序的实现,这个程序需要经过编辑器、编译器、汇编器、链接器等工具进行处理,最终才能在计算机上运行并显示在屏幕上。下面从数据表示、程序表示、I/O过程、内存管理和缓存状态等方面分别阐述计算机处理这个程序的全过程。 1. 数据表示 首先,计算机需要将“helloworld!”这段字符串转换为计算机能够识别和处理的二进制数据。这个过程称为字符编码,常见的字符编码方式有ASCII码、Unicode等。在C语言中,字符串常量以字符数组的形式表示,每个字符都有一个对应的ASCII码值。 2. 程序表示 程序表示指的是C语言程序的编写和转换过程。在C语言中,程序源代码需要经过预处理、编译、汇编、链接等过程,最终生成可执行文件。在这个过程中,程序源代码被转换为机器指令,这些指令被组合成可执行文件,并存储在磁盘上。 3. I/O过程 I/O过程指的是计算机与外部设备进行数据交换的过程。在这个程序中,屏幕是输出设备,需要将“helloworld!”这段字符串输出到屏幕上。具体实现过程需要调用操作系统提供的I/O函数,将数据写入屏幕缓存区。当缓存区满或者操作系统调度到该进程时,缓存区的数据被输出到屏幕上。这个过程中,可能会涉及到中断和系统调用等操作。 4. 内存管理 内存管理指的是计算机对内存资源的管理和分配。在程序执行过程中,需要将程序的指令和数据存储在内存中,以供CPU读取和处理。在现代操作系统中,内存管理采用了段页式管理机制,将物理内存分成若干个大小相等的块,每个块被称为页。程序中的指令和数据被分别存储在不同的页中,以提高内存的利用率和安全性。 5. 缓存状态 缓存状态指的是计算机处理数据时,数据存储在不同的缓存中的状态。在程序执行过程中,CPU需要从内存中读取指令和数据,但是内存的读取速度较慢,为了提高CPU的处理速度,计算机采用了多级缓存机制。CPU访问数据时,首先会从L1缓存中查找,如果找不到,再从L2、L3等缓存中查找,最终才从内存中读取。缓存状态的变化会影响CPU的处理速度和程序的执行效率。 综上所述,计算机处理“helloworld!”的过程涉及到数据表示、程序表示、I/O过程、内存管理和缓存状态等方面,需要通过编辑器、编译器、汇编器、链接器等工具进行处理,最终才能在计算机上运行并显示在屏幕上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值