当前位置:首页 > 内存 > 正文

内存分页缓冲池

  • 内存
  • 2024-05-10 01:37:37
  • 9621

一、内存出现错误提示原因如果无法从页面文件将请求的内核数据页读入内存或者主引导记录被病毒感染,则可能会出现此问题。为了进一步确定可能的原因,您必须正确解释错误消息。如果第一个和第三个参数都为空,则所有四个参数都定义为:
0(零)
发生错误时PageTableEntry(PTE)的值
0(零)
内核堆栈上签名的地址
如果第一个或第三个参数非零,则应用以下定义:
状态代码
I/O状态代码
页面文件编号
页面文件偏移量
如果是这种情况,您可以使用下面列出的信息从第二个参数(I/O状态代码)确定问题的原因。原因以“第二个参数的值”后跟“常见原因”的格式列出:
0xC000009A或STATUS_INSUFFICIENT_RESOURCES:非分页缓冲池资源不足。
0xC000009C或STATUS_DEVICE_DATA_ERROR:硬盘上有坏块。
0xC000009D或STATUS_DEVICE_NOT_CONNECTED:电缆损坏、没有端子或控制器无法访问硬盘。
0xC000016A或STATUS_DISK_OPERATION_FAILED:硬盘上有坏块。
0xC0000185或STATUS_IO_DEVICE_ERROR:端子损坏或SCSI设备电缆损坏,或者两个设备尝试使用相同的IRQ。
解决方案要解决此问题,请使用以下相应方法:
引导扇区包含病毒
要确定引导扇区是否感染病毒,请运行最新版本病毒的。必要时检查程序并删除计算机病毒。
引导扇区不包含病毒
检查事件查看器中的系统日志以获取其他错误消息,以帮助识别导致此错误的设备。
词组不正确。“Stop0x77”错误可能是由页面文件中的坏块或磁盘控制器错误引起的;当非分页池资源不可用时也可能导致这种情况,但这种情况极为罕见。
如果第一个和第二个参数都为0,则表明在内核堆栈中没有找到堆栈签名。硬件损坏可能会导致此问题。如果I/O状态为C0000185并且页面文件位于SCSI硬盘驱动器上,则需要检查驱动器电缆和SCSI终端。
如果I/O状态码为0xC000009C或0xC000016A,一般表示磁盘存在坏块,无法读取数据。
如果您在出现此错误消息后设法重新启动计算机,Autochk将自动运行并尝试分离坏扇区。如果由于某种原因Autochk没有检查硬盘驱动器是否有错误,请手动启动ScanDisk。如果计算机使用NTFS文件系统格式化,请在系统分区上运行Chkdsk/f/r。在运行磁盘扫描之前,您必须重新启动计算机。如果由于此问题而无法启动计算机,请使用命令控制台并运行Chkdsk/r。
损坏或不可靠的随机存取存储器(RAM)是此问题的另一个常见原因。
请检查计算机中的所有适配卡是否已正确插入。
确保适配器卡上的所有触点都是干净的。
在BIOS中禁用系统缓存,看看是否可以解决问题。
如果这不能解决问题,您的计算机主板可能已损坏。
二、如何减少分页缓冲池内存在SQLServer的64位版本您可以通过锁定物理内存中分配给缓冲池的内存来防止Windows操作系统中SQLServer进程崩溃。您可以通过锁定内存中的页面来为用作SQLServer服务启动帐户的用户帐户分配权限来锁定内存。
请注意,对于64位版本的SQLServer,只有SQLServerEnterpriseEdition可以使用内存锁页用户权限。这适用于SQLServer2005[RTMSP1、SP2、SP3]和SQLServer2008[RTM和SP1]。SQLServer2008SP1的累积更新2和SQLServer2005SP3的累积更新4引入了对SQLServerStandardEdition用户权限使用内存中锁定页的支持。有关支持64位系统上锁定站点的详细信息,请单击下面的文章编号,查看Microsoft知识库中相应的文章:97007064位系统SQLServer2005StandardEdition和SQLServer2008上支持的锁定站点64位标准版系统
要为内存中的锁定页面分配用户权限,请按照下列步骤操作:
单击“开始”,然后单击“运行”,键入,然后单击“确定”。
注意组策略对话框。
打开计算机配置,然后展开Windows设置。
展开安全设置,然后展开本地策略。
单击“分配用户权限”,然后双击“锁定内存中的页面”。
在“本地安全策略设置”对话框中,单击“添加用户或组”。
在“选择用户或组”对话框中,添加有权运行文件的帐户,然后单击“确定”。
关闭组策略对话框。
重新启动SQLServer服务。
为内存中锁定的页面分配用户权限并重新启动SQLServer服务后,Windows操作系统不再处理S​​QLServer中超出缓存内存的页面。但是,Windows操作系统仍然可以将非缓冲池内存调出SQLServer进程。
您可以通过确保SQLServer启动错误日志中记录以下消息来验证用户对SQLServer实例的权限:
对缓冲区使用设施锁
三、请问win764位系统,进程管理器里面的提交大小和分页池(页面缓冲池)来自Google:内存提交大小保留供进程使用的虚拟内存量。内存-分页池由内核或代表进程的驱动程序分配的可分页内核内存量。可分页内存是可以写入其他存储介质(例如硬盘驱动器)的内存。分页池是所有程序的核心模式组件使用的内存部分。具体来说,分页池中的页面可以保存到磁盘,当程序需要这些页面时,可以将它们读入内存。在Win7之前,Win32为系统上的每个应用程序或进程提供了独立的2GB用户地址空间,但当时具体大小尚未确定。换句话说,它并没有那么大。假设应用程序需要的内存多于可用内存。Win32通过以下方式满足此要求:它将2GB独立用户地址空间或其他进程中的非关键内存分页到分页文件中,并将其从这些物理内存页中释放。当进程启动时,所有地址都是空闲的,这意味着它们是空闲空间,可以放入内存或保留以供将来使用,但它们不可访问。在使用空闲地址之前,必须首先将其指定保留地址或验证地址。提交内存时,会分配内存的物理页,并将堆空间保存在页面文件中。也就是说,保留的内存页面仍然作为物理内存页面或作为已调出的磁盘上的交换文件存在。当提交大内存块时,其中部分或全部可能最初并不驻留在物理内存中。一些内存页面最初驻留在页面文件中,直到被访问为止。一旦内存页被验证,虚拟内存管理器就会像系统中的任何其他内存页一样对待它们。从上面的分析来看,我认为内存提交大小是真实内存页和虚拟内存页提交的共同大小。