CN100410889C - 物理存储器的测试方法 - Google Patents
物理存储器的测试方法 Download PDFInfo
- Publication number
- CN100410889C CN100410889C CNB2005101031385A CN200510103138A CN100410889C CN 100410889 C CN100410889 C CN 100410889C CN B2005101031385 A CNB2005101031385 A CN B2005101031385A CN 200510103138 A CN200510103138 A CN 200510103138A CN 100410889 C CN100410889 C CN 100410889C
- Authority
- CN
- China
- Prior art keywords
- physical page
- storer
- page
- physical
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种物理存储器的测试方法,应用于Linux操作***下的物理存储器检测以提高存储器的测试涵盖率,包括:通过一存储器测试程序访问***物理存储器,并遍历存储器数组中一存储器物理页;判断该页所处状态及被占用情况;当该页被***内核占用时,遍历存储器中下一页;当该页处于空闲或被应用程序占用时,锁定该页或将该页中的数据搬移到一空闲页中再锁定该页,并执行检测算法对该页进行测试;测试完后解除对被测页的锁定,并遍历存储器中下一页;以及在遍历下一页前,判断是否已遍历存储器中全部物理页,如未完成继续进行遍历及测试,否则,结束遍历。该测试方法用于在Linux内核模式下检测物理存储器,不仅测试涵盖率高且测试结果准确。
Description
技术领域
本发明所要解决的技术问题在于提供一种物理存储器的测试方法,特别是涉及一种应用于Linux操作***下的物理存储器的测试方法。
背景技术
目前,我们所使用的计算机的物理存储器通常只有几百兆字节(MB)的物理空间,例如256MB或512MB的物理存储器空间,而在实际开发Linux***应用程序时,每个开发进程都可以拥有自己的4GB的存储器空间,这是为什么呢?这首先要从Linux***内核(Kernel)所工作的存储器模式说起,因为Linux***内核工作于虚拟存储器模式,即:每一个虚拟页对应一个相应的***存储器的物理页,虚拟页和物理页之间的位址转换由硬件的页表来完成,对于一个特定的虚拟页,根据一条页表记录可以找到对应的物理页,或者是该页无法找到的提示(说明存在一个页错误)。
正是基于上述的″虚拟到物理″的页映像原理,Linux***内核通过存储器管理单元,将其虚拟存储器映像到物理存储器,并当***所需的物理存储器不足时,将暂时不用的物理存储器中的数据交换到计算机硬盘上,当***再次用到这些数据时再从计算机硬盘中交换回来,从而达到了扩展物理存储器空间的目的。
但是上述这种″虚拟到物理″的页映像不总是一一对应的:多个虚拟页(被不同的进程共享的页)有可能同时指向同一个物理页。在这种情况下,每个共享进程的页表记录将具有指向对应物理页的映射。如果有类似这样的情况,当***内核想要释放特定的物理页时,事情会变得非常复杂,因为它必须遍历(遍历,英文名称:Traversal,是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算的基础)所有的进程页表记录来查找指向这个物理页的引用,***内核只能在引用数达到0(count=0)时才能释放这个物理页,因为它没有别的办法可以知道是不是还存在实际指向这个页的引用。这样当***负载较高时会让虚拟存储器变得非常慢。
当前,我们在生产在线使用存储器测试工具测试存储器的公知方法是在虚拟存储器中分配尽可能多的虚拟空间,对其进行各种存储器算法的测试,然而虚拟存储器具体映像到的是真正的物理存储器还是硬盘的交换分区,检测人员不能清楚地了解。
因此,公知的用于Linux***平台下的物理存储器的测试方法,虽然其测试程序实现起来非常简便,但是该测试方法的缺点在于:其测试涵盖率低,该公知技术的存储器测试方法根本无法对操作***和测试程序本身所占用的***物理存储器进行检测,而且,经生产线使用发现,目前公知的存储器测试方法很难测出物理存储器的实际问题,即使发现问题,检测人员也不知道存储器真正出错或发生问题的实际物理位置。
发明内容
本发明所要解决的技术问题在于提供一种物理存储器的测试方法,应用于Linux操作***的32/64位保护模式下的物理存储器的检测过程中,该方法包括以下步骤:
(a)通过一存储器测试程序嵌入到Linux***内核中的一存储器访问接口直接访问***的物理存储器,并遍历该物理存储器数组中的一存储器物理页;
(b)根据遍历结果,判断物理存储器中该存储器物理页所处状态及其被占用的情况;
(c)当存储器物理页被***内核占用时,则准备遍历物理存储器中与被遍历的物理页相邻的下一存储器物理页;
(d)当存储器物理页处于空闲时,则锁定该存储器物理页,并执行存储器检测算法对该物理页进行测试,其中该存储器检测算法是通过向存储器中写入特定的数值,然后再读出该数值进行比对从而实现存储器测试的各种存储器检测算法;
(e)当存储器物理页被***中应用程序占用时,寻找该存储器物理页附近一空闲物理页,并锁定该空闲物理页,同时将原物理页面中的存储器数据数据复制搬移至该空闲物理页中,然后重新建立***中应用程序对新复制移植有存储器数据的该空闲物理页的映像连接关系,并锁定原存储器物理页且执行存储器检测算法对该物理页进行测试;
(f)测试完成后解除对被测物理页的锁定,并准备遍历物理存储器中与被遍历且被测试的物理页相邻的下一存储器物理页;以及
(g)在开始遍历物理存储器中下一存储器物理页之前,判断是否已经遍历完整个物理存储器数组中的全部存储器物理页,如未完成则继续进行遍历及测试,否则,结束对存储器物理页的遍历及测试。
为了实现上述目的,本发明提供了一种在Linux***平台下,通过直接访问物理存储器进行存储器测试的方法。该方法借助于Linux***内核的源代码对外开放的特性,深入到***内核内部直接访问物理存储器,并执行各种存储器检测算法的测试。
因此,本发明的一种物理存储器的测试方法与公知技术相比,其优点在于:该存储器测试方法的测试涵盖率高,除了***内核所占用的少量***物理存储器无法检测以外,该方法可对***中其余的物理存储器直接进行访问和检测,并可使测试人员清楚地知道所检测存储器的确切物理位置,且按照该存储器的物理位址进行测试,从而可方便准确地找到存储器真正出错或发生问题的实际物理位置。此外,本发明的方法是在32/64位(bit)保护模式下实现的,因此检测效率较高。
下面针对目前的Linux主流***通过一实例,对本发明方法的测试涵盖率高的优点做一简要说明:
例如,对于一个拥有256MB存储器的Linux***平台,启动Xwindow(一种在Linux***平台下使用的图形窗口***)后,***本身大概要占用60MB的存储器空间,再加上测试程序本身所占用的10MB存储器空间,因此,可以计算得出,使用公知技术的存储器测试方法所能检测到的***存储器为:186MB(即:256MB-60MB-10MB=186MB),其测试涵盖率为:186MB/256MB≈73%;
如果使用本发明测试方法,只有Linux***内核所占用的少量物理存储器无法进行测试,而由***内核占用的物理存储器大约只有15MB的存储器空间,因此,可以计算得出,使用本发明的存储器测试方法所能检测到的***物理存储器为:241MB(256MB-15MB=241MB),其测试涵盖率为:241MB/256MB≈94%,远远高于公知测试方法的测试涵盖率(73%),所以,根据以上计算结果,可以得出结论:本发明存储器测试方法与公知技术相比,其具有测试涵盖率较高的优点,从而弥补了公知技术的缺陷。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为本发明一种物理存储器的测试方法的整体步骤流程图;
图2为本发明一种物理存储器的测试方法的软件架构图;以及
图3为利用本发明测试方法检测一物理存储器时该存储器物理页的示意图。
其中,附图标记:
5 物理存储器
10 存储器访问接口模块
20 存储器测试逻辑实现模块
30 存储器测试程序模块
40 Linux***内核
步骤101 通过存储器测试程序访问***的物理存储器,并遍历物理存储器数组中一存储器物理页
步骤102 判断该存储器物理页所处状态及其被占用的情况
步骤103 准备遍历物理存储器中下一存储器物理页
步骤104 寻找该存储器物理页附近一空闲物理页并锁定该空闲物理页
步骤105 将原物理页面中的存储器数据数据复制搬移至该空闲物理页中
步骤106 重新建立***中应用程序对新复制移植有存储器数据的该空闲物理页的映像连接关系
步骤107 锁定该存储器物理页
步骤108 执行存储器检测算法对该物理页进行测试
步骤109 测试完成后解除对被测物理页的锁定
步骤110 判断是否已经遍历完整个物理存储器数组中的全部存储器物理页
具体实施方式
参考图1和图2,图1为本发明一种物理存储器的测试方法的整体步骤流程图。图2为本发明一种物理存储器的测试方法的软件架构图。如图1所示,本发明的一种物理存储器的测试方法,应用于Linux操作***下的物理存储器的检测过程中,该方法包括以下步骤:
当测试开始后,通过一存储器测试程序直接访问***的物理存储器,并遍历该物理存储器数组中的一存储器物理页,即步骤101,其中,该存储器测试程序是通过嵌入到Linux***内核中的一存储器访问接口来直接访问***的物理存储器的,如图2所示,此外,在执行该步骤101时,第一次遍历的一存储器物理页优选为该物理存储器数组中的最初页面;
根据遍历结果,判断物理存储器中该存储器物理页所处状态及其被占用的情况,即步骤102;
当存储器物理页被***内核占用时,则准备遍历物理存储器中下一存储器物理页,即步骤103,其中,该下一存储器物理页是指在该物理存储器中与被遍历的物理页相邻的下一物理页面;
当存储器物理页被***中应用程序占用时,寻找该存储器物理页附近一空闲物理页(该空闲物理页优选为存储器中邻近所述待测物理页且已经过遍历及测试的空闲物理页,当然也可以是未经遍历和测试的空闲物理页),并锁定该空闲物理页,即步骤104,同时将原物理页面中的存储器数据复制搬移至该空闲物理页中,即步骤105,然后重新建立***中应用程序对新复制移植有存储器数据的该空闲物理页的映像连接关系,即步骤106,并锁定原存储器物理页,即步骤107,并且执行存储器检测算法对该物理页进行测试,即步骤108;
当存储器物理页处于空闲时,则锁定该存储器物理页,即步骤107,并执行存储器检测算法对该物理页进行测试,即步骤108;
测试完成后解除对被测物理页的锁定,即步骤109,并准备遍历物理存储器中下一存储器物理页,即步骤103,其中,该下一存储器物理页是指在该物理存储器中与被遍历且被测试的物理页相邻的下一物理页面;以及
在开始遍历物理存储器中下一存储器物理页之前,判断是否已经遍历完整个物理存储器数组中的全部存储器物理页,即步骤110,如未完成则继续进行遍历及测试,即返回步骤101,否则,结束对存储器物理页的遍历及测试。
上述步骤中所述的存储器检测算法可以是公知技术的各种存储器检测算法,这些存储器检测算法的测试原理基本相同,即:都是通过向存储器中写入特定的数值,然后再读出该数值进行比对从而实现测试存储器的目的,在本发明测试方法中,这些存储器检测算法是通过Linux***提供的insmod命令(insmod命令为一种由Linux***提供的用于将各种驱动程序模块加载存储器中执行的命令,该命令可直接通过命令行参数将各种驱动程序模块动态地加载存储器中执行,并可在命令中指定驱动程序参数)将执行该算法的驱动程序模块动态加载到***内核上实现的,而对于这些公知的存储器检测算法的具体测试原理,本说明书在此不再赘述。
现在请参考图2,如图所示,本发明一种物理存储器的测试方法,其软件架构主要由三大模块组成:
1、存储器访问接口模块10,该存储器访问接口模块10嵌入于Linux***内核40(图2中深色部分所示)内部,其可向外提供访问接口用以直接访问***的物理存储器;
2、存储器测试逻辑实现模块20,该存储器测试逻辑实现模块20通过使用特定的存储器检测算法向存储器中写入特定的数值,然后再读出该数值进行比对从而实现存储器测试的目的;以及
3、存储器测试程序模块30,该存储器测试程序模块30通过调用存储器访问接口模块10所提供的存储器访问接口来直接访问***的物理存储器,并由存储器测试逻辑实现模块20实现对该物理存储器的测试功能。
现在请参考图3,为利用本发明的测试方法检测物理存储器5时该存储器物理页的示意简图。如图所示,利用本发明一种物理存储器的测试方法进行检测的物理存储器为256MB,图中深色部分表示***内核占用的存储器物理页,具有网格线的部分表示***中应用程序占用的存储器物理页,空白部分表示处于空闲的存储器物理页。
当开始测试时,存储器测试程序直接访问***的物理存储器,并从该物理存储器数组中的第0页存储器物理页(该页为物理存储器数组中的最初页面)开始遍历,当发现该页面被***内核占用时,因暂时无法测试,则继续遍历下一个物理页面(即第1页物理页),直至第6页时,发现该第6页为一空闲物理页面,则对其锁定并进行测试,测试完成之后解除对该第6页的锁定,并将该页归还给***内核,然后继续遍历下一物理页,即:第7页,而第7页也是一空闲物理页面,则继续对其锁定并进行测试,测试完成之后解除对第7页的锁定且归还给***内核,并继续遍历第8页,而第8页是一由***应用程序占用的物理页,则从与第8页最接近的物理页面中寻找一个已经遍历和测试过的空闲的物理页面,即:第7页,于是锁定该第7页,并将第8页中的存储器数据复制搬移至第7页中,且建立***应用程序对第7页的映射连接关系(即:此时如果***应用程序再调用所述存储器数据时,访问的将是第7页,而不再访问第8页),然后锁定并测试第8页,测试完成后解除对第8页的锁定并归还给***内核,而此时该第8页已变为一空闲页面,按照上述方法及步骤,如此继续下去直至遍历完第65535页物理页,从而遍历完成65536页存储器物理页,共256MB存储器空间,其中,除了***内核占用的少量存储器物理页无法测试以外,其余的存储器均可进行测试。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (3)
1. 一种物理存储器的测试方法,应用于Linux操作***的32/64位保护模式下的物理存储器的检测过程中,该方法包括以下步骤:
(a)通过将一存储器测试程序嵌入到Linux***内核中的一存储器访问接口直接访问***的物理存储器,并遍历该物理存储器数组中的一存储器物理页;
(b)根据所述遍历结果,判断所述物理存储器中该存储器物理页所处状态及其被占用的情况;
(c)当所述存储器物理页被***内核占用时,则准备遍历所述物理存储器中与被遍历的物理页相邻的下一存储器物理页;
(d)当所述存储器物理页处于空闲时,则锁定该存储器物理页,并执行存储器检测算法对该物理页进行测试,其中该存储器检测算法是通过向存储器中写入特定的数值,然后再读出该数值进行比对从而实现存储器测试的各种存储器检测算法;
(e)当所述存储器物理页被***中应用程序占用时,寻找该存储器物理页附近一空闲物理页,并锁定该空闲物理页,同时将原物理页面中的存储器数据复制搬移至该空闲物理页中,然后重新建立所述***中应用程序对新复制移植有所述存储器数据的该空闲物理页的映像连接关系,并锁定原存储器物理页且执行存储器检测算法对该物理页进行测试;
(f)测试完成后解除对所述被测物理页的锁定,并准备遍历所述物理存储器中与被遍历且被测试的物理页相邻的下一存储器物理页;以及
(g)在开始遍历所述物理存储器中下一存储器物理页之前,判断是否已经遍历完所述整个物理存储器数组中的全部存储器物理页,如未完成则继续进行遍历及测试,否则,结束对该存储器物理页的遍历及测试。
2. 根据权利要求1所述物理存储器的测试方法,其特征在于,所述(a)步骤中第一次遍历的存储器物理页为该物理存储器数组中的最初页面。
3. 根据权利要求1所述物理存储器的测试方法,其特征在于,所述存储器检测算法是通过Linux***提供的insmod命令将执行该算法的驱动程序模块动态加载到***内核上实现的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101031385A CN100410889C (zh) | 2005-09-16 | 2005-09-16 | 物理存储器的测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101031385A CN100410889C (zh) | 2005-09-16 | 2005-09-16 | 物理存储器的测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1932773A CN1932773A (zh) | 2007-03-21 |
CN100410889C true CN100410889C (zh) | 2008-08-13 |
Family
ID=37878618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101031385A Expired - Fee Related CN100410889C (zh) | 2005-09-16 | 2005-09-16 | 物理存储器的测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100410889C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104809039B (zh) * | 2015-04-24 | 2019-01-01 | 英业达科技有限公司 | 基于物理内存分配映射的内存检测方法 |
CN104951276B (zh) * | 2015-06-24 | 2017-05-31 | 福州瑞芯微电子股份有限公司 | 一种芯片指令高速缓存失效的检测方法及*** |
CN114639439B (zh) * | 2022-04-08 | 2023-03-24 | 北京得瑞领新科技有限公司 | 芯片内部sram测试方法、装置、存储介质及ssd设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835704A (en) * | 1996-11-06 | 1998-11-10 | Intel Corporation | Method of testing system memory |
CN1326152A (zh) * | 2000-05-25 | 2001-12-12 | 英业达股份有限公司 | 在视窗环境中自动快速测试手持式电脑的存储器的方法 |
US6651204B1 (en) * | 2000-06-01 | 2003-11-18 | Advantest Corp. | Modular architecture for memory testing on event based test system |
GB2408118A (en) * | 2003-11-14 | 2005-05-18 | Hewlett Packard Development Co | System and method for testing a memory using DMA |
-
2005
- 2005-09-16 CN CNB2005101031385A patent/CN100410889C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5835704A (en) * | 1996-11-06 | 1998-11-10 | Intel Corporation | Method of testing system memory |
CN1326152A (zh) * | 2000-05-25 | 2001-12-12 | 英业达股份有限公司 | 在视窗环境中自动快速测试手持式电脑的存储器的方法 |
US6651204B1 (en) * | 2000-06-01 | 2003-11-18 | Advantest Corp. | Modular architecture for memory testing on event based test system |
GB2408118A (en) * | 2003-11-14 | 2005-05-18 | Hewlett Packard Development Co | System and method for testing a memory using DMA |
Also Published As
Publication number | Publication date |
---|---|
CN1932773A (zh) | 2007-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100573728C (zh) | 一种存储器控制器自动化测试方法及装置 | |
US7149921B1 (en) | Apparatus, method, and system to allocate redundant components with subsets of the redundant components | |
US20110264870A1 (en) | Using region status array to determine write barrier actions | |
CN103116536B (zh) | 存储装置的容量检测方法 | |
CN107704194B (zh) | 无锁io处理方法及其装置 | |
CN101458658A (zh) | 用于闪存的数据存储方法及装置 | |
CN107066498A (zh) | 键值kv存储方法和装置 | |
WO2009156558A1 (en) | Copying entire subgraphs of objects without traversing individual objects | |
CN104598386B (zh) | 通过追踪和利用二级映射索引重复利用固态驱动器块 | |
CN102306503A (zh) | 一种假容量存储器的检测方法及*** | |
CN100449492C (zh) | Linux***下物理内存的测试方法 | |
CN100410889C (zh) | 物理存储器的测试方法 | |
CN102053868B (zh) | 一种内存泄露检测方法和装置 | |
CN107357696A (zh) | 一种非易失存储器坏块测试方法及*** | |
KR20110002742A (ko) | 메모리 회로 및 메모리 회로의 엑세스 방법, 메모리 관리 시스템 및 메모리 관리방법 | |
CN101211314B (zh) | 闪存资料读写寿命提升方法 | |
CN105893266A (zh) | 用于重新使用文件***的存储块的方法和装置 | |
CN109522207A (zh) | 一种基于约束求解的原子集合序列化违背探测方法 | |
Li et al. | Impact of data locality on garbage collection in SSDs: A general analytical study | |
CN106547472A (zh) | 存储阵列管理方法及装置 | |
CN100470683C (zh) | 嵌入式***动态存储错误静态检测的实现方法 | |
CN106662998A (zh) | 事务冲突检测方法、装置及计算机*** | |
Katsaragakis et al. | Energy consumption evaluation of optane dc persistent memory for indexing data structures | |
Zhang et al. | Gordon: Benchmarking optane dc persistent memory modules on fpgas | |
CN107680632B (zh) | 一种固态硬盘的寿命测试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20191226 Address after: No. 99, University Road, high tech Zone, Xuzhou City, Jiangsu Province Patentee after: XUZHOU LIFANG ELECTROMECHANICAL EQUIPMENT MANUFACTURING CO., LTD. Address before: Taipei City, Taiwan, China Patentee before: Yingda Co., Ltd. |
|
TR01 | Transfer of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080813 Termination date: 20190916 |
|
CF01 | Termination of patent right due to non-payment of annual fee |