序模块的头上的某些标志。当运行I m a g e C f g . e x e时,它会显示下面的使用情况:
usage: IMAGECFG [switches] image-names... [-?] display this message
[-a Process Affinity mask value in hex] [-b BuildNumber]
[-c Win32 GetVersionEx Service Pack return value in hex] [-d decommit thresholds] [-g bitsToClear bitsToSet]
[-h 1|0 (Enable/Disable Terminal Server Compatible bit) [-k StackReserve[.StackCommit] [-l enable large (>2GB) adresses [-m maximum allocation size]
[-n bind no longer allowed on this image [-o default critical section timeout [-p process heap flags]
[-q only print config info if changed [-r run with restricted working set] [-s path to symbol files] [-t VirtualAlloc threshold]
[-u Marks image as uniprocesor only] [-v MajorVersion.MinorVersion]
[-w Win32 GetVersion return value in hex] [-x Mark image as Net - Run From Swapfile
[-y Mark image as Removable - Run From Swapfile
若要修改应用程序的可允许的亲缘性屏蔽,可以执行I m a g e C f g . e x e来设定- a开关。当然,该实用程序所做的工作只是调用上面这个代码段中显示的各个函数。还要注意的是- u,它负责告诉系统,可执行程序只能在单个C P U系统上运行。
最后,Windows 2000的Task Manager允许用户改变进程的C P U亲缘性,方法是选定一个进程,显示它的上下文菜单。如果在多处理器计算机上运行, 会看到一个S e tA ff i n i t y菜单项(该菜单项在单处理器计算机中没有)。当选择该菜单项时,会看到图7 - 7所示的对话框,在这个对话框中,可以选定进程中的线程能够在上面运行的C P U。
图7-7 CPU 亲缘性对话框
Windows 2000 当Windows 2000在x 8 6计算机上引导时,可以限制系统能够使用的C P U的数量。在引导过程中,系统要查看称为B o o t . i n i的文件,该文件位于引导驱动器的根目录中。下面是我的双处理器计算机上的B o o t . i n i文件:
[boot loader] timeout=2
default=multi(0)disk(0)rdisk(0)partition(1)\\WINNT [operating systems]
multi(0)disk(0)rdisk(0)partition(1)\\WINNT=\/fastdetect
multi(0)disk(0)rdisk(0)partition(1)\\WINNT=\/fastdetect /NumProcs=1
这个B o o t . i n i文件是Windows 2000安装时产生的,不过我使用N o t e p a d加上了最后一行代码。这行代码告诉系统,在系统引导时,我只应该使用机器中的一个处理器。/ N u m P r o c s = 1这个开关是用来实现这一点的关键。我常常发现它对调试非常有用。
注意,由于只考虑到打印方面的需要,因此上面的程序清单中的各个选项都是在单独的一行上列出的。B o o t . i n i文件要求各个选项和到达根分区的A R C路径必须出现在一行上。