用于文件信息写处理的方法和程序的制作方法

文档序号:6546067阅读:186来源:国知局
专利名称:用于文件信息写处理的方法和程序的制作方法
技术领域
本发明涉及用于写文件信息的处理方法及其程序。
背景技术
通过以下三种程序的组合实现计算机系统内的文件访问应用、文件系统(中间件)和设备驱动器。这里,应用是指诸如文字处理器和CAD软件之类的各种应用程序。设备驱动器是指对诸如磁盘和闪存之类的(非易失性)辅助存储器中的每个区域执行读/写的控制程序,其中所存储的内容即使在切断电源时也会保留下来。在应用和设备驱动器之间提供的文件系统(中间件)执行将与来自应用的写指令相对应的指令输出到设备驱动器的过程。
利用这种文件系统,当在写数据期间电源意外被切断以及发生写错误时,问题常常在于如何恢复文件中与写相关的信息。从这种关系出发,在诸如专利参考文件1等许多参考文件中公开了解决诸如此类的写错误的方法。
专利参考文件1日本专利在先公开No.2003-169293“数据记录器/播放器、用于记录和播放数据的装置和数码相机(Data recorder/player,means for recordingand playing data,and digital camera)”。
相关领域描述下面解释在计算机进行文件访问期间的两个实例,在一个实例中从应用发送到文件系统的写指令是文件覆写指令,在另一个实例中写指令是文件移动指令。
首先解释当从应用将覆写指令给予中间件时,由中间件执行的与覆写指令相对应的过程。
图1示出了文件系统的数据构造。
如图1所示,文件系统包括3个区域,引导扇区、文件分配表(FAT)和实际数据区域。
在这里,在引导扇区中描述关于整个文件系统的信息,例如文件系统容量、簇(实际数据区域的处理单元)的大小和根目录在实际数据区域中的位置。另外,指示一个簇被连接到哪一个簇的指针信息被存储在FAT的每个条目中,其中FAT的每个条目对应于实际数据区域中的各个簇。如果簇没有连接目的地,则在该指针信息中设置“End”。如果该簇被释放,则在该指针信息中设置“NULL”(在图中用空白示出)。换句话说,在与FAT中指针值未被设置为“NULL”的条目相对应的簇中保留的数据是有意义的数据。
此外,将使用的实际数据区域划分为称作簇的(处理)单元,在簇中存储关于文件和目录的实际信息。在图1中,为了简单,将实际数据区域划分为16个簇,并且这些簇都具有十六进制数字0到15的头地址,依次从右上到左下递增;即“0x0”、“0x1”、“0x2”、“0x3”、“0x4”、“0x5”、“0x6”、“0x7”、“0x8”、“0x9”、“0xA”、“0xB”、“0xC”、“0xD”、“0xE”、和“0xF”。
例如,在图1中,通过参考引导扇区,可知实际数据区域的根目录对应于“0x0”簇,并且从这个“0x0”簇的内容中指示出文件(File1)作为一个目录条目存在于这个根目录中,该文件的长度(Length)=5,并且头部实际数据(Data1)位于“0x1”簇中。
由于关于实际数据区域中的簇的互联的信息被存储在图1中的FAT中,所以通过参考FAT,可知“0x2”簇的数据(Data2)作为“0x1”簇的数据(Data1)的后继数据而存在,“0xB”簇的数据(Data3)作为“0x2”簇的数据(Data2)的后继数据而存在,“0xE”簇的数据(Data4)作为“0xB”簇的数据(Data3)的后继数据而存在,并且“0x5”簇的数据(Data5)作为“0xE”簇的数据(Data4)的后继数据而存在。另外,由于与“0x5”簇对应的FAT条目是“End”,所以该文件(File1)以“0x5”簇的数据(Data5)结束。这里,在图1的下面一行中示出了这样一个事实,即(根目录的)目录条目File1被构造为使得Data1、Data2、Data3、Data4和Data5依次连接。
从输出文件File1的应用中给出关于File1的覆写指令。图2图示了在发出覆写指令之前文件的状态。
文件系统(中间件)利用在来自应用的覆写指令中所包括的起始位置和覆写长度,指定辅助存储器(实际存储区域)中作为写目标的(一个或多个)簇。在这里,对应于Data2、Data3和Data4的簇被认为是已经这样指定的簇。
换句话说,首先,如图3所示,覆写与Data2相对应的簇的内容;接下来,如图4所示,覆写与Data3相对应的簇的内容;此后,如图5所示,覆写与Data4相对应的簇的内容。
图6是传统覆写过程的流程图。
在图6中,首先,在步骤S101中,对实际数据区域中被指定为覆写目标的一个或多个簇执行数据覆写(写)过程。在随后的步骤S102中,改变(更新)文件信息,例如最后更新时间信息。
然而,如果用这样的过程执行文件覆写,则例如当在如图3、图4或图5所示的第一次写、第二次写或第三次写期间发生诸如电源中断之类的写错误时,正被写的簇(即对应于Data2、Data3或Data4的簇)的数据在不完整状态下被存储到辅助存储器中。这意味着在从开始覆写与图3的Data2相对应的簇,直到完成覆写与图5的Data4相对应的簇之前的期间内,如果发生电源中断等,则将在辅助存储器中留下不完整的数据。换句话说,这是一个存在数据损坏的风险的时期。
接下来,解释从应用将文件移动指令给予中间件时,由中间件执行的与文件移动指令相对应的过程。
图7示出了移动文件之前的数据构造。图7的解释中与图1的解释重复的部分基本上被省略了。
在图7中,从引导扇区(未示出)的内容可知,“0x0”簇是实际数据区域中与目录dir中的目录条目相对应的簇,从目录dir的内容可知,目录dir1和dir2存在于这一目录dir之下,目录dir1的目录条目存储在“0x3”簇中,目录dir2的目录条目存储在“0x4”簇中。
通过参考“0x3”簇可知,目录dir1拥有文件file1,该文件的数据长度=3,并且文件file1的头部数据存储在“0x1”簇中。另外,通过参考“0x4”簇可知,目录dir2拥有文件file2,该文件的数据长度=3,并且文件file2的头部数据存储在“0x8”簇中。此外,如前所述,通过参考FAT可知,文件file1具有下述构造,在该构造中,按照Data1、Data2和Data3的顺序连接Data1、Data2和Data3的簇。同样,文件file2具有下述构造,在该构造中,按照Data4、Data5和Data6的顺序连接Data4、Data5和Data6的簇。
换句话说,可以理解在图7的下半部分所示的实际数据区域和FAT指示了在图7的上半部分所示的文件(目录)构造。
下面参考图8到图10来解释在其中将dirdir1file1移动到dirdir2file2的实例。在图7所示的示例中,该移动过程包括文件覆写,因为dirdir2file2已存在于移动的目的地中。
图8示出了文件系统针对来自应用的移动指令所执行的过程。在图8中,首先,当文件系统从应用接收到表述为“movedirdir1file1 todirdir2file2的以上信息时,并且基于该信息将辅助存储器内的实际数据区域的移动源的文件file1的目录条目加载到主存储器之后,从辅助存储器内的实际数据区域中删除移动源的文件file1的目录条目。
随后,如图9所示,将已存在于移动目的地中的文件file2删除,即,从辅助存储器内的实际数据区域中删除移动目的地的文件file2的目录条目,同时,从FAT中清除与Data4、Data5和Data6(作为构成文件file2的实际数据)相对应的条目的指向信息(清除对应于Data4的条目后的链)。
然后,如图10所示,基于在主存储器中保持的移动源的文件file1的目录条目的信息,在实际数据区域内的目录dir2的目录条目中创建文件file2(写file2信息),以便指向移动源的文件file1的头部实际数据Data1。
图11是传统文件移动过程的流程图。
在图11中,首先,在将辅助存储器内的实际数据区域的移动源的文件的目录条目加载到主存储器中之后,在步骤S201中,从辅助存储器内的实际数据区域中删除移动源的文件的目录条目。然后,在步骤S202中,确定在移动目的地处文件是否被覆写。如果在步骤S202中确定执行覆写,则在步骤S203中删除已存在于移动目的地中的文件,并且过程前进到步骤S204。另一方面,如果在步骤S202中确定不执行覆写,则过程直接前进到步骤S204。
在步骤S204中,将移动目的地的文件信息写入移动目的地的目录中的目录条目,以便指向移动源的文件的头部实际数据。尽管在上面解释的每个步骤中要移动的目标是文件,但是移动的目标也可以是目录。为了使得该过程能够处理文件和目录,添加步骤S205,步骤S205判断要移动的目标是不是目录,并且当要移动的目标是目录时,在步骤S206中改变(更新)关于要移动的目录的父目录“..”的信息。
如果使用例如上面解释的过程执行文件移动,那么从图8中将移动源的文件file1信息从辅助存储器内的实际数据区域的移动源的文件file1的目录条目删除之后,直到图10中从主存储器读出移动源的这一文件file1信息之前的期间内,当发生诸如电源中断之类的写错误时,与存储了移动源的文件的头部实际数据的簇的位置有关的信息会突然消失,或者换句话说,这是一个存在数据损坏的风险的时期。

