内存管理和虚拟内存

为什么要进行内存管理?

在单道批处理阶段,一个系统在一个时间段内只执行一个程序,内存的分配极其简单,即仅分配给当前运行的进程。

引入多道程序的并发执行后,进程之间共享的不仅仅是处理机,还有主存储器。

然而,共享主存会形成一些特殊的挑战。若不对内存进行管理,则容易导致内存数据的混乱,以至于限制进程的并发执行。

因此,为了更好地支持多道程序并发执行,必须进行内存管理

页式管理中每个页表项大小的下限如何决定?

页表项的作用是找到该页在内存中的位置

以32为逻辑地址结构空间、字节编址单位、一页 4KB 为例。地址空间内共含有 2^32B/4KB = 1M 页,需要 log2 1M = 20位 才能保证表示范围能容纳所有页面。又因为以字节作为编制单位,即页表项的大小 >= 3B。

所以,在这个条件下,为了保证页表项能够指向所有页面,页表项的大小应该大于 3B;或者也可以选择更大的页表项大小,让一个页面能够正好容下整数个页表项,以方便存储。

多级页表解决了什么问题?又会带来什么问题?

多级页表解决了当逻辑地址空间过大时,页表的长度会大达增加的问题。

二采用多级页表时,一次访问需要多次访问内存甚至磁盘,会大大增加一次访存的事件

无论时段式管理、页式管理、还是段页式管理,都只需要关注三个问题:① 逻辑地址结构 ② 表项结构 ③ 寻址过程。搞清楚这三个问题,就相当于搞清楚了几种存储管理方式。

为什么要引入虚拟内存?

随着对处理器需求的增加,进程的执行速度会以某种合理平滑的方式慢下来。

但是,若同时运行的进程太多,则需要很多的内存,当一个程序没有内存空间可用时,那么它甚至无法运行。

所以,在物理上扩展内存相对有限的条件下,应尝试以一些其他可行的方式在逻辑上扩充内存,即采用虚拟内存

虚拟内存空间的大小有什么因素决定?

① 虚拟的大小 <= 内存容量和外存容量之和。这是硬件的硬性条件规定的。

② 虚存的大小 <= 计算机的地址位数能容纳最大容量。

假设地址时32位的,按字节编址,一个地址代表 1B 存储空间,则虚存的大小 <= 4GB(2^32B)。因为虚存的大小超过 4GB,则32位的地址将无法访问全部虚存,也就是说 4GB 以后的空间被浪费掉了。

实际虚存的容量是取 ① 和 ② 的交集,两个条件都要满足,只满足一个条件是不行的。

虚拟内存是怎么解决问题的?会带来什么问题?

虚拟内存使用外存上的空间来扩充内存空间,通过一定的换入/换出,使得整个系统在逻辑上能够使用一个远远超出其物理内存大小的内存容量。

因为虚拟内存技术调换页面时需要访问外存,导致平均访存时间下降。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮怪鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值