1、windows下的虚拟内存指的是在硬盘上建一个文件,用来放置系统非活跃性内存数据或交换数据(怎么放,放多少由操作系统决定)。
2、虚拟地址空间,指windows下每个进程的私有内存空间,大小是4G,能访问的是不到2G的空间,其余是系统保留的.这2G是能访问的,但并不是立即分配的,当进程使用多少时,才从物理内存中划分给它多少,划分的的方式是"映射",操作系统将虚拟内存的起始地址做个标记,标记成对应的物理内存的某个地址上.在这里,只有操作系统知道,进程是没有任何办法知道的。
3、这是WINDOWS的高级内存管理机制决定的.物理内存的地址空间,只有操作系统才能访问(硬件驱动也可以,但已经属于系统低层了,进程是属于用户层)进程虚拟内存空间和物理内存空间的关系仅仅是看不见的映射关系。
4、虚拟内存通常只在系统物理内存用完时,才会使用到,但这个时候系统已经非常卡了.但也不是一点用处没有,非活跃性进程的部分数据,系统是完全可以放在虚拟内存中的。
5、以上基于32位Windows系统.64位的没去看过相关的资源,不清楚有没有变动。
若一个系统内存有64MB,处理器是32位地址,则它的虚拟地址空间为4GB。
根据题意可计算:处理器的寻址能力为2的32次方
由寻址能力可知
虚拟地址空间为2的32次方字节=4GB
物理内存分页一个物理页的大小为4K字节,第0个物理页从物理地址 0x00000000 处开始。由于页的大小为4KB,就是0x1000字节,所以第1页从物理地址0x00001000 处开始。
第2页从物理地址 0x00002000 处开始。可以看到由于页的大小是4KB,所以只需要32bit的地址中高20bit来寻址物理页。
扩展资料:
每个进程都有自己的4G地址空间,从 0x00000000-0xFFFFFFFF 。通过每个进程自己的一套页目录和页表来实现。由于每个进程有自己的页目录和页表,所以每个进程的地址空间映射的物理内存是不一样的。
两个进程的同一个虚拟地址处(如果都有物理内存映射)的值一般是不同的,因为他们往往对应不同的物理页。
第一款软件的话是fake location,他是国外的软件,分root模式和非root模式了。第二款任我行了,他是专门为钉钉打卡而生的了。最后一款软件的话叫做多开分身了,他主要的是用来多开的。【拓展资料】一、虚拟地址是Windows程序时运行在386保护模式下,这样程序访问存储器所使用的逻辑地址称为虚拟地址,与实地址模式下的分段地址类似,虚拟地址也可以写为"段:偏移量"的形式,这里的段是指段选择器。
Windows 2000 使用基于分页机制的虚拟内存。每个进程有4GB的虚拟地址空间。基于分页机制,这4GB地址空间的一些部分被映射了物理内存,一些部分映射硬盘上的交换文件,一些部分什么也没有映射。程序中使用的都是4GB地址空间中的虚拟地址。而访问物理内存,需要使用物理地址。
二、对于一个要转换成物理地址的虚拟地址,CPU首先根据CR3中的值,找到页目录所在的物理页。然后根据虚拟地址的第22位到第31位这10位(最高的10bit)的值作为索引,找到相应的页目录项(PDE,page directory entry),页目录项中有这个虚拟地址所对应页表的物理地址。有了页表的物理地址,根据虚拟地址的第12位到第21位这10位的值作为索引,找到该页表中相应的页表项(PTE,page table entry),页表项中就有这个虚拟地址所对应物理页的物理地址。最后用虚拟地址的最低12位,也就是页内偏移,加上这个物理页的物理地址,就得到了该虚拟地址所对应的物理地址。
三、一个虚拟地址转换成物理地址的计算过程就是,处理器通过CR3找到当前页目录所在物理页,取虚拟地址的高10bit,然后把这10bit左移2bit(因为每个页目录项4个字节长,左移2bit相当于乘4)得到在该页中的地址,取出该地址处PDE(4个字节),就找到了该虚拟地址对应页表所在物理页,取虚拟地址第12位到第21位这10位,然后把这10bit左移2bit(因为每个页表项4个字节长,左移2bit相当于乘4)得到在该页中的地址,取出该地址处的PTE(4个字节),就找到了该虚拟地址对应物理页的地址,最后加上12bit的页内偏移得到了物理地址。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)