WEB开发网
开发学院数据库MSSQL Server SQL Server 2000内存管理内幕 阅读

SQL Server 2000内存管理内幕

 2007-05-19 09:40:34 来源:WEB开发网   
核心提示: 注意:Windows XP和Windows Server 2003引入了一个新的启动选项/USERVA,和/3GB一起使用,SQL Server 2000内存管理内幕(3),比单独使用/3GB能够更好的控制,你在BOOT.INI中添加/3GB的时候可以同时添加/USERVA,SQL Ser

注意:Windows XP和Windows Server 2003引入了一个新的启动选项/USERVA,和/3GB一起使用,比单独使用/3GB能够更好的控制。你在BOOT.INI中添加/3GB的时候可以同时添加/USERVA,/USERVA比单独使用/3GB的优点是它允许你指定一个准确的地址空间大小值供user mode存取。例如,/USERVA=2560为user mdoe配置2.5G的空间,剩余的1.5G用于kernal mode。上面的警告信息在使用/USERVA选项时同样适用。

Large-Address-Aware Executables

在/3GB支持加入Windows之前,应用程序无法使用指针的最高位,User mode的应用程序只能够对32位指针的前31位表示的地址空间进行存取。对于剩下的1位,一些聪明的开发者不希望浪费进程空间里的这1个位,把它用于了其它的目的,例如用于标识那些应用程序特定的地址分配类型的指针。这在引入/3GB后带来一个难题,因为这种类型的应用程序无法区分引用2GB以上内存的指针,和那些引用2GB以下内存但是最高位由于其它原因而被设置的指针。基本上,使用/3GB启动机器,会使这样的应用程序崩溃。为了解决这个问题,微软在Win32 PE文件格式(定义Windows下可执行文件Exe和Dll结构的格式)的Characteristics字段加入一个新标识位的支持,用于指示应用程序是否支持大的寻址能力。设置可执行文件头中Characteristics字段的第32位启用IMAGE_FILE_LARGE_ADDRESS_AWARE标识位。通过设置应用程序头的这个标识位,表明应用程序能够处理那些最高位被设置的指针,不会由于这个位带来任何多意性。当设置了这个标识位,在正确的Windows版本上使用/3GB选项启动,系统将为进程提供一个私有的扩展user mode地址空间。你可以使用DumpBin、ImageCfg等可以分析可执行文件头的工具,查看应用程序是否启用了这个标识位。Visual C++通过/LARGEADDRESSAWARE连接开关提供对IMAGE_FILE_LARGE_ADDRESS_AWARE的支持。SQL Server启用了这个标识位,因此当你在正确的Windows版本上使用/3GB开关启动,系统将扩展SQL Server的user mode地址空间。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:SQL Server 内存

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接