内存管理

虚拟内存

因为在计算机发展过程中,内存的大小往往小于程序的大小,而且需要支持多个程序同时运行,这样交换技术就不满足需求,且在交换程序的过程中资源开销极大,需要的时间长的让人无法忍受,随之而来的解决方案就是虚拟内存,即每个程序都有自己的独立的虚拟运行空间,这些空间被分割成多个块,称为页面,页面地址中存储虚拟地址到实际物理地址的映射信息,通过转换虚拟地址到物理地址的映射来访问实际物理地址。

分页

2.1 分页地址变换
这个“转换虚拟地址到物理地址的映射”的过程用内存管理单元(MMU)来表示,在cpu中有一个单独的运算模块来处理这个过程,这样我们就可以拥有比物理内存大的虚拟内存来运行程序。与虚拟内存中的页面对应的是物理内存中的页框,页框通常与页面是相等大小的,也可以支持不同大小的页面混合使用。

栗子
1.有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、A、5块,试将虚地址0AFEH,1ADDH转换成内存地址。
解:
|页号|块号 |
| 0 | 7 |
| 1 | 9 |
| 2 | A |
| 3 | 5 |
虚地址0AFEH转化为二进制数:0000 1010 1111 1110
已知页大小是2kb,所以低位部分是11位,所以,w=010 1111 1110, p=0000 1=1
根据页号与块号的排列 p=1时,块号为9,9的二进制数为1001,表首地址为0
所以,MR=(首0)0100 1010 1111 1110(二进制)=4AFEH(16进制)

2.有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、10、5块,试将虚地址7145,3412转换成内存地址。
解:
|页号|块号 |
| 0 | 7 |
| 1 | 9 |
| 2 | A |
| 3 | 5 |
首先,已知虚地址7415,页大小为2kb
计算 P=7145/2048=3
W=7145mod2048=1001
MR=5*2048+1001=11241
所以虚地址7145的内存地址是:11241

2.2 缺页异常
显而易见的,当虚拟地址大于物理地址的时候,肯定会有一些虚拟地址映射不到物理地址中,这时候如果想用这块虚拟地址,CPU会陷入内核中发出缺页中断,操作系统会找到一个使用比较少的页框,把这个页框内的内容写到磁盘中,再将这个页框映射到发生缺页异常的页面,然后再正常运行程序。

分页过程实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值