内存分页

本文介绍了页式非连续分配的基本原理,包括如何通过页表将逻辑地址转换为物理地址的过程,以及分页机制如何解决内存碎片问题并提高内存利用率。此外还探讨了随着地址线的增长,单级页表机制逐渐被多级页表机制取代的趋势。
摘要由CSDN通过智能技术生成

      页式非连续分配方式。其出发点打破了程序装入的整体性和存储分配的连续性允许进程逻辑地址空间不必分布在内存的一段连续空间中,而是可以分布在若干非连续的内存块中。即内存分配时,以页为单位,并按用户进程包含的页数多少进行分配,逻辑上相邻的页面在内存中不一定相邻,即用户进程不一定要分配连续的物理内存块。每一个进程就需要页表对其进行管理。当进程要访问某个逻辑地址中的数据时,启动地址变换机制。地址变换机制首先将逻辑地址分为两部分:页号P和页内偏移量W,用页号P与页表长度寄存器的内容进行比较。

      如果P大于等于页表长度,则表示访问地址超过了进程地址空间。

             系统发出一个地址越界中断。

      如果访问地址没有越界,则根据页表起始地址寄存器的内容得到页表在内存的首地址。

             根据页号P在也表中查找对应的物理块号。若页表中无此页号。

                   则产生一个地址越界中断。

             若页表中有此页号,则可得到对应的物理块号。

转换成可以访问的内存物理地址:物理地址=物理块号*页面长度+页内偏移。

      系统提供了一对硬件寄存器来支持页表的查找和保护机制:页表始地址寄存器、页表长度寄存器。对程序的逻辑地址空间进行分页是由操作系统自动完成的。分页管理方式从系统管理角度出发,以页面为单位来分配内存,由于每个页面较小,就很好的解决了内存碎片的问题,提高了内存空间利用率。分页机制需要硬件支持,没有根除碎片,页面太少,即页长,是由机器的地质结构决定的,即硬件决定了操作系统中页面的大小,现代操作系统都采用页面置换技术来从逻辑上扩展内存,但页长太小也降低了页面换入换出的效率。

      地址线从16位增长到32位后,单级页表机制显然不实用,随后出现了二级页表和多级页表机制。Linux中,版本2.6.11.1以后使用了4级页表机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值