-
-
同一时间内如果多个进程运行,他们的地址是如何安排的.
-
发表于:
2006-6-28 22:24
4337
-
同一时间内如果多个进程运行,他们的地址是如何安排的.
各位高手:
WINDOWS是多任务操作系统,并且进程间的地址是相互隔离的.98系统为每个进程分配4MB-2G的用户空间.小弟看了一个修改内存的程序,我想问问,同一时间内如果多个进程运行,他们的地址是如何安排的.
BOOL FindFirst(DWORD dwValue)
{
const DWORD dwOneGB = 1024*1024*1024; // 1GB
const DWORD dwOnePage = 4*1024; // 4KB
if(g_hProcess == NULL)
return FALSE;
// 查看操作系统类型,以决定开始地址
DWORD dwBase;
OSVERSIONINFO vi = { sizeof(vi) };
::GetVersionEx(&vi);
if (vi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
dwBase = 4*1024*1024; // Windows 98系列,4MB
else
dwBase = 640*1024; // Windows NT系列,64KB
// 在开始地址到2GB的地址空间进行查找
for(; dwBase < 2*dwOneGB; dwBase += dwOnePage)
{
// 比较1页大小的内存
CompareAPage(dwBase, dwValue);
}
return TRUE;
}
对于同个地址空间如0X1234,系统是如何判断属于那个进程的呢?
进程地址间相互隔离,是为每个进程都安排2G的用户空间吗?如果是那么各进程间的地址是如何安排的?
谢谢
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!