发明内容
本发明的目的是提供写处理方法和程序,该方法和程序能够缩短在发生电源中断等故障时存在数据损坏的风险的时期。
本发明第一方面的文件信息写处理方法是这样一种文件信息写处理方法,在该方法中,计算机执行将与来自应用的文件信息写指令相对应的指令输出到设备驱动器的过程,其中搜索计算机的存储器单元的实际数据区域中作为空区域的簇,并且获得搜索结果;如果存在作为空区域的簇,则将下述信息写入所述作为空区域的簇,其中所述信息是应当被覆写到存储单元的实际数据区域中作为来自应用的写指令的目标的一个或多个簇的信息;并且释放原本要用被写入所述空区域簇的信息来覆写的簇。
在这里,由于将应当被覆写到指定为写目标的簇中的数据写到已经搜索并获得的实际数据区域中的空区域簇中,所以如果可以保证这些空区域簇的数目与作为写目标的簇的数目一样多,就可以将要被覆写的数据一次写入该空区域簇。在这种情形中,通过将此与直接将数据覆写到该写目标簇的传统示例相比较,可以消除由于在数据覆写期间电源中断所导致的在实际数据区域中存储不完整数据的风险,所以当发生电源中断等故障时,缩短了其中存在数据损坏风险的时期。要被覆写的数据称作更新信息,或者说“Data New”(在图15到18中示作Data2 New、Data3 New和Data4New)。
本发明第二方面的文件信息写处理方法是这样一种文件信息写处理方法,在该方法中,计算机执行将与来自应用的文件信息写指令相对应的指令输出到设备驱动器的过程,其中搜索移动目的地中的目录的条目,以确定写指令是不是覆写其他文件的文件移动指令;根据写指令是否是覆写其他文件的文件移动指令,来改变或者生成移动目的地中的文件的目录条目,以便在移动源的文件的目录条目和移动源的文件的实际数据之间的链接被保持的状态中,链接到移动源的文件的实际数据;删除移动源中的文件的目录条目。
在这里,改变或者生成移动目的地中的文件的目录条目,以便在移动源的文件的目录条目和移动源的文件的实际数据之间的链接被保持的状态中链接到移动源的文件的实际数据,这消除了与传统示例中一样的其中移动源的文件的信息只存在于主存储器中的时期,并且缩短了当发生电源中断等故障时其中存在数据损坏风险的时期。
根据本发明,因为应当被覆写到指定为写目标的簇中的数据被写入已经搜索并获得的实际数据区域中的空区域簇中,所以当可以保证这些空区域簇的数目与对应于包括在来自应用的写指令中的数据的簇的数目一样多时,就可以将应当被覆写的数据一次写入空区域簇。在这种情形中,通过将此与其中直接将数据覆写到该写目标簇的传统示例相比较,可以消除由于在数据覆写期间电源中断所导致的在实际数据区域中存储不完整数据的风险,所以当发生电源中断等故障时,缩短了其中存在数据损坏风险的时期。
另外,根据本发明,改变或者生成移动目的地中的文件的目录条目,以便在移动源的文件的目录条目和移动源的文件的实际数据之间的链接被保持的状态中链接到移动源的文件的实际数据,消除了与传统实施例中一样的其中移动源的文件信息只存在于主存储器中的时期,并且可以缩短当发生电源中断等故障时其中存在数据损坏风险的时期。


