内存

虚拟内存与物理内存

概念解释(个人理解,请自行辨别正误)
程序的虚拟内存(本人自建概念名,此后简称程虚):首先我们在进程里就讲到,进程实际是种空间上的概念,是为线程所用的资源,当我们加载一个进程时,这么多资源我们放在哪呢?个人觉得就是放在程虚里。
物理内存:就是计算机的内存条。资源只有被加载到物理内存上才被真正的执行。
程虚与物理内存有什么联系呢?一个计算机开启要加载许多进程,而内存又有限,这么解决这个问题?答案就是利用程虚。程虚里存着程序所要用的所有东西,但只有当程序真正要利用某些资源时,这些资源才会被映射到物理内存上,供CPU执行。
计算机的虚拟内存(本人自建概念名,此后简称计虚):计虚用来解决一件事情,就是当所用资源太多,物理内存不够用时,操作系统会将当前相对不紧急的资源存到磁盘中(计虚的大小可以自行设置),空出空间给相对紧急的程序使用,当那个相对不紧急的变紧急后再从磁盘中读取。

内存的申请与释放

内存还有另外的分法,分为私有内存和映射(map)内存。
私有内存:就是某进程直接霸占物理页(注:内存的分页管理),其他进程就无法使用此物理页。
映射内存:就是大家一起用,和平共处。

申请内存的函数:
VirtualAlloc() 申请私有程虚
VirtualAllocEx() 可以在本进程中申请其他进程的空间,也是私有程虚
CreateFileMapping() 申请映射内存,并产生一个文件映射对象。此函数参数可以选择文件映射(即在申请内存的同时将文件映射到物理内存上)(在这个函数之后可以通过MapViewofFile()将物理内存与程虚关联,实现内存映射文件)

MapViewofFile()对应函数是UnMapViewofFile(),功能是切断程虚与物理内存的关系。

释放内存的函数
VirtualFree()

文件系统

就是管理文件的系统。(暂不深究)
三层:卷,目录,文件。
函数的话,百度吧。

内存映射文件

内存映射文件就是将文件通过两次映射使其映射到程虚内,这样操作自己的内存就可以实现操作文件的目的,当文件比较大时就可以采用这种方法。
函数实现在“内存的释放与申请”中。
而且此方法可以将同一文件映射到多个进程中。
注:MapViewofFile()函数可以设置映射到进程中的文件是否可读,可写,还有写的时候是否改变物理内存及文件里的值
几乎所有的程序都需要调用系统的DLL,即将系统的DLL文件映射到进程里,系统为了防止某些人(…)去乱改系统的DLL文件,就会将文件映射的状态设为写拷贝(即在进程中修改映射的文件也不会改变文件的数据)。
那写拷贝是如何实现的呢?
当你修改进程中的映射文件时,系统会再分配物理页来储存修改的数据,而文件直接映射的物理页不变,自然文件不变。

嗯哼?欢迎指错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值