CSAPP学习笔记第9章:

本文介绍了虚拟存储器的概念,包括其作为内存管理的抽象,虚拟地址与物理地址的转换,页表的作用,以及虚拟存储器在简化链接、加载、共享和存储器分配上的功能。同时,阐述了虚拟存储器的保护机制、地址翻译的过程,以及多级页表和存储器映射的优化。最后,讨论了动态存储器分配(堆管理)和垃圾收集机制,探讨了分配与回收策略。
摘要由CSDN通过智能技术生成

每一个进程需要属于自己的程序代码和变量,但是如果进程太多那么需要的内存也太多,可能导致一些进程没有办法运行。当一个程序没有空间可用的时候,它可能会写到别的进程的存储器里面,这样会带来很难理解的错误!

为了方便管理存储器(内存),操作系统提供了这样一个抽象:虚拟存储器,它将主存作为磁盘的缓存,并且为每一个单独的进程都提供了统一的虚拟地址.保护了存储器不会受到破坏.

[1]虚拟地址和物理地址,每一个程序里面的寻址都是虚拟地址,我们需要将这个虚拟的地址转换为物理存储器的地址,这样才能够找到实际的内容。

[2]从概念上来讲,虚拟存储器(VM)被存放在磁盘上面大小为N的chunk里面,VM将虚拟存储器分割成页,同时也将物理存储器也分割成页,它们之间有个映射关系(所以大小相等)。任何时刻,虚拟页面分为三个不相交的子集:(1)未分配的页,这种页由于没有被虚拟存储器系统所分配,因此不合磁盘上面的数据有任何联系,所以也不会占用任何空间。(2)已分配的也但是没有缓存在贮存里面。(3)已分配的页,而且还缓存在主存里面。

[3]页表:由于我们要进行虚拟地址转换到物理地址,所以必须要有一个表来保存当前进程从虚拟地址到物理地址之间的转换。同时页表还可以告诉cpu当前的虚拟地址所在的页是不是缓存在主存里面了,如果没有没有缓存,那么就会引发缺页异常,从而导致系统先去磁盘里面找到相应的页,然后根据一个替换算法将这某一个页替换出来。最终可以可以将需要的内容加载起来的。注意,从磁盘里面加载时非常慢的,所以我们的程序如果缺少较好的局部性,那么就可能导致程序非常之慢!

[4]虚拟存储器作为存储器管理的功能:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值