免费论文查重: 大雅 万方 维普 turnitin paperpass

对于读写计算机发生内存不能读写不足研究

最后更新时间:2024-04-08 作者:用户投稿原创标记本站原创 点赞:4361 浏览:10055
论文导读:存缓冲区;动态分配内存;光标;程序的健壮性中图分类号:TP3“0x????????”指令引用的“0x????????”内存,该内存不能为“read”;“0x????????”指令引用的“0x????????”内存,该内存不能为“written”已经成为引起系统故障的一个“非常有代表性和普遍性存在”的问题,面对这些不知所以然的十六进制代码用户头疼不已,往往
摘要:计算机系统中发生的类似“0x????????”指令引用的“0x????????”内存,该内存不能为“read”;“0x????????”指令引用的“0x????????”内存,该内存不能为“written”的现象已经成为系统故障中的“非常有代表性和普遍存在”的问题,本文提供给用户解决该问题的具体办法、技巧和工具,并最终形成一个解决该类似问题的综合解决方案流程,使用户从这种循环往复的恶性循环中解脱出来,有效的保障计算机系统正常稳定的工作。
关键词:内存缓冲区;动态分配内存;光标;程序的健壮性
中图分类号:TP3
“0x????????”指令引用的“0x????????”内存,该内存不能为“read”;“0x????????”指令引用的“0x????????”内存,该内存不能为“written”已经成为引起系统故障的一个“非常有代表性和普遍性存在”的问题,面对这些不知所以然的十六进制代码用户头疼不已,往往只能恢复系统,但是这种“治标不治本”的方法会导致这种故障“频繁性”的发生,用户只能通过不断的恢复系统来解决它,这显然是不正确的,因此,有必要对这种“普遍性存在”的问题进行详细分析,找到这些问题的成因,提供给用户解决问题的正确思路和方法,才有利于用户更好的使用计算机进行正常的工作。
1探讨内存不能读或写的成因和解决思路
引起该问题的原因很复杂,但是从大的方面看有两点:一是硬件;二是软件。

1.1硬件方面原因分析和解决思路

硬件引起内存不能读写的首要元凶就是内存条。目前,内存条的质量还是过硬的,问题往往发生在计算机使用过久,其内部灰尘导致内存条的金手指与主板接触不良;其次,使用了不同品牌和不同容量的内存条,出现了内存条不兼容的问题;第三,因超频或显卡的散热等,导致内存条工作不稳定;第

四、使用了杂牌或二手内存条造成的;第五,内存条物理性损坏。

根据以上原因分析,不难找到引起问题的故障点。内存条与主板接触不良,可以清洁金手指或换个插槽;内存条出现兼容问题,可将其更换为同一品牌和容量的内存或只使用单条内存条;因过热导致内存条工作不稳定,可调整计算机的使用环境并杜绝超频CPU;尽量避免使用杂牌或二手内存。也可以通过MemTest工具来测试内存条的稳定性。当然,还要注意市电电压波动过大或使用了劣质电源对内存条的破坏。
其次,硬盘的问题。因为内存不是无限大,有时系统需要在硬盘开辟一部分区域作为“快速缓存”来使用,如果硬盘管理不善,源于:论文书写格式www.7ctime.com
碎片过多会导致此类问题发生。可以通过磁盘碎片整理和修复磁盘工具解决,如果问题很严重,就要更换硬盘。
第三,硬件驱动的问题。它常常发生在升级了某硬件的驱动并重新启动计算机后才发生的,尝试在安全模式下卸载升级的驱动程序即可。如果是新做的系统,一定要安装好相关的主板驱动,这很重要。

1.2软件方面原因分析和解决思路