图1是示出了文件系统的数据构造的图。
图2是示出了在接收覆写指令之前的文件状态的图。
图3是解释在接收覆写指令之后传统文件系统的操作的图(No.1)。
图4是解释在接收覆写指令之后传统文件系统的操作的图(No.2)。
图5是解释在接收覆写指令之后传统文件系统的操作的图(No.3)。
图6是示出了在接收覆写指令之后传统文件系统的处理的流程图。
图7是示出了在接收移动指令之前的文件状态的图。
图8是解释在接收移动指令之后传统文件系统的操作的图(No.1)。
图9是解释在接收移动指令之后传统文件系统的操作的图(No.2)。
图10是解释在接收移动指令之后传统文件系统的操作的图(No.3)。
图11是示出了在接收移动指令之后传统文件系统的处理的流程图。
图12是解释包括有文件系统的整个系统的处理之间的调用关系的图。
图13是示出当来自应用的指令要覆写文件时在文件系统一侧启动的处理之间的调用关系的图。
图14是示出了本发明第一实施方式中的写处理单元的配置的方框图。
图15是解释第一实施方式中的写处理单元的操作的图(No.1)。
图16是解释第一实施方式中的写处理单元的操作的图(No.2)。
图17是解释第一实施方式中的写处理单元的操作的图(No.3)。
图18是解释第一实施方式中的写处理单元的操作的图(No.4)。
图19是第一实施方式中的覆写过程的流程图。
图20是图示当来自应用的指令要移动文件时在文件系统一侧启动的处理之间的调用关系的图。
图21是示出了本发明第二实施方式中的写处理单元的配置的方框图。
图22是解释第二实施方式中的写处理单元的操作的图(No.1)。
图23是解释第二实施方式中的写处理单元的操作的图(No.2)。
图24是解释第二实施方式中的写处理单元的操作的图(No.3)。
图25是解释第二实施方式中的写处理单元的操作的图(No.4)。
图26是示出了当用程序实现本发明的每种实施方式时的硬件环境的图。
图27时解释程序加载的图。
具体实施例方式
下面参考附图详细解释本发明的实施方式。
图12解释包括有文件系统的整个系统的处理之间的调用关系。如图12所示,由文件系统(中间件)一侧启动与来自应用的每个指令“文件创建”、“文件移动”、“文件复制”和“文件覆写”相对应的过程。例如,响应于“文件创建”将要创建的文件添加到目录条目。同样,响应于“文件移动”而改变移动源的目录的目录条目和移动目的地的目录。另外,响应于“文件复制”而将要被复制的文件添加到复制目的地目录的目录条目,同时,在实际数据区域中创建该要被复制的文件的实际数据。另外,将应当被写到实际数据区域中的簇(其是文件覆写目标)中的数据写到空区域簇,并且同时根据该写过程改变FAT信息。
图13图示了当来自应用的指令是覆写文件时在文件系统一侧启动的处理之间的调用关系。如图13所示,当文件覆写指令(由应用输出)从应用输出到文件系统一侧时,在文件系统一侧调用对应的“文件覆写”过程。
从该“文件覆写”过程调用下面的每个过程通过读FAT而执行的“空区域搜索”过程;用于更新FAT和实际数据区域中的数据的各种过程,或者说,将这些FAT和实际数据区域从介质(辅助存储器)读到主存储器的“FAT读”和“实际数据读”过程,以及将在主存储器中的更新后的FAT和实际数据区域的数据写到介质(辅助存储器)的“FAT写”和“实际数据写”过程。
图14图示了在本发明第一实施方式中的写处理单元的配置。
在图14中,写处理单元被配置在应用和设备驱动器之间,并且执行将与来自应用的文件信息写指令相对应的指令输出到设备驱动器的处理。这个来自应用的文件信息写指令作为要被覆写的信息被保留在主存储器中,其包括覆写起始位置、长度和具有该长度的数据。
在图14中,写处理单元包括写目标指定单元11,用于基于来自应用的文件信息写指令,指定将是写指令的目标的(一个或多个)簇;空区域搜索单元12,用于搜索辅助存储器的实际数据区域中作为空区域的簇,并且获得搜索结果;写过程执行单元13,用于如果存在空区域簇,则将下述信息写入所述空区域簇,所述信息要被覆写到辅助存储器的实际数据区域中的一个或多个簇,而这些簇是来自应用的写指令的目标;释放单元15,用于在作为所述写指令的目标的簇当中,释放那些原本要用被写入所述空区域簇的信息来覆写的簇;和确定单元14,用于确定在包括在所述写指令中的数据(要被覆写的信息)当中是否存在还没有被写到空区域簇的部分。图14中的每个单元例如对应于图26中的CPU51和RAM53的组合。
下面解释本实施方式中的写处理单元的操作。
首先,当写过程执行单元13从应用接收到文件覆写指令时,利用充当触发的该覆写指令的接收来启动写目标指定单元11和空区域搜索单元12。
在写目标指定单元11中,使用要被覆写的信息中的覆写起始位置和长度信息来指定辅助存储器(实际数据区域)中将是写指令目标的(一个或多个)簇,其中要被覆写的信息包括在来自应用的写指令中。另外,空区域搜索单元12读(参考)FAT,并且搜索实际数据区域中的空区域簇(没有使用的簇),并且获得搜索结果。
写过程执行单元13从空区域搜索单元12接收到例如指示空区域簇的位置的搜索结果信息,并且根据该搜索结果信息来确定在实际数据区域中是否存在空区域簇。如果存在空区域簇,则写过程执行单元13就将应当被覆写到实际数据区域中被指定为写指令的目标的(一个或多个)簇的信息写入搜索结果中的空区域簇。尽管存在着在实际数据区域的头部簇和尾部簇中包括未被改变的数据部分的情形,但是在这些情形中,合并部分(未示出)将未被改变的数据部分和要被新覆写的数据部分合并,并且创建应当被写入这些簇的数据。
在此写过程之后,在作为写指令目标的簇当中,释放那些被写入空区域簇的信息原本要被覆写到的对应簇。然后,确定单元14确定在写指令中所包括的数据当中是否存在没有被写入空区域簇的部分。
如果在包括在写指令中的数据中存在这样的部分,则空区域搜索单元12再次被写过程执行单元13激活,并且执行对作为空区域的簇的搜索。在该搜索中,因为获得了大于或等于由释放单元15释放的簇的数目的空区域,所以写过程执行单元13对这些大于或等于被释放的簇的数目的空区域执行写过程。然后,释放单元15以相同的方式执行被写到空区域簇的信息原本要被覆写到的簇的释放过程。
下面参考图15到图18解释用于处理来自应用的文件覆写指令的写处理单元的过程。然而,在这些图中,为了和现有技术相比较,假设从应用给出了与在现有技术中实现的相同的覆写指令,并且文件构成也与现有技术中实现的相同。
换句话说,和在现有技术的情形中一样,在图15中,写目标指定单元11基于包括在来自应用的覆写指令中的与覆写的起始位置和长度有关的信息,将实际数据区域中将作为覆写目标的簇指定为与Data2、Data3和Data4相对应的簇。
在本实施方式中,如上所述,空区域搜索单元12读FAT,并且将与该FAT中具有NULL指针(在该图中图示为空白)的条目相对应的簇确定为空区域簇。在这种情形中,写过程执行单元13从例如具有最小地址的空区域簇开始,顺序地将对应于Data2、Data3和Data4的新数据(Data2 New、Data3 New和Data4 New)写入实际数据区域中的簇。
在随后的图16中,将指示了“Data2 New”、“Data3 New”和“Data4 New”以此顺序被连接以及“Data4 New”被连接到“Data5”的(指针)信息写入对应于每个簇“Data2 New”、“Data3 New”和“Data4New”的FAT条目。
另外,在随后的图17中,写过程执行单元13将对应于“Data1”的FAT条目的指针改变为指向“Data2 New”簇。
此外,在随后的图18中,释放单元15通过将对应于“Data2”、“Data3”和“Data4”簇的FAT条目的指针设置为NULL,释放实际数据区域的“Data2”、“Data3”和“Data4”簇。
图19示第一实施方式中的覆写过程的流程图。该过程由图14中的写处理单元执行。
在图19中,首先,在步骤S301中,空区域搜索单元12通过读FAT来搜索实际数据区域中的空区域簇。
在步骤S302中,写过程执行单元13根据接收到的搜索结果来确定是否存在空区域。如果不存在空区域,则将处理链终止为(空区域)错误。另一方面,如果存在(一个或多个)空区域簇,则过程前进到步骤S303,并且在步骤S303中,应当被覆写到指定为覆写目标的簇的数据被写入搜索结果中的空区域簇,然后,在随后的步骤S304中,改变FAT中与在步骤S303中执行了写的空区域簇相对应的指针信息。在步骤S305中,在存储了作为覆写目标的文件的实际数据的簇当中,将与其中就在被指定为覆写目标的簇之前的簇相对应的FAT中的指针改变为指向在步骤S303中对其执行写的簇的头部簇。
在随后的步骤S306中,改变(更新)例如最后更新时间的文件信息。然后在步骤S307中,通过将与原本要用被写入空区域簇的信息来覆写的簇相对应的FAT条目的指针设置为NULL,释放这些原本要被覆写的簇(变为空区域)。
在随后的步骤S308中,确定是否已经完成所有的数据写,或者说,是否存在其中包括在写指令中的数据内的信息(要被覆写的信息)尚未被写入空区域簇的部分。如果没有完成所有的数据写,或者说,如果通过步骤S301找到并获得的空区域簇的数量少于指定为覆写目标的簇,则过程返回到步骤S301,并且再次搜索空区域。另一方面,如果已经完成所有的数据写,则该处理链完成。
按照这种方式,在第一实施方式中,因为应当被覆写到空区域簇的数据被写入实际数据区域中已被搜索并获得的空区域簇,所以如果这些空区域簇可以保证簇的数量对应于在来自应用的写指令中所包括的数据,那么就可以一次将应被覆写的数据写入空区域簇。在这种情形中,通过将此与直接将数据覆写到该写目标簇的传统示例相比较,可以消除由于在数据覆写期间电源中断所导致的在实际数据区域中存储不完整数据的风险,所以当电源中断等故障发生时,缩短了其中存在数据损坏风险的时期。
接下来解释第二实施方式。在第一实施方式中解决了文件覆写处理,在第二实施方式中要解决文件移动处理。
图20图示了当来自应用的指令要移动文件时,在文件系统处启动的处理之间的调用关系。如图20所示,当文件移动指令从应用输出到文件系统时,在文件系统中调用对应的“文件移动”过程。
从这个“文件移动”过程调用“目录读”和“目录写”过程作为改变目录条目的过程。从“目录读”过程调用“FAT读”和“实际数据读”过程,以将FAT和实际数据区域从介质(辅助存储器)读到主存储器,并且从“目录写”过程调用“FAT写”过程和“实际数据写”过程,以将在主存储器中的在FAT和实际数据区域中更新后的数据写到介质(辅助存储器)。
图21是图示了在本发明第二实施方式中的写处理单元的配置的方框图。
在图21中,写处理单元被配置在应用和设备驱动器之间,并且执行用于将与来自应用的文件信息写指令相对应的指令输出到设备驱动器的过程。
在图21中,写处理单元包括搜索单元23,用于搜索移动目的地的目录的条目,并且发现写指令是不是伴随有覆写的文件移动;写过程执行单元21,基于该文件移动的写指令是否伴随有覆写,用于在移动源的文件的目录条目和移动源的文件的实际数据之间的链接被保持的状态下,改变或者生成移动目的地中的文件的目录条目,以便链接到移动源的文件的实际数据;条目删除单元22,用于删除移动源的文件的目录条目;以及释放单元26,用于当通过搜索确定写指令为伴随有覆写的文件移动时,释放在写指令之前移动目的地的文件原来一直指向的实际数据。图21中的每个单元对应于例如图26中的CPU51和RAM53的组合。
下面解释本实施方式中的写处理单元的操作。
首先,在写过程执行单元21从应用接收到文件移动指令之后,利用充当触发的这个移动指令的接收来启动搜索单元23。搜索单元23包括条目搜索单元24和条目空区域搜索单元25。首先,条目搜索单元24搜索在移动目的地的目录的目录条目中是否存在与移动指令所指定的移动目的地的文件名相匹配的文件名。如果不存在匹配的文件名,则确定移动指令不由覆写伴随,并且随后搜索在存储移动目的地的目录的目录条目的簇中是否存在用于写要被添加到移动目的地的目录中的条目信息的空区域。如果在该目录条目中存在空区域,则将要被添加的文件的条目信息写入目录条目中的该空区域,从而被链接到移动源的文件的实际数据。
另一方面,如果确定在移动目的地的目录的目录条目中存在与移动指令指定的移动目的地的文件名相匹配的文件名,则作出改变以便将该匹配文件的条目信息链接到移动源的文件的实际数据。无论条目搜索单元24的搜索结果如何,条目删除单元22都要删除移动源的文件的目录条目。
写过程执行单元21基于搜索单元23的搜索结果,确定写指令是不是伴随有覆写的文件移动指令。如果确定为伴随有覆写的移动,则启动释放单元26,并且清除FAT中的对应条目,以释放在移动指令之前移动目的地的文件原来一直指向的实际数据。
下面参考图22到图24解释本实施方式中用于处理来自应用的文件移动指令的写处理单元的过程。然而,在这些图中,为了与现有技术做比较,和在现有技术的解释中一样解决dirdir1file1到dirdir2file2的移动。
图22图示了文件file2已经存在于移动目的地的目录dir2中的情形。因此,条目搜索单元25将在移动目的地的目录dir2中已经存在同名的文件file2这一事实作为搜索结果返回到写过程执行单元21。
写过程执行单元21基于该搜索结果信息,改变移动目的地中的文件file2的目录条目,以指向移动源中的文件file1的头部实际数据Data1。换句话说,改变了移动目的地的实际数据区域中的文件file2的目录条目。
在现有技术中,首先,基于在将移动源中的文件的目录条目存储到主存储器之后删除该目录条目这种事实,并不认为在移动源和移动目的地中的目录条目内指向对应于Data1的实际数据区域簇的文件(file1和file2)象图22中那样存在。
这是由于下述事实在传统上遵循“将文件删除功能实现为文件移动过程的一部分”这种通用规则的情况下,例如图22中所示的状态是这样一种状态,其中在通过指定file1和fiel2之一而实现文件删除功能的同时,删除连接到任一文件的目录条目的所需数据Data1之后的簇链,并且不认为这种状态是优选的。
在本实施方式中,通过使用作为图23中所示的文件删除功能的一部分的条目删除功能,从移动源中的文件的目录条目删除关于移动源中的文件的信息,来克服上述缺点。
另外,本实施方式中的移动过程还具有这样的效果缩短了由于偶然的电源中断而发生写错误的时期。换句话说,因为在移动目的地中的目录条目中,将移动目的地中的文件信息改变为指向移动源中的文件的头部实际数据Data1,同时移动源的文件信息存在于辅助存储器内的移动源中的文件的目录条目中,所以消除了移动源的文件信息只存在于主存储器中的时期,并且缩短了由于偶然的电源中断而发生写错误的时期。
接下来,在图24中,通过清除FAT中相应的条目,释放实际数据Data4之后的簇链,其中移动源中的文件的目录条目原先指向Data4。
尽管上面解释了下述情形,其中具有与由移动指令所指定的文件名(file2)同名的文件存在于移动目的地的目录中,但是也可以同样考虑在移动目的地的目录中不存在同名文件时的情形中的过程。在该情形中,写过程执行单元21基于搜索结果信息,创建移动目的地的文件file2的信息,以指向移动源中的文件file2的头部实际数据Data1。
图25是在第二实施方式中的移动过程的流程图。该流程图由图21中的写处理单元执行。
尽管图25中的过程解释文件移动,但是在移动目录的情形中,添加了步骤S401和S402的处理。换句话说,在步骤S401中,确定要移动的目标是不是目录,如果是目录,则在步骤S402中,将关于该目标目录的父目录“..”的信息从移动源的(父)目录改变为移动目的地的(父)目录。
在随后的步骤S403中,搜索移动目的地的目录,并且基于指定为移动目的地的文件是否已经存在于该目录中,写过程执行单元21将移动目的地的目录的目录条目的文件信息改变或生成为指向移动源中的文件的头部实际数据。
然后在步骤S404中,条目删除单元22将移动源的文件信息从移动源中的目录的目录条目删除。
在随后的步骤S405中,确定在移动目的地中文件信息是否已被覆写。如何确定还未被覆写,则立即终止处理链,如果确定已经被覆写,则在步骤S406中将在移动指令之前移动目的地中的文件原来一直指向的实际数据释放。
可以将在本发明的每种实施方式中的写处理单元配置为软件。图26示出了当利用程序实施本发明的每种实施方式时的硬件环境。
在图26中,作为硬件的计算机由下述部分组成经由总线57连接的CPU51、ROM52、RAM53、通信接口54、输入/输出设备56、存储设备55和(存储介质)读取器58。
在图26中,CPU51控制整个计算机,并且RAM53是主存储器,其临时存储在程序执行期间在诸如存储设备55的辅助存储器中所存储的数据、数据更新等。
用户可以经由输入/输出设备56向应用发出诸如文件覆写和文件移动之类的各种指令。另外,经由应用将关于在本实施方式中由写处理单元处理的结果的信息呈现给用户。
除了在存储设备55中存储的程序和数据外,在计算机中可以使用已由读取器读取的便携式存储介质59的程序和数据、以及已经由网络62和通信接口54读取的信息提供者61的程序和数据。
图27是解释程序加载的图。
明显可以用通用计算机74实现诸如本发明的文件覆写和移动处理之类的文件写处理。在该情形中,可以将用于本发明中的过程等的程序从计算机74的存储设备72加载到计算机74中的存储器,并执行该程序,或者还可以将用于本发明中的过程等的程序从便携式存储介质73加载到计算机74中的存储器,并执行该程序,或者还可以经由网络将用于本发明中的过程等的程序从程序提供者70的存储设备71加载到计算机74中的存储器,并执行该程序。
相关申请的交叉引用本申请基于并要求于2004年12月12日提交的在先日本专利申请No.2004-375074的优先权,该在先申请的整个内容作为参考结合于此。
权利要求
1.一种文件信息写处理方法,其中计算机执行将与来自应用的文件信息写指令相对应的指令输出到设备驱动器的过程,其中搜索在所述计算机的存储器单元的实际数据区域内作为空区域的簇,并且获得搜索结果;如果存在所述作为空区域的簇,则将下述信息写入所述作为空区域的簇,其中所述信息是应当被覆写到所述存储单元的实际数据区域内作为来自所述应用的所述写指令的目标的一个或多个簇的信息;并且释放原本要用被写入所述空簇的信息来覆写的簇。
2.如权利要求1所述的文件信息写处理方法,其中确定在要写的信息中是否存在没有被写入空簇的部分;并且如果存在尚未写入的部分,则重新执行所述搜索、写和释放过程。
3.如权利要求1所述的文件信息写处理方法,其中,在所述写入空区域之后设置与对其执行了写的空簇相对应的指针信息;并且将与就在对其执行了写的簇之前的簇相对应的指针信息改变为指向对其执行了写的簇的头部簇。
4.一种文件信息写处理方法,其中计算机执行将与来自应用的文件信息写指令相对应的指令输出到设备驱动器的过程,其中搜索移动目的地中的目录的条目,以确定所述写指令是不是覆写其他文件的文件移动指令;根据所述写指令是不是覆写其他文件的文件移动指令,改变或者生成所述移动目的地中的文件的目录条目,以在所述移动源中的文件的目录条目和所述移动源中的文件的实际数据之间的链接被保持的情况下,链接到所述移动源中的文件的实际数据;删除所述移动源中的文件的目录条目。
5.如权利要求4所述的文件信息写处理方法,其中,如果在所述确定过程中确定所述写指令是覆写了已存在文件的文件移动指令,则释放在所述移动指令之前所述移动目的地中的文件原来一直指向的实际数据。
6.一种存储文件信息写处理程序的存储介质,所述的文件信息写处理程序使得计算机能够执行将与来自应用的文件信息写指令相对应的指令输出到设备驱动器的过程,其中所述程序使得所述计算机能够执行搜索步骤,用于搜索在所述计算机的存储器单元的实际数据区域中作为空区域的簇,并且获得搜索结果;写步骤,用于如果存在所述作为空区域的簇,则将下述信息写入所述作为空区域的簇,其中所述信息是应当被写入所述存储单元的实际数据区域内作为来自所述应用的写指令的目标的一个或多个簇的信息;以及释放步骤,用于释放原本要用被写入所述空簇的信息来覆写的簇。
7.如权利要求6所述的存储文件信息写处理程序的存储介质,其中所述写处理程序使得所述计算机还能够执行确定步骤,用于确定在要被覆写的信息中是否存在没有被写入空区域簇的部分;并且如果存在尚未被写入的部分,则重新执行所述搜索步骤、写步骤和释放步骤。
8.如权利要求6所述的存储文件信息写处理程序的存储介质,其中所述写处理程序使得所述计算机能够在所述写步骤之后执行设置步骤,用于设置与已对其执行了写的空簇相对应的指针信息;以及改变步骤,用于将与就在对其执行了写的簇之前的簇相对应的指针信息改变为指向对其执行了写的簇的头部簇。
9.一种存储文件信息写处理程序的存储介质,所述的文件信息写处理程序使得计算机能够执行将与来自应用的文件信息写指令相对应的指令输出到设备驱动器的过程,其中所述程序使得所述计算机能够执行搜索步骤,用于搜索移动目的地中的目录的条目,以确定所述写指令是不是覆写其他文件的文件移动指令;改变或生成步骤,用于根据所述写指令是不是覆写其他文件的文件移动指令,来改变或者生成所述移动目的地中的文件的目录条目,以在所述移动源中的文件的目录条目和所述移动源中的文件的实际数据之间的链接被保持的情况下,链接到所述移动源中的文件的实际数据;删除步骤,用于删除所述移动源中的文件的目录条目。
10.如权利要求9所述的存储文件信息写处理程序的存储介质,其中所述写处理程序使得所述计算机还能够执行释放步骤,所述释放步骤用于如果在所述确定步骤中确定所述写指令是覆写已存在文件的文件移动指令,则释放在所述移动指令之前所述移动目的地中的文件原来一直指向的实际数据。
全文摘要
根据本发明的文件信息写处理方法是这样一种文件信息写处理方法,在该方法中,计算机执行将与来自应用的文件信息写指令相对应的指令输出到设备驱动器的过程,其中搜索计算机的存储器单元的实际数据区域中作为空区域的簇,并且获得搜索结果;如果存在空区域的簇,则将下述信息写入空区域簇,其中所述信息是应当被覆写到存储单元的实际数据区域内作为来自应用的写指令的目标的一个或多个簇的信息;并且释放原本要用被写入空区域簇的信息来覆写的簇。
文档编号G06F17/30GK1794205SQ20051006471
公开日2006年6月28日 申请日期2005年4月18日 优先权日2004年12月24日
发明者阿部直树 申请人:富士通株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1