发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的计算机系统开机文件的整理方法和装置。
依据本发明的一个方面,本发明实施例提供了一种计算机系统开机文件的整理方法,包括:
获取计算机开机过程中从系统磁盘上读取系统开机文件的读取顺序;
获取系统开机文件的分布信息,该分布信息包括系统开机文件的文件名称、文件路径和指示文件在系统磁盘中位置的信息;
利用系统开机文件的分布信息查找到系统磁盘上的系统开机文件;
移动系统开机文件在系统磁盘上的位置,将系统开机文件按照读取顺序连续排列在系统磁盘上。
其中,在获取开机文件的分布信息之前,上述方法还包括:
获取系统磁盘的描述信息,该描述信息包括系统磁盘的已使用空间相对于空闲空间的比例值;
上述方法还包括:当比例值小于容忍阈值时,确定当前状态为禁止启动文件整理操作,不对系统磁盘上的系统开机文件进行整理,结束操作。
其中,上述指示文件在系统磁盘中位置的信息为文件在系统磁盘中占用的簇的编号,上述利用系统开机文件的分布信息查找到系统磁盘上的系统开机文件包括:
利用系统开机文件的分布信息中的文件名称和文件路径确定当前需要查找的系统开机文件;
利用系统开机文件的分布信息中的文件在系统磁盘中占用的簇的编号,在系统磁盘中查找到当前需要查找的系统开机文件。
其中,系统开机文件的分布信息中还包括文件大小,上述移动系统开机文件在系统磁盘上的位置,将系统开机文件按照读取顺序连续排列在系统磁盘上包括:
将系统磁盘上可使用的首个扇区选取为排列目标位置;
按照读取顺序确定当前处理的系统开机文件,并判断从排列目标位置开始是否存在满足当前处理的系统开机文件的文件大小的连续扇区,若存在,将当前处理的系统开机文件移动到从排列目标位置开始的连续扇区,若不存在,移动系统磁盘上排列目标位置之后的一个或多个文件至不相关区域,直至从排列目标位置开始存在满足当前处理的系统开机文件的文件大小的连续扇区,并将当前处理的系统开机文件移动到从排列目标位置开始的连续扇区;
更新排列目标位置为系统磁盘上当前处理的系统开机文件移动后占用的扇区之后的下一个扇区,以及,按照读取顺序确定下一个处理的系统开机文件;
根据更新后的排列目标位置,移动下一个需要处理的系统开机文件;
其中,不相关区域为系统磁盘上从排列目标位置加上当前处理的系统开机文件的文件大小对应的扇区之后的空闲扇区区域。
其中,若当前处理的系统开机文件由二个以上的文件碎片构成,上述方法还包括:
获取系统开机文件的文件描述信息,该文件描述信息包括指示文件碎片排列顺序的信息;
上述将当前处理的系统开机文件移动到从排列目标位置开始的连续扇区包括:
将当前处理的系统开机文件的文件碎片按照文件碎片排列顺序依次移动到从排列目标位置开始的连续扇区。
其中,获取到的系统开机文件的分布信息中还包括系统开机文件的状态,当系统开机文件的状态为锁定时,不允许移动系统开机文件在系统磁盘中的位置;
上述将当前处理的系统开机文件移动到从排列目标位置开始的连续扇区包括:若当前处理的系统开机文件的状态为锁定时,不对当前处理的系统开机文件进行移动;
上述移动系统磁盘上排列目标位置之后的一个或多个文件至不相关区域包括:
当排列目标位置之后的需要移动的系统开机文件的状态为锁定时,不对该锁定状态的系统开机文件进行移动,将排列目标位置更新为该锁定状态的系统开机文件占用的扇区之后的下一个扇区。
其中,上述获取计算机开机过程中从系统磁盘上读取系统开机文件的读取顺序包括:
将计算机开机过程中执行预引导、引导、载入内核、初始化内核至系统登录操作时从系统磁盘上读取的文件作为系统开机文件,记录读取该系统开机文件的顺序作为获取到的读取顺序。
根据本发明的另一方面,本发明实施例提供了一种计算机系统开机文件的整理装置,包括:
读取顺序获取单元,适于获取计算机开机过程中从系统磁盘上读取系统开机文件的读取顺序;
信息获取单元,适于获取系统开机文件的分布信息,该分布信息包括系统开机文件的文件名称、文件路径和指示文件在系统磁盘中位置的信息;
文件查找单元,适于利用系统开机文件的分布信息查找到系统磁盘上的系统开机文件;
文件移动单元,适于移动系统开机文件在系统磁盘上的位置,将系统开机文件按照读取顺序连续排列在系统磁盘上。
其中,信息获取单元,还适于在获取系统磁盘上开机文件的分布信息之前,获取系统磁盘的描述信息,该描述信息包括系统磁盘的已使用空间相对于空闲空间的比例值;
上述装置还包括:启动控制单元,适于当比例值小于容忍阈值时,确定当前状态为禁止启动文件整理操作,不对系统磁盘上的系统开机文件进行整理,结束操作。
其中,上述指示文件在系统磁盘中位置的信息为文件在系统磁盘中占用的簇的编号,
文件查找单元,具体适于利用系统开机文件的分布信息中的文件名称和文件路径确定当前需要查找的系统开机文件;利用系统开机文件的分布信息中的文件在系统磁盘中占用的簇的编号,在系统磁盘中查找到当前需要查找的系统开机文件。
其中,系统开机文件的分布信息中还包括文件大小,文件移动单元包括:
目标位置选取模块,适于将系统磁盘上可使用的首个扇区选取为排列目标位置;
移动模块,适于按照读取顺序确定当前处理的系统开机文件,并判断从排列目标位置开始是否存在满足当前处理的系统开机文件的文件大小的连续扇区,若存在,将当前处理的系统开机文件移动到从排列目标位置开始的连续扇区,若不存在,移动系统磁盘上排列目标位置之后的一个或多个文件至不相关区域,直至从排列目标位置开始存在满足当前处理的系统开机文件的文件大小的连续扇区,并将当前处理的系统开机文件移动到从排列目标位置开始的连续扇区;
更新模块,适于更新排列目标位置为系统磁盘上当前处理的系统开机文件移动后占用的扇区之后的下一个扇区,以及,按照读取顺序确定下一个处理的系统开机文件;
循环控制模块,适于根据更新后的排列目标位置,调用移动模块移动下一个需要处理的系统开机文件;
其中,不相关区域为系统磁盘上从排列目标位置加上当前处理的系统开机文件的文件大小对应的扇区之后的空闲扇区区域。
其中,若当前处理的系统开机文件由二个以上的文件碎片构成,信息获取单元,还适于获取系统开机文件的文件描述信息,该文件描述信息包括指示文件碎片排列顺序的信息;
移动模块,具体适于将当前处理的系统开机文件的文件碎片按照文件碎片排列顺序依次移动到从排列目标位置开始的连续扇区。
其中,信息获取单元获取到的系统开机文件的分布信息中还包括系统开机文件的状态,当系统开机文件的状态为锁定时,不允许移动系统开机文件在系统磁盘中的位置;
移动模块,具体适于若当前处理的系统开机文件的状态为锁定时,不对当前处理的系统开机文件进行移动;以及,
移动模块,具体适于当排列目标位置之后的需要移动的系统开机文件的状态为锁定时,不对该锁定状态的系统开机文件进行移动,并启动更新模块,
更新模块,具体适于将排列目标位置更新为该锁定状态的系统开机文件占用的扇区之后的下一个扇区。
其中,读取顺序获取单元,具体适于将计算机开机过程中执行预引导、引导、载入内核、初始化内核至系统登录操作时从系统磁盘上读取的文件作为系统开机文件,记录读取该系统开机文件的顺序作为获取到的读取顺序。
由上所述,本发明实施例通过获取开机过程中系统开机文件的读取顺序以及系统开机文件的分布信息,将系统开机文件按照读取顺序连续排列在系统磁盘上,则系统开机时,磁盘触头只需在磁道中顺序移动即可读取到开机的各个阶段中需要的系统开机文件,解决了磁盘触头在磁道中频繁切换来回往复移动造成的文件读取时间过长的问题,能够显著提高计算机的开机速度,更加有效地实现计算机开机加速的目的。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明一个实施例提供了一种计算机系统开机文件的整理方法,参见图1,包括:
S100:获取计算机开机过程中从系统磁盘上读取系统开机文件的读取顺序;
S102:获取系统开机文件的分布信息,该分布信息包括系统开机文件的文件名称、文件路径和指示文件在系统磁盘中位置的信息,本步骤中可以从磁盘所对应的文件系统中获取到上述分布信息。
S104:利用系统开机文件的分布信息查找到系统磁盘上的系统开机文件;
S106:移动系统开机文件在系统磁盘上的位置,将系统开机文件按照读取顺序连续排列在系统磁盘上。本实施例在修改系统开机文件在存储空间中的位置时,采用了移动文件的方式,例如,通过调用NTFS文件系统提供文件控制应用接口NtFsControlFile API,移动文件到指定的位置。由于系统开机文件是系统运行所需的基础文件,若采用文件删除再写入的方式,删除文件可以导致系统运行故障,或影响系统中其他应用的正常运行,为避免出现这种问题,本实施例采用移动文件的方式,保证了在对系统开机文件进行整理的同时,系统运行的稳定性。
本实施例中不对步骤S100和S102的具体执行时序进行限定,只需在移动磁盘文件的操作执行之前(在执行步骤S104之前)获取到系统开机文件的读取顺序和分布信息即可。
由上所述,本发明实施例通过获取开机过程中系统开机文件的读取顺序以及系统开机文件的分布信息,将系统开机文件按照读取顺序连续排列在系统磁盘上,则系统开机时,磁盘触头只需在磁道中顺序移动即可读取到开机的各个阶段中需要的系统开机文件,系统开机启动的时候加载的是按照读取顺序连续排列在系统磁盘上的系统开机文件,解决了磁盘触头在磁道中频繁切换来回往复移动造成的文件读取时间过长的问题,能够显著提高计算机的开机速度,更加有效地实现计算机开机加速的目的。
本发明实施例中能够应用于NTFS文件系统中,则系统开机文件为NTFS系统下计算机开机时需要读取的文件。NTFS文件系统为Microsoft的Windows系列操作系统提供文件系统。NTFS对传统的文件分配表(FileAllocation Table,FAT)系统和高性能文件系统(High-Performance FileSystem,HPFS)作了若干改进,例如,支持元数据,并且使用了高级数据结构,以便于改善性能、可靠性和磁盘空间利用率,并提供了若干附加扩展功能,如访问控制列表和文件系统日志。NTFS的特点包括支持2TB大小的分区、可恢复的文件系统、支持文件夹压缩以及有效管理磁盘空间等等。
在图1示出的实施例的基础上,本实施例在执行步骤S102之前,还包括:获取系统磁盘的描述信息,该描述信息包括系统磁盘的已使用空间相对于空闲空间的比例值。以NTFS文件系统为例,该描述信息中可以包括分区的大小、使用空间和空闲空间的大小、使用空间相对于空闲空间的比例值、分区中每簇占用的扇区数(即磁盘被划分使用的最小单位)等。
则本实施例中当比例值小于容忍阈值时,确定当前状态为禁止启动文件整理操作,不对系统磁盘上的系统开机文件进行整理,结束操作。这种处理方式,只有当系统磁盘上有足够的空闲扇区时,才启动文件整理操作,这是由于对系统开机文件进行移动并重新排列时,挪动后的文件仍需要存储在磁盘上,若磁盘中的空闲空间过小,可能会导致需要采用复杂的移动操作来保证文件的正常存储,甚至导致在文件移动时磁盘上没有充足的空间用于存储移动后的文件,发生文件丢失或者系统异常等问题,为避免这些问题,本实施例采用了上述处理方式保证能够成功实现文件的移动和重排列。示例性的,上述容忍阈值可以为15%,即要求系统磁盘中有15%的空闲空间,容忍阈值的数值可以根据需要移动文件的大小以整个磁盘空间大小而改变,并不特别固定于一个数值,但选取的容忍阈值必须满足系统磁盘中能有足够空闲空间去暂时缓冲保存需要移动的文件中容量最大的那个文件。
在上述步骤S102中,可以利用Windows系统提供的查询目录文件“NtQueryDirectoryFile”函数从系统磁盘根目录开始递归枚举文件及子目录,遇到子目录则再调用“NtQueryDirectoryFile”函数枚举子目录中的文件,最终得到的所有文件的信息,包括:系统磁盘上的所有存在文件的文件名称、文件路径、文件大小、指示文件在系统磁盘中位置的信息,如文件数据保存在哪些扇区或簇(文件数据可能不是连续的存放)等等。从获取到的系统磁盘上所有文件的信息中找出系统开机文件的分布信息。
其中,上述指示文件在系统磁盘中位置的信息为文件在系统磁盘中占用的簇的编号,步骤S104包括:
利用系统开机文件的分布信息中的文件名称和文件路径确定当前需要查找的系统开机文件;利用系统开机文件的分布信息中的文件在系统磁盘中占用的簇的编号,在系统磁盘中查找到当前需要查找的系统开机文件。
进一步的,步骤S106具体包括:将系统磁盘上可使用的首个扇区选取为排列目标位置;按照读取顺序确定当前处理的系统开机文件,并判断从排列目标位置开始是否存在满足当前处理的系统开机文件的文件大小的连续扇区,若存在,将当前处理的系统开机文件移动到从排列目标位置开始的连续扇区,若不存在,移动系统磁盘上排列目标位置之后的一个或多个文件至不相关区域,直至从排列目标位置开始存在满足当前处理的系统开机文件的文件大小的连续扇区,并将当前处理的系统开机文件移动到从排列目标位置开始的连续扇区;更新排列目标位置为系统磁盘上当前处理的系统开机文件移动后占用的扇区之后的下一个扇区,以及,按照读取顺序确定下一个处理的系统开机文件;根据更新后的排列目标位置,移动下一个需要处理的系统开机文件;其中,不相关区域为系统磁盘上从排列目标位置加上当前处理的系统开机文件的文件大小对应的扇区之后的空闲扇区区域。在本步骤中按照开机时系统开机文件的读取顺序,将系统开机文件在系统磁盘上重新排列。
在文件整理过程中,上述步骤S106中以连续扇区为单位的处理方式,也可以更换为以连续簇为单位进行处理,即只要保证系统开机文件被排列在系统磁盘上连续的存储空间中即可。
计算机开机过程是从计算机通电自检完成之后开始进行的,这一过程可以细分为预引导、引导、载入内核、初始化内核和系统登录操作这五个阶段,所以在步骤S100中,将计算机开机过程中执行预引导、引导、载入内核、初始化内核至系统登录操作时从系统磁盘上读取的文件作为系统开机文件,记录读取该系统开机文件的顺序作为获取到的读取顺序。在开机过程中需要读取的文件主要包括Ntldr、Boot.ini、Ntdetect.com、Ntoskrnl.exe、Ntbootdd.sys以及Bootsect.dos等文件,各个阶段的主要处理过程如下:
预引导阶段
计算机启动后,BIOS自检通过后,开始寻找引导设备,正常情况下需要的引导的设备就是计算机硬盘。BIOS读取硬盘的第一个扇区的引导代码,即主引导记录(Master Boot Record,MBR)到内存,然后将控制权转移到MBR代码。MBR代码功能是寻找磁盘的引导分区(boot partition),其第一个扇区为引导扇区(boot sector),该卷称为系统卷(system volume),是需要优化的系统磁盘扇区。
引导阶段
引导扇区的代码能够解析系统卷的文件格式,并找到Ntldr,该程序会将处理器由实模式(Real Mode)切换为32位平坦内存模式(32-bit Flat MemoryMode)。Ntldr程序在完成了初始化工作之后会从硬盘上读取boot.ini文件,根据该文件中的内容选择操作系统。在选择了需要载入的Windows操作系统之后,Ntdetect.com将计算机中安装的所有硬件信息收集起来,并将该信息交给Ntldr。
载入内核阶段
载入系统的内核文件Ntoskrnl.exe,但这里仅仅是载入,内核此时还不会被初始化。随后载入硬件抽象层HAL.dll。加载SYSTEM注册表储巢文件(%SystemRoot%\system32\Config\System)为注册表键值(HKEY_LOCAL_MACHINE\SYSTEM),根据注册表中引导设备驱动列表添加相应的文件系统驱动,以实现对各个分区,目录,文件的访问管理。
初始化内核阶段
内核初始化进程会加载(HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\services)中记录的驱动,如磁盘管理过滤驱动、网络驱动等。
先加载注册为“Start”键值0(SERVICE_BOOT_START)的驱动然后加载键值为1(SERVICE_SYSTEM_START)的驱动。首先扫描(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder)中定义的组别加载顺序,按照组别依次加载已注册的驱动,已注册驱动的组别会记录在注册表键值“Group”中。对相同组别的驱动,会根据注册表键值“Tag”来决定加载顺序。GroupOrderList(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GroupOrderList)中每个组的第一项都是Tag值的数值。接下来是要加载的Tag值的数字顺序。组中的设备驱动程序首先按照其由GroupOrderList所定义的Tag值进行加载。如果设备驱动程序没有Tag值,或者Tag值不在GroupOrderList中,则这些设备驱动程序将在加载具有有效Tag值的设备驱动程序之后进行加载。
系统登录阶段
在本阶段会话管理器启动本地安全性授权子系统。执行到这一步后,计算机显示屏上会显示Windows系统的登录界面,与此同时,后台会加载一些非关键的设备驱动。
通过上述五个阶段的操作,计算机开机过程执行完毕,从而获知了系统开机时所有需要读取的系统开机文件以及这些系统开机文件的读取顺序。对于同一个计算机操作系统,系统开机文件的读取及加载顺序是不会改变的,每次开机都会按照相同的读取顺序读取系统开机文件。本实施例可以在一次开机过程中,通过设置的文件读取监控驱动记录系统开机文件的读取顺序,然后按照记录的读取顺序执行系统开机文件在磁盘上的重排列。
本发明又一个实施例中结合具体的示例来说明将系统开机文件按照读取顺序连续排列在系统磁盘上的方法。
参见图2,示出了系统磁盘上的文件在执行整理前的分布图。图2中整个表格代表系统磁盘,每一单元格代表文件系统的最小使用单位簇。系统磁盘上包括若干非系统开机文件以及三个系统开机文件。为便于描述,在图2中已经对这三个系统开机文件的读取顺序进行了注明,在实际操作中,可以将系统开机文件的名称、位置和读取顺序记录在列表中,从列表中查找到当前需要移动的系统开机文件。图2示出的例子中,读取顺序为1号的文件存在文件碎片,该文件由两个文件碎片组成。通常情况下,一个文件被分为多个碎片时,会有一个较大的文件碎片中包含了该文件的主体数据,而其余的文件碎片会比较小。
首先选取重排列的起始位置,将系统磁盘上可使用的首个扇区选取为排列目标位置,图2的示例中,系统磁盘上的第一个簇中的第一个扇区可用于存储任意系统开机文件,则将该第一个扇区选取为排列目标位置。
根据读取顺序,先移动读取顺序为1号的系统开机文件,根据文件的文件大小获知该文件需要占用两个簇(两个单元格)的空间,而从排列目标位置开始没有两个簇的连续扇区,则移动排列目标位置后至少两个簇中的文件至不相关区域。不相关区域为系统磁盘上从排列目标位置加上当前处理(读取顺序为1号)的系统开机文件的文件大小对应的扇区之后的空闲扇区区域,图2示出的场景中从第三个单元格开始的未占用的单元格都属于不相关区域。
参见图3,为移动读取顺序为1号的系统开机文件之后的系统磁盘上的文件分布情况。本实施例将非系统开机文件1和读取顺序3号的系统开机文件移动到了不相关区域中距离排列目标位置最远的区域。将读取顺序为1号的文件的各部分从当前排列位置开始连续排列在磁盘上。本方案也能够对文件碎片进行整理,若当前处理的系统开机文件(读取顺序1号的文件)由两个以上的文件碎片构成,获取该系统开机文件的文件描述信息,该文件描述信息包括指示文件碎片排列顺序的信息,将读取顺序1号的系统开机文件的文件碎片按照文件碎片排列顺序依次移动到从排列目标位置开始的连续扇区。
在对读取顺序1号的系统开机文件移动结束后,将排列目标位置更新为读取顺序1号的文件占用的扇区之后的下一个扇区,即第三个单元格对应的簇中的第一个扇区。然后,移动读取顺序为2号的系统开机文件。参见图4,示出了对读取顺序2号的文件移动后磁盘上的文件分布情况图。由于排列目标位置起的连续扇区被非系统开机文件2占用,将非系统开机文件2移动至不相关区域,将读取顺序2号的系统开机文件移动至从当前的排列目标位置开始的连续扇区中(第三个单元格)。
在对读取顺序2号的系统开机文件移动结束后,将排列目标位置更新为读取顺序2号的文件占用的扇区之后的下一个扇区,即第四个单元格对应的簇中的第一个扇区。然后,移动读取顺序为3号的系统开机文件。参见图5,示出了对读取顺序3号的文件移动后磁盘上的文件分布情况图。由于排列目标位置起的连续扇区被非系统开机文件3占用,将非系统开机文件3移动至不相关区域,将读取顺序3号的系统开机文件移动至从当前的排列目标位置开始的连续扇区中(第四个单元格)。
进一步的,由于一些特定的系统开机文件要求存储在磁盘上固定的位置,本实施例获取到的系统开机文件的分布信息中还可以包括系统开机文件的状态,该状态可以包括锁定状态和非锁定状态,文件系统(如NTFS)可以确定文件是否可以移动,获知文件的状态,通过调用文件系统的API接口即可得到文件的状态。当系统开机文件的状态为锁定时,表明该系统开机文件必须存储在固定位置,不允许移动系统开机文件在系统磁盘中的位置,当系统开机文件的状态为非锁定状态时,允许移动该系统开机文件。
则在按照读取顺序对系统开机文件进行移动时,若当前处理的系统开机文件的状态为锁定时,不对当前处理的系统开机文件进行移动,保持该系统开机文件的位置不变。相似的,为了从排列目标位置起为当前处理的系统开机文件清理出足够的存储空间,需要移动排列目标位置之后的系统开机文件且该文件的状态为锁定时,不对该锁定状态的系统开机文件进行移动,则将排列目标位置更新为该锁定状态的系统开机文件占用的扇区之后的下一个扇区,将当前处理的系统开机文件移动至从更新后的排列目标位置起的连续扇区中。
本发明又一实施例还提供了一种实现计算机系统开机加速的方法,包括:
在开机过程中需要运行的系统开机文件已经被按照读取顺序连续排列在系统磁盘上,则当接收到系统开机指令时,直接加载连续排列在系统磁盘上的系统开机文件,执行计算机系统开机操作。本实施例中由于系统开机时,系统开机启动的时候加载的是按照读取顺序连续排列在系统磁盘上的系统开机文件,磁盘触头只需在磁道中顺序移动即可读取到开机的各个阶段中需要的系统开机文件,解决了磁盘触头在磁道中频繁切换来回往复移动造成的文件读取时间过长的问题,能够显著提高计算机的开机速度,有效地达到计算机开机加速的目的。
本发明又一个实施例还提供了一种计算机系统开机文件的整理装置,参见图6,包括:
读取顺序获取单元600,适于获取计算机开机过程中从系统磁盘上读取系统开机文件的读取顺序,例如,读取顺序获取单元600具体适于将计算机开机过程中执行预引导、引导、载入内核、初始化内核至系统登录操作时从系统磁盘上读取的文件作为系统开机文件,记录读取该系统开机文件的顺序作为获取到的读取顺序。
信息获取单元602,适于获取系统开机文件的分布信息,该分布信息包括系统开机文件的文件名称、文件路径和指示文件在系统磁盘中位置的信息。信息获取单元602可以从磁盘所对应的文件系统(如NTFS文件系统)中获取到上述分布信息。
文件查找单元604,适于利用系统开机文件的分布信息查找到系统磁盘上的系统开机文件;
文件移动单元606,适于移动系统开机文件在系统磁盘上的位置,将系统开机文件按照读取顺序连续排列在系统磁盘上。本实施例在修改系统开机文件在存储空间中的位置时,采用了移动文件的方式,例如,通过调用NTFS文件系统提供文件控制应用接口NtFsControlFile API,移动文件到指定的位置。由于系统开机文件是系统运行所需的基础文件,若采用文件删除再写入的方式,删除文件可以导致系统运行故障,或影响系统中其他应用的正常运行,为避免出现这种问题,本实施例采用移动文件的方式,保证了在对系统开机文件进行整理的同时,系统运行的稳定性。
其中,信息获取单元602,还适于在获取系统磁盘上开机文件的分布信息之前,获取系统磁盘的描述信息,该描述信息包括系统磁盘的已使用空间相对于空闲空间的比例值;
参见图7,上述装置还包括:启动控制单元608,适于当比例值小于容忍阈值时,确定当前状态为禁止启动文件整理操作,不对系统磁盘上的系统开机文件进行整理,结束操作。例如,启动控制单元608可以通过禁止文件查找单元604和/或文件移动单元606的启动,达到不对系统磁盘上的系统开机文件进行整理的效果。这种处理方式,只有当系统磁盘上有足够的空闲扇区时,才启动文件整理操作,这是由于对系统开机文件进行移动并重新排列时,挪动后的文件仍需要存储在磁盘上,若磁盘中的空闲空间过小,可能会导致需要采用复杂的移动操作来保证文件的正常存储,甚至导致在文件移动时磁盘上没有充足的空间用于存储移动后的文件,所以采用上述处理方式保证了能够成功实现文件的移动和重排列。
其中,上述指示文件在系统磁盘中位置的信息为文件在系统磁盘中占用的簇的编号,文件查找单元604,具体适于利用系统开机文件的分布信息中的文件名称和文件路径确定当前需要查找的系统开机文件;利用系统开机文件的分布信息中的文件在系统磁盘中占用的簇的编号,在系统磁盘中查找到当前需要查找的系统开机文件。
文件移动单元606包括:目标位置选取模块,适于将系统磁盘上可使用的首个扇区选取为排列目标位置;移动模块,适于按照读取顺序确定当前处理的系统开机文件,并判断从排列目标位置开始是否存在满足当前处理的系统开机文件的文件大小的连续扇区,若存在,将当前处理的系统开机文件移动到从排列目标位置开始的连续扇区,若不存在,移动系统磁盘上排列目标位置之后的一个或多个文件至不相关区域,直至从排列目标位置开始存在满足当前处理的系统开机文件的文件大小的连续扇区,并将当前处理的系统开机文件移动到从排列目标位置开始的连续扇区;更新模块,适于更新排列目标位置为系统磁盘上当前处理的系统开机文件移动后占用的扇区之后的下一个扇区,以及,按照读取顺序确定下一个处理的系统开机文件;循环控制模块,适于根据更新后的排列目标位置,调用移动模块移动下一个需要处理的系统开机文件;其中,不相关区域为系统磁盘上从排列目标位置加上当前处理的系统开机文件的文件大小对应的扇区之后的空闲扇区区域。
本实施例还提供了一种对文件碎片的整理方案,若当前处理的系统开机文件由二个以上的文件碎片构成,信息获取单元602,还适于获取系统开机文件的文件描述信息,该文件描述信息包括指示文件碎片排列顺序的信息;则文件移动单元606中的移动模块,具体适于将当前处理的系统开机文件的文件碎片按照文件碎片排列顺序依次移动到从排列目标位置开始的连续扇区。
进一步的,信息获取单元602获取到的系统开机文件的分布信息中还包括系统开机文件的状态,当系统开机文件的状态为锁定时,不允许移动系统开机文件在系统磁盘中的位置;
文件移动单元606中的移动模块,具体适于若当前处理的系统开机文件的状态为锁定时,不对当前处理的系统开机文件进行移动;以及,该移动模块,具体适于当排列目标位置之后的需要移动的系统开机文件的状态为锁定时,不对该锁定状态的系统开机文件进行移动,并启动文件移动单元606中的更新模块,该更新模块,具体适于将排列目标位置更新为该锁定状态的系统开机文件占用的扇区之后的下一个扇区。
本实施例中各单元及模块的具体工作方式可以参见本发明其他实施例的相关内容。
根据本发明的另一方面,本发明实施例提供了一种计算机终端,系统磁盘、内存储器、数据处理器、显示器,参见图8,该计算机终端800上安装有计算机系统开机文件的整理装置900,
计算机终端800,适于当接收到系统文件整理指令时,根据该系统文件整理指令,启动计算机系统开机文件的整理装置900。
计算机终端800,还适于在计算机系统开机文件的整理装置900对系统开机文件整理之后,当接收到系统开机指令时,加载连续排列在系统磁盘上的系统开机文件,执行计算机系统开机操作。在利用计算机系统开机文件的整理装置900执行一次系统开机文件的整理操作之后,计算机终端800以后在每次开机时都直接加载已经连续排序在系统磁盘上的系统开机文件,以提高系统开机速度。
上述系统磁盘上存储有系统开机文件以及其他所需的非系统开机文件,内存储器适于存储各种文件及数据,数据处理器适于进行数据处理以及对计算机终端中器件的运行进行控制,显示器适于进行信息的显示。
计算机系统开机文件的整理装置900中可以具有如图6和图7所示的结构,计算机系统开机文件的整理装置900的具体工作方式也可以参见图6和图7中各单元和模块的工作方式。
由上所述,本发明实施例通过获取开机过程中系统开机文件的读取顺序以及系统开机文件的分布信息,将系统开机文件按照读取顺序连续排列在系统磁盘上,则系统开机时,磁盘触头只需在磁道中顺序移动即可读取到开机的各个阶段中需要的系统开机文件,解决了磁盘触头在磁道中频繁切换来回往复移动造成的文件读取时间过长的问题,能够显著提高计算机的开机速度,更加有效地实现计算机开机加速的目的。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的计算机系统开机文件的整理装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。