处理装置和写入方法技术领域
本发明涉及写入技术,特别涉及向存储介质写入文件的处理装置
和写入方法。
背景技术
计算机中一般安装有操作系统,各种软件程序基于该操作系统而
动作。在计算机起动时,BIOS(Basic Input Output System)将引导加
载器(boot loader)复制到RAM中并使之起动,引导加载器将存储在
硬盘驱动器(HDD)中的操作系统的镜像文件读入RAM,由此,操作
系统就能动作了。在此,在引导加载器进行操作系统的镜像的读入时,
文件排列表是始终被参照的。但是,由于一般不能高速地执行参照文
件排列表的读入,故会妨碍操作系统的起动时间的缩短(例如参照专
利文献1)。
〔在先技术文献〕
〔专利文献〕
〔专利文献1〕日本特开2004-246787号公报
发明内容
〔发明所要解决的课题〕
固件也可能被存储在HDD中。例如,用调谐器或从网络下载的固
件、或者从可装卸的存储介质复制的固件被暂时保存在HDD中。在此,
随着存储在HDD中的固件被写入到FLASHROM等非易失性存储器
中,固件被更新。用应用程序也能实现固件向HDD的保存、固件向非
易失性存储器的写入。然而,关于向非易失性存储器的写入,若处理
中途发生停电或拔掉电源等,则下次就无法起动应用了,故在也包含
恢复处理的情况下,希望由引导加载器来进行。
另一方面,即使应用程序在文件系统上保存了固件,不支持文件
系统的引导加载器也必须指定块地址(Block Address),直接读出固件。
具体来说,引导加载器解析文件系统信息。在ext2的情况下,文件系
统信息相当于超级块(Super block)、文件描述符(file descriptor)等。
然后,引导加载器一边查找目录项,一边抽取出固件的起始地址,然
后读出必要文件的内容或其一部分。
在CD-ROM等所使用的ISO9660文件系统中,只要能抽取出文
件的起始地址,由于文件内容的块地址是连续的,故只要恰当地划分
读取单位地来读出即可。然而,在ext2的情况下,文件内容的块地址
并不连续,数据之间不定期地包含有i节点。因此,不使用文件系统的
引导加载器针对每1块分别抽出i节点所示的地址,由此读出文件。每
次读取i节点时,会发生寻道访问的溢出,处理会较花费时间。这样的
问题不仅在读出时存在,在写入时也同样存在。
在要使旧版本的固件或者其一部分存储到HDD中的情况下,在按
照文件系统的规则生成的文件被更新时,所生成的文件的块地址每次
都会变。因此,成为读写的对象的块地址不确定,结果就需要在引导
加载器中编入与文件系统相当的处理。其结果,引导加载器的代码量
会増大。这对资源有限的编入设备来说是不希望的。作为其规避策略,
也有不使用文件系统地来运用的方法,但反过来不仅不能从应用程序
读写文件,还不能存储其它文件了。
本发明是鉴于这样的状况而研发的,其目的在于提供一种缩短引
导加载器的文件读写的处理延迟的技术。
〔用于解决课题的手段〕
为解决上述课题,本发明一个方案的处理装置包括:取得部,从
能将文件分割成多个块存储的存储装置取得表示有构成文件的各块的
地址的管理信息;生成部,从在取得部中取得的管理信息中抽出各块
的地址,并将地址连续的块集结成连续区域,由此生成表示有针对各
连续区域的开始地址和尺寸的表;读出部,读出非易失性存储器中所
存储的数据;以及写入部,基于在生成部中生成的表,将数据分割到
从开始地址至尺寸所决定的结束地址的各连续区域,将分割后的数据
以维持管理信息所示的构成文件的各块的地址的方式写入存储装置。
根据该方案,从存储装置生成表示表示有与连续区域对应的开始
地址和尺寸的表,并按照表来向存储装置写入文件,故能缩短写入时
间。
可以是:取得部从将文件分割成多个块地存储的存储装置中再次
取得表示有各块的地址的管理信息;生成部从在取得部中再次取得的
管理信息中抽出各块的地址,并将地址连续的块再次集结成连续区域,
由此再次生成表示有针对各连续区域的开始地址和尺寸的表;读出部
基于在生成部中再次生成的表,按从开始地址起至尺寸所决定的结束
地址的各连续区域,分别读出构成被分割地存储在存储装置中的文件
的各块的数据;写入部将在读出部中读出的各块的数据写入非易失性
存储器中。在该情况下,由于是再次生成表示有与存储装置中所存储
的文件内的连续区域对应的开始地址和尺寸的表,并按照表执行读出
处理,故能缩短更新时间。
写入部可以在将分割后的数据写入存储装置时,更新存储装置中
所存储的文件信息中的属性、文件名、更新日期时间的至少一者。在
该情况下,由于更新属性、文件名、更新日期时间的至少一者,故能
保留更新完成的证据。
本发明的另一方案也是一种处理装置。该装置包括:取得部,从
将第1固件程序分割成多个块地存储的存储装置中取得表示有各块的
地址的管理信息;生成部,从在取得部中取得的管理信息中抽出各块
的地址,并将地址连续的块集结成连续区域,由此生成表示有针对各
连续区域的开始地址和尺寸的表;读出部,基于在生成部中生成的表,
按从开始地址至尺寸所决定的结束地址的各连续区域,读出被分割地
存储在存储装置中的第1固件程序;以及写入部,通过在读出部中读
出的第1固件程序来更新非易失性存储器中所存储的第2固件程序。
通过该方案,由于生成表示有与存储装置中所存储的第1固件程
序内的连续区域对应的开始地址和尺寸的表,并按照表来执行读出处
理,故能缩短更新时间。
读出部在以第1固件程序的一部分为读出对象时,基于在生成部
中生成的表,仅读出与读出对象对应的块。在该情况下,由于是仅读
出连续区域中的与读出对象对应的块,故也能应对以第1固件程序的
一部分为读出对象的情况。
生成部可以通过再次使用已生成的表,来省略表的生成。在该情
况下,由于再次使用已生成的表,故能缩短处理期间。
本发明的另一方案是一种写入方法。该方法包括:从能将文件分
割成多个块存储的存储装置取得表示有构成文件的各块的地址的管理
信息的步骤;从取得的管理信息中抽出各块的地址,并将地址连续的
块集结成连续区域,由此生成表示有针对各连续区域的开始地址和尺
寸的表的步骤;读出被存储在非易失性存储器中的数据的步骤;以及
基于所生成的表,将数据分割到从开始地址至尺寸所决定的结束地址
的各连续区域,将分割后的数据以维持管理信息所示的构成文件的各
块的地址的方式写入存储装置的步骤。
本发明的再一个方案也是一种写入方法。该方法包括:从将第1
固件程序分割成多个块地存储的存储装置中取得表示有各块的地址的
管理信息的步骤;从所取得的管理信息中抽出各块的地址,并将地址
连续的块集结成连续区域,由此生成表示有针对各连续区域的开始地
址和尺寸的表的步骤;基于所生成的表,按从开始地址至尺寸所决定
的结束地址的各连续区域,读出被分割地存储在存储装置中的第1固
件程序的步骤;以及通过所读出的第1固件程序来更新非易失性存储
器中所存储的第2固件程序的步骤。
另外,将以上构成要素的任意组合、本发明的表现形式在方法、
装置、系统、记录介质、计算机程序等之间变换后的方式,作为本发
明的方案也是有效的。
〔发明效果〕
通过本发明,能缩短引导加载器所进行的文件读写的处理延迟。
附图说明
图1是表示本发明实施例1的处理装置的构成的图。
图2是表示图1的HDD中的ext2文件系统的概要的图。
图3是表示图1的HDD中的i节点表和块地址的概要的图。
图4是表示图1的HDD中的块地址上的文件和i节点的关系的图。
图5是表示图1的HDD的构成的图。
图6是表示图1的HDD的读取单位块数和读出时间的关系的图。
图7是表示图1的引导加载器的构成的图。
图8是表示在图7的生成部中生成的连续区域的概要的图。
图9是表示在图7的生成部中生成的表的图。
图10是基于图7的读出部中的始端和终端的开始地址和尺寸的调
整的概念图。
图11是表示图7的引导加载器所进行的写入步骤的流程图。
图12是表示图7的生成部中的表的生成步骤的流程图。
图13是表示图7的生成部中的块地址的抽出步骤的流程图。
图14是表示本发明实施例2的引导加载器所进行的写入步骤的流
程图。
图15是表示本发明实施例3的引导加载器所进行的写入步骤的流
程图。
图16是表示本发明实施例4的引导加载器所进行的写入步骤的流
程图。
图17是表示本发明实施例5的引导加载器所进行的写入步骤的流
程图。
图18是表示续接图17的引导加载器的写入步骤的流程图。
图19是表示本发明实施例6的引导加载器所进行的写入步骤的流
程图。
具体实施方式
(实施例1)
在具体说明本发明前,先叙述其概要。本发明的实施例涉及用于
通过存储在HDD(Hard Disk Drive:硬盘驱动器)中的固件程序来更
新存储在非易失性存储器中的固件程序的引导加载器。在此,作为一
例,假定HDD所使用的文件系统是ext2。在ext2中,固件程序被分割
成多个块地存储。多个块并非一定是连续的。为缩短从HDD读出固件
程序的期间,减少寻道的反复次数、一次读出连续的块是有效的,详
细情况将在后面叙述。
另一方面,引导加载器预先不知道存储在HDD中的固件程序的块
地址,所以必须取得表示块地址的i节点。该i节点被分散地保存在
HDD内,故在一边从i节点取得块地址一边读出固件程序时,难以一
次读出连续的块。因此,难以实现读出速度的高速化。为应对于此,
实施例的引导加载器执行以下处理。
引导加载器在读出固件程序前,从i节点取得块地址,生成关于
连续的块(以下称作“连续区域”)的表。该表中示出了各连续区域
的开始地址和尺寸。引导加载器通过一边参照表一边一次地读出连续
的块,来使得从HDD的固件程序的读取高速化。
图1表示本发明实施例1的处理装置100的构成。处理装置100
包括处理器102、HDD104、易失性存储器106、非易失性存储器108、
装卸式存储器110、调谐器112。此外,处理器102包括CPU(中央处
理装置)114、引导加载器116。处理装置100介由网络118连接于服
务器120。
处理器102由集成电路等实现。处理器102除CPU114、引导加载
器116外,还统合有多种驱动器、专用处理模块。处理器102可与多
种器件及介质进行访问。非易失性存储器108是FLASHROM、EEPROM
等,保存CPU114要处理的程序。另外,非易失性存储器108存储固件
程序。易失性存储器106是由SDRAM等构成的实处理用的存储器。
通过引导加载器116从非易失性存储器108向易失性存储器106读入
程序并使之起动,CPU114就能处理程序了。另外,引导加载器116的
处理可分阶段地来进行,故有时一部分被包含在程序中。
调谐器112是可接收BS/CS/地面波数字信号/地面波模拟信
号等的模块,根据处理器102的控制而输出接收数据。HDD104保存各
种程序及调谐器112所接收的数据等。在此,HDD104存储比非易失性
存储器108中所存储的固件程序版本新的固件程序。处理器102中包
含有装卸式存储器110的驱动器,能对装卸式存储器110读写数据。
此外,处理器102具有通信用的驱动器,介由因特网、内部网等网络
118与远程的服务器120进行通信。
非易失性存储器108中一般在出厂时被写入有固件程序等程序。
为修正程序的内容或提高性能,在出厂后,在用户的使用环境下进行
程序的更新。作为程序更新的一例,有通过利用了卫星广播的广播(on
air)下载所进行的更新。在该情况下,同节目表等一样,通过调谐器
112下载程序的更新数据,在保存数据后进行程序更新。作为同样地从
远程下载的方法,也可以经由网络118从远程的服务器120下载程序
的更新数据,在保存数据后进行程序更新。此外,作为其它方法,还
可以复制被存储在装卸式存储器110中的数据,在保存数据后进行程
序更新。
在本实施例中,作为程序更新,以固件程序的更新为对象。固件
程序的更新中的处理被分类为用于取得并保存更新数据的处理(以下
称为“保存处理”)、以及读出所保存的更新数据并写入到非易失性
存储器108中的处理(以下称作“写入处理”)。如前所述,更新数
据被保存在HDD104中。保存处理是广播(on air)下载或经由网络118
的下载等在应用程序动作过程中所进行的,所以保存处理本身也由应
用程序来进行。从装卸式存储器110的数据复制若也是在应用程序的
动作过程中,则只是复制文件就可以了,故适合由应用程序进行保存
处理。
另一方面,写入处理也能用应用程序来实现,但应用程序被包含
在更新数据中。因此,若在写入过程中发生停电、被用户拔掉电源,
则下次有可能无法正常起动OS(Operating System:操作系统)或应用
程序。结果,无法进行写入的再试行,不能再次恢复了。因此,读出
所保存的更新数据并写入到非易失性存储器108中的处理优选通过不
依赖于OS和应用的引导加载器116来进行。此外,在引导加载器116
进行写入处理的情况下,在与作为前处理的取得并保存更新数据的处
理之间伴随有重启处理,故数据的保存场所需要具有非易失性且能保
存更新用的软件程序的容量。因此,HDD104适于作为更新用的软件程
序的保存场所。
图2表示HDD 104中的ext2文件系统的概要。在OS采用Linux
的情况下,作为块文件系统,多使用ext2。ext2是基于Fast File System
(快速文件系统)而开发的,以在UNIX(注册商标)中传统使用的“块
管理算法”为基础。在ext2中,按1024、2048、4096bytes的任一种构
成块单位,多个块被汇总为“块组”进行管理。在图2中,表示了块
组的构造。图2的左侧表示形成在图1的HDD 104内的分区,图2的
中央表示ext2分区的布局。图2的右侧进一步详细地表示块组内的布
局。在此,所谓超级块,是关于文件系统的管理信息,所谓组描述符,
是组内的信息,所谓数据块位图,是数据块的信息。此外,i节点表保
存i节点,该i节点保持关于文件/目录的信息,数据块保持实际的数
据。
图1的引导加载器116在用超级块及组描述符的信息得到文件系
统的信息后,在目录项内进行查找,得到与目的文件对应的i节点表的
信息。通过基于i节点表求得数据块的存储器地址,就能进行实际的文
件内数据的读取了。数据块的尺寸是与其它块相同的1024、2048、
4096bytes的任一种值。数据块的尺寸为2048byte、文件尺寸为
200Kbytes的文件的参照需要100个数据块。但若针对100个数据块保
持100个地址,则信息量会増大,因而在ext2中为高效地使用地址范
围而生成间接块,能通过间接指针来参照。
图3表示HDD104中的i节点表和块地址的概要。i节点所具有的
数据块参照用的排列是15个,在ext2中,将其中12个用于“直接参
照”、将其余三个分别用于“一次间接参照”、“二次间接参照”、
“三次间接参照”。由此,ext2高效地操作需要多个数据块的容量较
大的文件。在各个参照方法中,可表达的文件尺寸在计算上如下这样。
直接参照的计算式是“块尺寸×12个”。块尺寸为1024bytes、2048bytes、
4096bytes时,各文件尺寸分别为12Kbytes、24Kbytes、48Kbytes。
在一次间接参照中,作为间接参照用,能使用“块尺寸÷4”个量。
这相当于块指针的大小“byte”。因此,若换算为文件尺寸,则成为“块
尺寸÷4*块尺寸”,块尺寸为1024bytes、2048bytes、4096bytes时,
各文件尺寸分别为256Kbytes、1Mbytes、4Mbytes。在二次间接参照中,
若换算为文件尺寸,则为“((块尺寸÷4)2)×块尺寸”。因此,在
块尺寸为1024bytes、2048bytes、4096bytes时,各文件尺寸分别为
64Mbytes、512Mbytes、4Gbytes。应写入到图1的非易失性存储器108
中的更新用程序的文件尺寸为数十~数百Mbytes时,优选使用二次间
接参照。
图4表示HDD 104中的块地址上的文件与i节点的关系。i节点本
身在HDD104中未被保存于汇总的区域,而是形成在数据块内的。因
此,在使用间接参照时,原文件的数据会没有连续性。这是因为,内
核为在读入i节点和与其对应的数据块时减少盘头(disk head)的寻道
而想要将i节点分配到与数据块相同的组内。地址表达为4bytes时,能
保存在1块中的地址数为“块尺寸÷4”。即,在计算上,若不每“块
尺寸÷4”一次地向数据中加入i节点,则无法表达出所有地址。例如
在2048bytes的情况下,若不每512bytes一次地嵌入i节点,则无法表
达全部地址。此外,实际上并非一定是512bytes,而是不定期地按更少
的间隔插入i节点的。进而,由于文件的位置和其中所含的i节点的位
置是在每次文件生成时被更新的,故难以确定。即,图1的引导加载
器116即使抽出了文件的起始数据所在的块地址,也不能连续地读出
块,必须针对每1块分别一边进行参照、一边读出数据的块地址。
图5表示HDD 104的构成。在同心圆状地生成的磁道150中,作
为读写数据的单位,形成有扇区152这样的区域。用摇臂(swing arm)
144使磁头146在磁盘140上移动,来进行对数据的访问。将该操作称
作寻道,将其所需时间称作寻道时间。若是在相同磁柱148内则没有
寻道时间,故仅成为旋转等待时间,但在伴随有寻道时,必须考虑寻
道时间。一般,HDD104的数据读出时间按“(平均寻道时间+平均旋
转等待时间+数据传输时间)×(寻道的反复次数)”来计算。在此,
成立数据传输时间<<(平均寻道时间+平均旋转等待时间)的关系。
因此,“寻道的反复次数”越少,整体的数据读出时间就越短。另外,
在读取超出一个磁道150的尺寸的文件时,若能一次读出连续的地址,
则不用长期寻道(long seek),用1磁道跳跃就能访问,故数据读出时
间变短。
图6表示HDD104的读取单位块数与读出时间的关系。这是一边
改变访问单位一边计测128Mbytes的数据的读出时间而得到的结果。
针对1块单位的读取,随着读取单位块数增加,读取时间大大减少,
并在128Mbytes附近达到饱和。
图7表示引导加载器116的构成。引导加载器116包括取得部130、
生成部132、读出部134、分割部136、写入部138。取得部130对图1
的HDD104中的构成于ext2文件系统上的超级块进行解析,取得块尺
寸等必要的信息。取得部130解析组描述符,取得i节点表ID等必要
的信息。取得部130查找目录项,取得升级文件的i节点信息。
生成部132从将更新用的固件程序分割成多个块而存储的
HDD104中取得表示了各块的地址的管理信息。生成部132使用所取得
的管理信息、即i节点表的信息和间接参照,抽出与文件内的各块对应
的块地址。生成部132将块地址连续的块集结成连续区域。图8表示
在生成部132中生成的连续区域的概要。在此,补充表示块地址、连
续区域的开始地址及尺寸的表的关系。图8是将文件内的所有块表达
为排列,并示出与各自的块地址的对应的图。作为直接参照的Block[0]
至Block[11]的块地址也是连续的,但从Block[12]起,块地址错
开了1。这是因为为了在i节点的间接参照中使用,而空出了
0x00001C0C。回到图7。
此外,生成部132生成表示了针对各连续区域的开始地址和尺寸
的表。表可以作为排列而构成在图1的易失性存储器106上,也可以
保存在HDD104或非易失性存储器108中。图9表示在生成部132中
生成的表。最初的连续区域是图8的Block[0]至Block[11]的范围,
对应的开始地址和尺寸是表示于图9的最初的行中的值。第2连续区
域之后也是一样,结果,生成图9那样的表。图9的表的尺寸比图8
的表的尺寸小得多。例如固件程序的文件尺寸为数十~数百Mbytes,
块尺寸为2048bytes时,能用二级间接参照来实现,按照大概的计算,
成为1/(2048/4)=1/512的表尺寸。因此,与保持图8的表时相
比,用于保持表的资源被大幅削减。回到图7。
读出部134基于在生成部132中生成的表,从开始地址起按尺寸
所长及的各连续区域,分别读出分割存储在HDD104中的更新用的固
件程序。即,读出部134一并读出连续区域中所包含的多个块。读出
部134将所读出的固件程序暂时存储在易失性存储器106中。此时,
在要划分出更新用的固件程序内的一部分的情况下,所要划分出的一
部分的始端和终端未必成为连续区域的边界。此时,读出部134预先
检测出始端和终端被包含在哪个连续区域中,并调整开始地址和尺寸。
例如连续区域中途的块为始端时,开始地址被向后方偏移到与始
端对应的块。另外,对于终端也是一样。即,读出部134在以更新用
的固件程序的一部分为读出对象时,基于在生成部132中生成的表,
仅读出与读出对象对应的块。写入部138从易失性存储器106读出更
新用的固件程序,写入到非易失性存储器108中。即,写入部138通
过在读出部134中读出的更新用的固件程序,来更新非易失性存储器
108中所存储的这之前的固件程序。此外,分割部136在实施例1中不
进行动作。
在针对文件内的一部分数据进行读写时,图9的表中的连续区域
的边界未必是始端和终端。因此在开始读写前,通过预先检测出始端
和终端被包含在哪个连续区域中,并调整各个开始地址和尺寸来应对。
图10是读出部134中基于始端和终端来调整开始地址和尺寸的概念
图。为进行始端和终端的开始地址和尺寸的调整,首先如图10的右侧
所示那样按顺序将连续区域连接起来,生成虚拟的地址(实际上其间
会插入i-node,故与真实地址不同)。在该过程中,检测表示读出对
象数据的(文件起始基准中的)起始位置的start和表示终端位置的end
是否存在于各连续区域的虚拟地址内。如图所示,用实线围起start和
end的区域是想要读出的数据。此时的start位置被包含在Ext[3]中,
故针对Ext[3],使开始地址向后偏移,并减小尺寸,由此能够进行
校正。同样,关于end位置,由于其被包含在Ext[112]中,故针对
Ext[112]能通过减小尺寸来进行校正。
该构成在硬件方面能用任意计算机的CPU、存储器、其它LSI实
现,软件方面由被载入存储器的程序等实现,但在此描绘了由它们协
作实现的功能块。因此,本领域技术人员当理解这些功能块能够仅由
硬件、仅由软件、或者由它们的组合以各种各样的形式实现。
下面说明基于以上结构的引导加载器116的动作。图11是表示引
导加载器116的写入步骤的流程图。取得部130进行构成在ext2文件
系统上的超级块的解析(S10),取得块尺寸等必要的信息。取得部130
进行组描述符的解析(S12),取得i节点表ID等必要的信息。取得部
130查找目录项,取得升级文件的i节点信息(S14)。
生成部132利用i节点表的信息和间接参照,抽出与文件内的各
块对应的块地址,生成表示连续区域的开始地址和尺寸的表(S16)。
读出部134按照各连续区域分别从HDD104读出更新用固件,并暂时
保存在易失性存储器106中(S18)。写入部138从易失性存储器106
读出更新用固件,写入到非易失性存储器108中(S20)。
图12是表示生成部132中的表的生成步骤的流程图。生成部132
抽出位于文件的起始处的起始块地址(S40)。生成部132在连续区域
的开始地址处插入所抽出的起始块地址的值(S42)。生成部132对参
数(连续区域编号、连续区域尺寸、块数计数值)进行初始化(S44)。
如果块数计数值m没有超过块尺寸(S46的Y),则生成部132抽出
块地址(S48)。
生成部132确认块地址是否与前一数据的块地址相连续,若连续
(S50的Y),则仅使尺寸增量(S54)。若不连续(S50的N),则
生成部132使连续区域编号增量,并用当前对象的块地址更新开始地
址,将尺寸初始化(1)(S52)。生成部132使块数计数值增量(S56)
后返回步骤46。若块数计数值m超过块尺寸(S46的N),则处理结
束。
图13是表示生成部132中的块地址的抽取步骤的流程图。这相当
于图12的步骤40、步骤48中的块地址的抽取。根据图11的步骤14
所得到的i节点信息,能从图3所示的i节点表中抽出对象i节点,但
为使说明明了,将剔除出其中的参照信息后的结果记作i_node[i],
0<i<15(S70)。若i<12(S72的Y),则生成部132进行直接参照,
抽出块地址(S74)。若不是i<12(S72的N),而是i=12(S76的
Y),则生成部132进行一次间接参照抽出块地址(S78)。若不是i
=12(S76的N),而是i=13(S80的Y),则生成部132进行二次
间接参照抽出块地址(S82)。若不是i=13(S80的N),而是i=14,
则生成部132进行三次间接参照抽出块地址(S84)。
根据本发明的实施例,生成表示有与HDD中所保存的更新用的固
件程序内的连续区域对应的开始地址和尺寸的表,并按照表来执行读
取处理,故能缩短固件程序的更新时间。此外,由于生成表,故在不
支持文件系统的引导加载器更新被保存在非易失性存储器中的固件程
序的情况下,也能缩短更新时间。另外,由于从HDD读出的尺寸接近
“块尺寸÷4”,故能高速地进行读取。此外,即使在文件系统上进行
了文件的再排列等,由于是灵活的追踪,故也能降低对性能的影响。
此外,由于连续区域的表的信息量比关于块地址的表的信息量小,故
能提高处理的效率。
(实施例2)
本发明的实施例2同实施例1一样,涉及一种用于写入固件程序
的引导加载器。另一方面,实施例2不同于实施例1,相当于将被存储
在非易失性存储器中的固件程序暂时保存在HDD中的情况。这里,向
HDD的暂时保存是以固件程序的备份为目的而进行的。即,在实施例
2和实施例1中,应读出固件程序的存储介质和应写入固件程序的存储
介质正相反。实施例2的处理装置100是与图1同样的类型,实施例2
的引导加载器116是与图7同样的类型。在此,以与实施例1的差异
为中心进行说明。
在HDD104中,在文件系统上由应用程序等保存有备份用的固件
程序或与应备份的固件程序同尺寸的文件。取得部130针对图1的
HDD104解析超级块和组描述符。此外,取得部130查找目录项,取得
已存储在HDD104中的文件的i节点信息。
生成部132从能将备份用的固件等文件分割成多个块来存储的
HDD104取得表示有各块的地址的管理信息。生成部132利用i节点表
的信息和间接参照,抽出与文件内的各块对应的块地址。生成部132
将块地址连续的块集结成连续区域。生成部132生成表示有针对各连
续区域的开始地址和尺寸的表。读出部134读出非易失性存储器108
中所存储的固件程序,暂时保存在易失性存储器106中。所读出的固
件程序是接下来要备份的固件程序。
分割部136将存储在易失性存储器106中的固件程序分割。另外,
分割部136将分割了的多个块集结,以使得适合于在生成部132中集
结的连续区域。通过这样的处理,固件程序被与在生成部132中生成
的各连续区域对应地分割成多部分。写入部138基于在生成部132中
生成的表,按照从开始地址起长及尺寸的各连续区域,分别将在分割
部136中分割的固件程序写入HDD104中。即,不使连续区域的地址
变更地将被分割成多部分的固件程序写入HDD104中。其结果,i节点
表那样的管理信息所示的块地址也不被改变。向HDD104写入固件程
序,相当于对固件程序进行备份。
图14是表示本发明实施例2的引导加载器116所进行的写入步骤
的流程图。取得部130对构成在ext2文件系统上的超级块进行解析
(S100),取得块尺寸等必要的信息。取得部130进行组描述符的解
析(S102),取得i节点表ID等必要的信息。取得部130查找目录项,
取得备份用文件的i节点信息(S104)。
生成部132利用i节点表的信息和间接参照,抽出与文件内的各
块对应的块地址,生成表示连续区域的开始地址和尺寸的表(S106)。
读出部134从非易失性存储器108向易失性存储器106读出固件
(S108)。写入部138从易失性存储器106读出备份用固件,按各连
续区域写入成在HDD104中的备份文件(S110)。
通过本发明的实施例,针对预先由应用程序等生成的同尺寸的文
件,生成表示有与连续区域对应的开始地址和尺寸的表,并按照表来
执行写入处理,故能缩短备份时间。此外,由于是按照表来执行写入
处理,故在HDD内存储备份用数据时也能高速地进行写入处理。另外,
由于是按照表来执行写入处理,故能与使用了文件系统的应用程序的
处理共存。此外,虽然不支持文件系统的引导加载器写入文件较困难,
但由于是利用预先排列的同尺寸的文件的块地址进行写入,故能实现
与文件系统上的应用程序的处理的共存。
在上述说明中,说明了分割部136和写入部138相分离的情况,
但在实际的处理中,当然也可以通过在易失性存储器106和HDD 104
之间进行数据传输(复制)的API(Application Program Interface:应
用程序接口)实现,或者准备函数,通过使指定的地址偏移来实现。
(实施例3)
本发明的实施例3相当于接着实施例2的动作而执行实施例1的
动作的情况。即,实施例3相当于利用由实施例2的动作存储在HDD
中的备份文件,更新非易失性存储器的固件程序的情况。这样的固件
程序的更新也可以说是固件程序的刷新(recovery)。实施例3的处理
装置100是与图1同样的类型,实施例3的引导加载器116是与图7
同样的类型。在此,以与之前实施例的差异为中心进行说明。
备份用的固件程序在文件系统上通过实施例2中的处理而被保存
在HDD104中。取得部130解析构成在图1的HDD104中的ext2文件
系统上的超级块和组描述符。取得部130查找目录项,再次取得备份
用文件的i节点信息。即,取得部130从将备份用的固件程序分割成多
个块而存储的HDD 104再次取得表示有各块的地址的管理信息。
生成部132利用在取得部130中取得的管理信息、即i节点表的
信息和间接参照,抽出与备份用的固件程序内的各块对应的块地址。
生成部132将块地址连续的块集结成连续区域。生成部132再次生成
表示有针对各连续区域的开始地址和尺寸的表。读出部134基于在生
成部132中再次生成的表,按从开始地址起长及尺寸的各连续区域,
读出被分割地存储在HDD 104中的备份用的固件程序。读出部134将
所读出的固件程序暂时存储在易失性存储器106中。
写入部138从易失性存储器106读出备份用的固件程序,写入到
非易失性存储器108中。即,写入部138通过在读出部134中读出的
备份用的固件程序,来刷新被存储在非易失性存储器108中的这之前
的固件程序。此外,分割部136在实施例3中不进行动作。
图15是表示本发明实施例3的引导加载器116所进行的写入步骤
的流程图。取得部130对构成在ext2文件系统上的超级块进行解析
(S130),取得块尺寸等必要的信息。取得部130进行组描述符的解
析(S 132),取得i节点表ID等必要的信息。取得部130查找目录项,
取得升级文件的i节点信息(S134)。
生成部132利用i节点表的信息和间接参照,抽出与文件内的各
块对应的块地址,生成表示连续区域的开始地址和尺寸的表(S136)。
读出部134按照各连续区域从HDD104读出备份用固件,暂时保存到
易失性存储器106中(S138)。写入部138从易失性存储器106读出
备份用固件,写入到非易失性存储器108中(S140)。
通过本发明的实施例,生成表示有与HDD中所保存的更新用的固
件程序内的连续区域对应的开始地址和尺寸的表,并按照表来执行读
出处理,故能缩短固件程序的刷新时间。此外,由于生成了表,故即
使是不支持文件系统的引导加载器来更新被保存在非易失性存储器中
的固件程序时,也能缩短刷新时间。
(实施例4)
本发明的实施例4同实施例2一样,相当于将非易失性存储器中
所存储的固件程序暂时保存到HDD中的情况。在实施例4中,在将固
件程序保存到HDD时,文件信息也被更新。实施例4的处理装置100
是与图1同样的类型,实施例4的引导加载器116是与图7同样的类
型。在此,以与之前实施例的差异为中心进行说明。
写入部138同实施例2一样,基于在生成部132中生成的表,按
从开始地址起长及尺寸的各连续区域,将在分割部136中分割后的固
件程序写入到HDD104中。此时,写入部138对关于应写入HDD104
的固件程序的文件信息中的属性、文件名、更新日期时间的至少一者
进行更新。
图16是表示本发明实施例4的引导加载器116所进行的写入步骤
的流程图。图16的步骤160至步骤170与图14的步骤100至步骤110
相同。写入部138将文件信息中的属性、文件名、更新日期时间的至
少一者更新(S172)。
通过本发明的实施例,将文件信息中的属性、文件名、更新日期
时间的至少一者更新,故能够留下更新完成的证据。此外,由于通过
更新文件信息中的属性、文件名、更新日期时间的至少一者来更新文
件系统上的数据,故从应用程序也能确认更新。
(实施例5)
本发明的实施例5相当于将在实施例2中使用的表和在实施例3
中使用的表共通化的情况。即,实施例5在将存储在非易失性存储器
中的固件程序作为备份文件暂时保存到HDD中的情况、和通过使用暂
时保存在HDD中的备份文件来更新存储在非易失性存储器中的固件程
序的情况下,使表共通化。通过这样的处理,能削减用于生成表的时
间。实施例5的处理装置100是与图1同样的类型,实施例5的引导
加载器116是与图7同样的类型。在此,以与之前实施例的差异为中
心进行说明。
同实施例2一样,在使非易失性存储器108中所存储的固件程序
存储到HDD104中时,取得部130确认HDD104或非易失性存储器108
中是否保存有已生成的表。如果未保存有表,则取得部130和生成部
132通过执行与实施例2同样的处理来生成表。另一方面,若保存有表,
则取得部130和生成部132省略实施例2中的处理,读出部134读出
非易失性存储器108中所存储的固件程序,暂时保存到易失性存储器
106中。
同实施例3一样,在使HDD104中所存储的备份用的固件程序存
储到非易失性存储器108中时,取得部130也确认HDD104或非易失
性存储器108中是否保存有已生成的表。在此,表只要在过去使非易
失性存储器108中所存储的固件程序存储于HDD104时、或者使
HDD104中所存储的固件程序存储到非易失性存储器108中时已被生
成即可。若未保存有表,则取得部130和生成部132通过执行与实施
例3同样的处理来生成表。另一方面,若保存有表,则取得部130和
生成部132省略实施例3中的处理,读出部134基于所保存的表,按
从开始地址起长及尺寸的各连续区域,读出被分割地存储在HDD104
中的备份用的固件程序。这样,生成部132通过再次使用已生成的表,
来省略表的生成处理。
图17是表示本发明实施例5的引导加载器116所进行的写入步骤
的流程图。如果有已存在的表(S190的Y),则读出部134读出表(S192)。
如果没有已存在的表(S190的N),则取得部130解析超级块(S194)。
步骤194至步骤206与图14的步骤100至步骤110相同。
图18是表示接着图17的引导加载器116的写入步骤的流程图。
如果有已存在的表(S220的Y),则读出部134读出表(S222)。如
果没有已存在的表(S220的N),则取得部130解析超级块(S224)。
步骤224至步骤236与图15的步骤130至步骤140相同。
根据本发明的实施例,通过使表共通化,能缩短备份数据的更新
处理时间,并能缩短使用备份数据的刷新的处理时间。此外,由于是
读出已存在的表,故能削减用于生成表的时间。此外,由于是读出已
存在的表,故能降低处理量。
(实施例6)
本发明的实施例6相当于已在实施例1中生成了表的情况下,不
新生成表,而是利用已生成的表的情况。实施例6的处理装置100是
与图1同样的类型,实施例6的引导加载器116是与图7同样的类型。
在此,以与之前实施例的差异为中心进行说明。
同实施例1一样,在使HDD104中所存储的更新用的固件程序存
储到非易失性存储器108中时,取得部130确认HDD104或非易失性
存储器108中是否保存有已生成的表。如果未保存有表,则取得部130
和生成部132通过执行与实施例1同样的处理来生成表。另一方面,
如果保存有表,则取得部130和生成部132省略实施例1中的处理,
读出部134基于所保存的表,按从开始地址起长及尺寸的各连续区域,
读出被分割地存储在HDD104中的更新用的固件程序。此外,也可以
使得即使保存有表,取得部130也确认表的生成日期时间,若是在预
定期间前生成的表,则取得部130和生成部132执行与实施例1同样
的处理。即,仅在表比预定期间新时利用该表即可。
图19是表示本发明实施例6的引导加载器116所进行的写入步骤
的流程图。如果有已存在的表(S250的Y),则读出部134读出表(S252)。
如果没有已存在的表(S250的N),则取得部130解析超级块(S254)。
步骤254至步骤266与图11的步骤10至步骤20相同。
根据本发明的实施例,由于是读出已存在的表,故能削减用于生
成表的时间。此外,由于用于生成表的时间被削减,故能缩短固件程
序的更新时间。此外,在想要使用相同的更新用的固件程序再次试行
处理的情况下、或在生产时预先进行写入那样的情况下,能缩短处理
期间。
以上基于实施例说明了本发明。本领域技术人员当理解该实施例
仅是例示,其各构成要素和各处理过程的组合可以有各种各样的变形
例,并且这样的变形例也包含在本发明的范围内。
实施例1至7的任意组合也是有效的。通过本变形例,能得到基
于实施例1至7的任意组合的效果。
在实施例1至7中,引导加载器116是以固件程序为处理对象的。
但不限于此,例如引导加载器116也可以以固件程序以外的文件作为
处理对象。通过本变形例,能在各种各样种类的文件的读出处理及写
入处理中适用本发明。
在实施例1至7中,作为HDD104中的文件系统,是以ext2文件
系统为说明对象的。但不限于此,例如作为HDD104中的文件系统,
也可以使用ext2以外的文件系统ext3。通过本变形例,能对各种各样
种类的文件系统适用本发明。
〔标号说明〕
100处理装置、102处理器、104HDD、106易失性存储器、108
非易失性存储器、110装卸式存储器、112调谐器、114CPU、116引导
加载器、118网络、120服务器、130取得部、132生成部、134读出部、
136分割部、138写入部。
〔工业可利用性〕
通过本发明,能缩短引导加载器所进行的文件读写的处理延迟。