今天看了看windows核心编程这本书, 内存管理有几个问题模糊,问问各位老大们?
1.虚拟内存 看看我的理解对不对: 虚拟内存就是在win 32为系统下,每个进程都得到
4GB空间, 范围: xo00000000 - xoFFFFFFFF, 系统对这个虚拟地址再分区管理,当某个线程
要访问数据的时候,是不是先从系统页文件去访问,如果访问不到(也就是还没有提交给物理存储器),那么系统产生一个异常,然后然后就把该页面进行提交,然后跟虚拟内存地址相关联。其实应用
程序是不是都经过虚拟地址访问物理地址的,因为他们之间已经建立某种映射关系。
2.那么系统页文件是不是就是物理存储器,只不过是系统把物理存储器的各个地址使用文件的管理方式以页面的形式表现出来的。
3.内存影射文件书上说物理存储器使用的是磁盘文件影射到进程的虚拟地址,所以他不使用系统页文件,那么这样如果要修改内存影射文件的数据时,要不要使用系统页文件。 还是那句系统页文件到底指的是什么??
问题点数:100、回复次数:24Top
1 楼FigoZhu(谢慕安)回复于 2006-08-23 16:10:46 得分 10
帮顶,接分。Top
2 楼newfang(传说中的MIC)回复于 2006-08-23 16:17:08 得分 10
嘿嘿~~这东西怎么说呢~~只能自己慢满理解,体会!
顺便接分!Top
3 楼kl2000()回复于 2006-08-23 16:28:47 得分 0
嘿嘿~~这东西怎么说呢~~只能自己慢满理解,体会!
呵呵! 要是有个人指点一下。 不是更好的。 而且大家可以在
这里谈谈各自的看法啊! 不官是错还是对啊! 大家尽情发挥吧!
相互学习啊!Top
4 楼CHANNEL5(鼠标肘,颈椎炎,肥胖,视力下降,腰间盘突出)回复于 2006-08-23 16:35:39 得分 10
我是这样理解地..
1.线程访问的时候,好象是先从物理的RAM开始访问,如果访问不到,则页面失效,
如果系统找出一个未使用的或者已标记为未修改的RAM,则把虚拟内存,也就是硬盘内的页文件内的数据,复制到RAM,然后再访问。如果系统未找到上述的RAM,则系统把已占用的RAM,存放进页文件,再把页文件内的数据读出,然后再访问。
2.页文件,我的理解就是硬盘里的虚拟内存
3.当用磁盘文件映射的时候,则将文件直接映射到虚拟地址,如果改动,则有COPY-ON-WRITE,于是,就动用页文件来存放原来修改部分的备份
Top
5 楼ysai(所有真的都是假的真,所有假的都是真的假)回复于 2006-08-23 16:38:48 得分 10
有本电子书:Undocumented Windows NT
其中一章:Memory Management 讲的就是NT的内存管理,讲得比较明白Top
6 楼kl2000()回复于 2006-08-23 16:44:31 得分 0
谢谢楼上各位! ysai 也来了。 跟dfw 那为是同一个吧! 久仰大名了。 呵呵。Top
7 楼kl2000()回复于 2006-08-24 09:59:21 得分 0
今天有看了一遍, 感觉跟第一次有进步了。 主要是把那些名词理解好就可以了。
1.系统页文件 应该是指虚拟内存, 页文件是磁盘文件。
2.虚拟内存 是脂在磁盘驱动器上面分配的物理存储器
3.进程虚拟地址空间 是每个进程都自己拥有的,由virtualAlloc进行管理保留和提交等操作。
4.内存映射文件 是指映射到进程地址空间的磁盘文件的页文件
5.物理存储器 包括磁盘驱动器和RAM
理解上面的名词之后对windows的内存管理应该就容易了。如果有错误,请各位指正,谢谢各位的参与。Top
8 楼kl2000()回复于 2006-09-04 10:58:39 得分 0
没人关注啊!!Top
9 楼muroachanf(阿远之哈儿)回复于 2006-09-04 11:38:50 得分 10
今天有看了一遍, 感觉跟第一次有进步了。 主要是把那些名词理解好就可以了。
1.系统页文件 应该是指虚拟内存, 页文件是磁盘文件。
2.虚拟内存 是脂在磁盘驱动器上面分配的物理存储器
3.进程虚拟地址空间 是每个进程都自己拥有的,由virtualAlloc进行管理保留和提交等操作。
4.内存映射文件 是指映射到进程地址空间的磁盘文件的页文件
5.物理存储器 包括磁盘驱动器和RAM
理解上面的名词之后对windows的内存管理应该就容易了。如果有错误,请各位指正,谢谢各位的参与。
------------------------------------------------------------------------------------
windows的进程内存都是虚拟内存,每一个进程有4gb的虚拟空间,该虚拟空间根据使用的情况把页面上的内容切换到实际的ram中以及写回页面文件.物理内存实模式才可以访问.这个是cpu内核决定了的,页面文件也是cpu来分的,你如果需要了解的非常详细,你需要看的不是这本书,你可以看一下有一本叫做windows 2000/xp系统原理(好象这个哈,不好意思,太久远了,老搞忘),网上也有一些比较详细的内容介绍,你可以到汇编网上去看看.
总之一句话,保护模式下的内存管理比较复杂,讲起来也不好懂,你自己研究吧,我也是以前兴趣比较广的时候看了点,后来就没什么兴趣了,其实满无聊的.Top
10 楼swimming8243(swimming)回复于 2006-09-04 11:43:00 得分 10
有潜力,看看Top
11 楼wudi_1982(向伴水学习|胃出血,住院中)回复于 2006-09-04 21:24:02 得分 10
这问题,有潜力,看看牛人的回答。
最近发现我连pascal都没完全搞明白,更可悲的是,甚至发现我永远也不可能完全彻底的搞明白。随着经验的增加等外在情况的变化,每次去看,每次都会有新的认识,致死方休。
谁让咱做的这些东西,用的这些工具、平台都是别人弄的。永远跟在别人屁股后边。唉,也许这辈子都无法完全明白。Top
12 楼kl2000()回复于 2006-09-21 15:36:22 得分 0
再顶一下!Top
13 楼zhoucong(週聰)回复于 2006-09-22 12:43:31 得分 0
不明白.Top
14 楼ly_liuyang(Liu Yang LYSoft http://lysoft.7u7.net)回复于 2006-09-22 12:51:47 得分 10
Win32下的用户程序,只有2GB虚拟内存~
低2GB是用户态的
高2GB是核心态的(可以访问低2GB的用户态空间)Top
15 楼Jahan0211(可以办到)回复于 2006-09-25 15:33:35 得分 0
学习.......Top
16 楼sbisk()回复于 2006-09-25 17:17:44 得分 0
学习中。。。。。。
帮顶。Top
17 楼blueflag(为爱潜水)回复于 2006-09-25 17:18:52 得分 0
搬凳子,接着听!@!!Top
18 楼e_feeling(点击无限)回复于 2006-09-25 22:03:02 得分 0
upTop
19 楼KeSummer([IN]LPVOID YourLove,[OUT]LPVOID MyLove)回复于 2006-09-25 22:09:08 得分 0
看看windows 2000内部揭密.Top
20 楼kl2000()回复于 2006-10-22 09:45:19 得分 0
顶!Top
21 楼do2008(aiGooo·闲来吹吹牛,不亦乐乎)回复于 2006-10-22 22:21:54 得分 10
upTop
22 楼jiju(UNCC)回复于 2006-10-23 00:15:02 得分 10
你是乎把页的概念和虚拟内存的概念绞到一起去了,实际内存中也是分页的,而虚拟内存也不过是折腾这个页罢了.
所谓4GB空间,指的是你的逻辑地址,
说以
1,首先访问的是物理内存上的页,不存在就到虚拟内存上去找,找到掉入,找不到,你就可以看到可爱的windows提示.
2.系统页文件是存在磁盘上的文件
3.直接隐射,当然不用在访问系统页文件了.
ps .计算机上词语很乱,如果你看不懂最好找原版看.因为翻译过来的东西可能会误倒你.Top
23 楼kl2000()回复于 2006-10-25 08:26:05 得分 0
谢谢楼上的:
所谓4GB空间,指的是你的逻辑地址, 从 $00000000 到 $FFFFFFFF 的空间
当第一次装载EXE文件时, 其实EXE文件就是一个内存映射文件,默认的映射基
地址就是$00400000, 说到映射到这个地址由virtualAlloc他来管理. 这个
地址应该要跟RAM有一个映射关系,因为CPU只跟RAM打交道,当CPU要访问的不在
RAM上时,就会引发一个异常,操作系统知道,然后操作系统进行协调,也就是进行
页文件交换,如果RAM上没有空闲的页,那么就要进行页文件交换, 然后再进行提交
==========
RAM.
注意上打下划线的是不是就是系统页文件了? 也就是在"我的电脑"右键"属性"到"高级"
到虚拟内存那个吗?? (在WIN2000下的)
Top
24 楼kl2000()回复于 2006-11-07 23:03:22 得分 0
再顶!Top