因软件原因引起该问题的原因很复杂,只有了解有关原理才能更好的解决该问题。
首先,内存中存取数据的区域被称为“缓冲区”。若程序向缓冲区存放数据,就必须通过操作系统的功能函数提出申请。如果申请内存成功,函数就会返回程序一个内存地址,程序通过这个内存地址才能使用分配给它的缓冲区,这就是“动态内存分配”。这个内存地址在编程中称之为“光标”。但内存资源不是无限的,程序申请不是每一次都成功,如果申请内存失败,函数会返回一个0值,但这个0值已不在是分配给程序的光标,而是系统通知程序申请失败的标志,因此,任何程序在申请内存的过程中都需要判断返回的值是否为0,如果是,则应该采取挽救的措施,这就是对“程序的健壮性”的要求。如果程序在返回值是0的情况下不作判断,想当然的认为这是系统返回给它的光标,在程序执行后就会往0内存地址写入数据。而系统中0内存地址是存放至关重要的“中断描述符表”的,绝对不允许任何程序使用。在无系统保护机制的DOS系统下发生这样的问题,系统直接当机,而在有系统保护机制的Windows系统下,系统为避免错误继续扩大,会强制关闭“发生问题的应用程序,并收回其所占用的所有资源”。这时就会出现内存不能为写的错误,并指出被引用的内存地址为“0x00000000”。因此,这种分配失败多见于操作系统论文导读:触发系统的保护机制,出错的程序同样会被操作系统终止执行,回收全部资源。像这样的情况都属于程序自身的BUG,用户往往可在特定的操作顺序下重现错误。根据以上的理论,可以概括出解决该问题的常见思路。首先,病毒问题。病毒会修改系统文件,更改系统参数,对于这样的问题,只有杀毒。一些杀毒软件也会产生该问题,因杀
使用很长时间后,安装了多种应用程序(包括被病毒感染),更改了大量的系统参数和系统档案之后。
在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有记忆”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,出错的程序同样会被操作系统终止执行,回收全部资源。像这样的情况都属于程序自身的BUG,用户往往可在特定的操作顺序下重现错误。
根据以上的理论,可以概括出解决该问题的常见思路。
首先,病毒问题。病毒会修改系统文件,更改系统参数,对于这样的问题,
只有杀毒。一些杀毒软件也会产生该问题,因杀毒软件的实时监控功能是要监控系统底层,容易与系统和一些软件发生冲突,可以尝试卸载它解决问题。
其次,软件损坏。通过恢复其初始状态或升级该软件,并打上相关补丁来解决。例如IE浏览器经常会发生“0X70dcf39f”指令引用“0X000000”内存,该内存不能read,要终止程序请单击“确定”信息框,单击“确定”后,又出现“发生内部错误,你正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。通过相同版本的IE覆盖安装或升级的办法修复IE被破坏的文件来解决,再看看是否有最新补丁需要安装。
第三,软件有BUG。通过打补丁或将软件升级到最新版本来解决。例如用户经常碰到这样的问题,某某软件以前使用正常可是现在使用怎么不正常了,使用或关闭软件时还出现“OX????????”指令引用了“0X???????”内存,该内存不能read。通常该问题是软件出现了新的漏洞,在没有及时打补丁的情况下被病毒钻空子了。用户可利用漏洞修复工具提供的信息来查看软件是否存在严重漏洞来解决,并建议用户尽量不使用版或测试版软件来减少该问题的发生。

四、软件与其它软件有冲突。如果是新安装软件造成的,卸载它试试。

五、操作系统自身的BUG。注意发布的更新程序要及时打上,尤其是

与内存读写操作有关的Windows Management Instrumentation服务。如果该服务有错误,也会导致系统弹出内存读写错误的提示,可尝试在“服务”管理窗口中找到该服务并且手动停止该服务,再备份C:\WINDOWS\system32\wbem\Repository目录下所有的文件后再删除他们,重新启动系统后再次启用该服务,如果问题解决就说明该服务确实被破坏了。
2结束语
造成内存不能读写的原因很复杂,借鉴以上的方法也未必能解决所有的内存读写问题。本文希望能够作到抛砖引玉,帮助大家在解决类似问题的过程中不断积累经验。同时,也强烈建议大家在解决类似的问题过程中,要十分注意“发生问题前的计算机状态和自己所做的操作”,这样解决问题才能定位明确和易操作。
参考文献:
Microsoft论坛,2009.