数据处理系统和方法

文档序号:1602702 发布日期:2020-01-07 浏览:29次 >En<

阅读说明:本技术 数据处理系统和方法 (Data processing system and method ) 是由 丹尼尔·格林菲尔德 于 2018-05-24 设计创作,主要内容包括:一种数据处理系统,包括数据处理装置,其中,所述数据处理装置包括用于执行一个或多个软件产品的计算硬件,其中,所述一个或多个软件产品的执行配置所述数据处理装置,以从文件系统装置访问数据。所述数据处理装置能够被操作来加载动态链接器,所述动态链接器能够被操作来包括拦截库,拦截库拦截可执行软件产品的文件访问操作,其中:(1)所述文件系统装置中不存在的虚拟文件能够被所述可执行软件产品访问;(2)所述虚拟文件是以下任一情况的结果:(a)所述文件系统装置中一个或多个真实文件的即时转换,其中,所述即时转换是由一种文件格式到另一种文件格式,或者(b)将访问操作转换为对位于云对象存储上的真实对象的等效云对象存储的所述访问操作,或者(c)所述即时转换(a)和对象访问转换(b)的组合。可选地,至少其中之一:(3)所述虚拟文件是与所述真实文件/对象不同的文件格式,其中,压缩文件格式和所述虚拟文件是互不相同的文件格式;以及(4)所述文件格式是基因组文件格式。(A data processing system comprising data processing apparatus, wherein the data processing apparatus comprises computing hardware for executing one or more software products, wherein execution of the one or more software products configures the data processing apparatus to access data from a file system apparatus. The data processing apparatus is operable to load a dynamic linker, the dynamic linker being operable to include an interception library, the interception library intercepting file access operations of an executable software product, wherein: (1) virtual files not present in the filesystem means are accessible by the executable software product; (2) the virtual file is the result of any of the following: (a) an instant conversion of one or more real files in the file system apparatus, wherein the instant conversion is from one file format to another file format, or (b) an access operation is converted to an access operation on an equivalent cloud object store of real objects located on a cloud object store, or (c) a combination of the instant conversion (a) and object access conversion (b). Optionally, at least one of: (3) the virtual file is in a different file format than the real file/object, wherein the compressed file format and the virtual file are in different file formats from each other; and (4) the file format is a genome file format.)

数据处理系统和方法

技术领域

本公开涉及数据处理系统。此外,本公开涉及使用上述数据处理系统处理数据的方法,例如处理基因组数据的方法。另外,本申请涉及包括非暂时性计算机可读存储介质的计算机程序产品,该非暂时性计算机可读存储介质储存有计算机可读指令,该计算机可读指令能够由包括处理硬件的计算设备执行,进而执行上述方法。

背景技术

目前的数据处理系统在执行数据处理功能时,经常需要访问一个或多个库中存储的数据;数据库可例如包括基因组数据。该数据处理系统能够通过运行一个或多个软件产品而在软件控制下执行以实现功能。

在生成软件产品时,在目前实践中,采用链接器来编译多项软件以产生可执行的软件代码。该可执行的软件代码被称为软件产品。此外,多种类型的链接器都是已知的,例如,可在Wikipedia(***)中搜索到,其中,在执行或链接特定程序时,动态链接器能够受到影响以修改其行为,并且动态链接器的示例可以在多种Unix类型的系统中的运行时间链接器的手册页中找到记载,其中,

Figure BDA0002287015430000011

是一种商标。在LD_LIBRARY_PATH和LD_PRELOAD环境变量中提到了这种动态链接器的行为的典型的修改,其中,动态链接器通过在不同定位处搜索共享库,并且强制加载和链接原本不可能被分别加载和连接的库,以修改运行时的链接程序。一种经由动态链接器修改可执行行为的示例是Zlibc,Zlibc也称为“uncompress.so”,在通过LD_PRELOAD hack使用时,该Zlibc动态链接器具有透明解压缩(transparent decompression)的功能,因此,可以在BSD和

Figure BDA0002287015430000012

系统中读取预压缩(gzipped)的文件数据,就像未压缩文件一样,实际上即使出现一些警告也允许特定用户在基本文件系统上添加透明解压缩。为了实现这种功能,采用了一种灵活的机制,在向请求数据的特定用户进程提供数据之前,允许对相同的特定代码进行微调,以在读取特定文件时可以对数据进行附加或替换处理。

然而,目前已知的动态链接器在以动态方式修改存储库中的多种多样的数据的方面还不够完善。

发明内容

本公开寻求提供一种改进的数据处理系统,该系统能够以更灵活和动态的方式转换对例如压缩的基因组数据或云对象存储的文件访问。

在第一方面,提供了一种数据处理系统,其包括数据处理装置,其中该数据处理装置包括用于执行一个或多个软件产品的计算硬件,其中一个或多个软件产品的执行配置数据处理装置,以访问来自文件系统装置的数据,

其特征在于,该数据处理装置可***作来加载动态链接器,该动态链接器可***作来包括拦截可执行软件产品的文件访问操作的拦截库,其中:

(1)文件系统装置中不存在的虚拟文件能够被可执行软件产品访问;

(2)虚拟文件是以下任一情况的结果:(a)文件系统装置中一个或多个真实文件的即时转换,其中,即时转换是由一种文件格式到另一种文件格式,或者(b)将访问操作转换为对位于云对象存储上的真实对象的等效云对象存储的访问操作,或者(c)即时转换(a)和对象访问转换(b)的组合。

可选地,在数据处理系统中,至少其中之一:

(3)虚拟文件是与真实文件/对象不同的文件格式,其中,压缩文件格式和虚拟文件是互不相同的文件格式;以及

(4)文件格式是基因组文件格式。

本发明的优点在于,通过使用拦截库,动态链接器可***作来使数据处理系统在执行计算(例如对从传感器装置获取的数据的计算,例如与基因组读数相关)时在对动态变化的数据文件和数据文件格式的利用方面更加多样化。

第二方面,提供了一种使用数据处理系统的方法,数据处理系统包括数据处理装置,其中,数据处理装置包括用于执行一个或多个软件产品的计算硬件,其中,一个或多个软件产品的执行配置数据处理装置,以访问来自文件系统装置的数据,

其特征在于,该方法包括操作数据处理装置以加载动态连接器,该动态链接器可***作来包括拦截可执行软件产品的文件访问操作的拦截库,其中:

(1)文件系统装置中不存在的虚拟文件能够被可执行文件的软件产品访问;

(2)虚拟文件是以下任一情况的结果:(a)文件系统装置的一个或多个真实文件的即时转换,其中,该即时转换从一种文件格式转换到另一种文件格式,或者(b)将访问操作转换为对位于云对象存储上的真实对象的等效云对象存储访问操作,或者(c)即时转换(a)和对象访问转换(b)的结合。

可选地,在这种方法中,至少其中之一:

(3)虚拟文件是与真实文件/对象不同的文件格式,其中,压缩文件格式和虚拟文件是互不相同的文件格式;以及

(4)文件格式是基因组文件格式。

可选地,在数据处理系统中,至少其中之一:

(3)虚拟文件是与真实文件/对象不同的文件格式,其中,压缩文件格式和虚拟文件是互不相同的文件格式;以及

(4)文件格式是基因组文件格式。

第三方面,本公开的实施方式提供了一种计算机程序产品,其包括存储有计算机可读指令的非暂时性计算机可读存储介质,该计算机可读指令能够由包括处理硬件的计算设备执行,以执行根据前述第二方面的方法。

基于以下附图和对说明性实施方式的具体描述,并结合所附权利要求书的解释,本公开的其它方面、优点、特征和目的将变得清楚。

应当理解,本公开的特征易与多种组合进行结合,而不脱离所附权利要求所限定的本公开的范围。

附图说明

当结合附图阅读时,将能更好地理解以上发明内容和以下对说明性实施方式的详细描述。为了说明本公开,在附图中示出了本公开的示例性构造。然而,本公开不限于本文公开的特定方法和装置。此外,本领域技术人员将理解该附图未按比例绘制。尽可能地,相同的元件都用相同的数字表示。

现在将参考以下附图仅通过示例的方式描述本公开的实施方式,其中:

图1是根据本公开的数据处理系统的示意图;以及

图2是操作图1的数据处理系统的方法的流程图的图示。

在附图中,带下划线的数字用来表示该带下划线的数字所在的项目或与该带下划线的数字相邻的项目。

具体实施方式

以下详细描述说明了本公开的实施方式以及其能够被实施的方法。尽管实现本公开的一些方式已经被公开,但是本领域技术人员将认识到,用于实现或实践本公开的其他实施方式也是可行的。

虚拟文件是一种在计算机系统的文件系统里实际不存在的文件(或目录)。然而,虚拟文件系统可包括虚拟文件的整个文件系统树,虽然虚拟文件实际不存在于真实文件系统中,但是虚拟文件可能另外看起来像位于现有真实文件系统内的路径上。

文件系统(包括虚拟文件系统)需要通过兼容POSIX的操作系统安装在路径上,这通常由具有权限的用户执行。相反,

Figure BDA0002287015430000041

中的FUSE系统允许不具有权限的用户在FUSE内核模型的帮助下将文件系统(包括虚拟文件系统)安装在路径上。然而,如果未明确放宽这些限制,则在容器环境(例如)的更严格的安全权限下可能无法使用该方法。也不希望出现这种情况:一个用户安装了该文件系统,所有其他用户通常也可以看到它的存在。

在某些情况中,在以下任意条件下能够使用虚拟文件系统是有帮助的:(a)无需系统安装点即可工作,(b)在现有已安装的文件系统中工作;和/或(c)如在

Figure BDA0002287015430000051

等受限环境中在受限的权限下工作。

使用已安装的虚拟文件系统的另一种方法是使用动态链接来拦截和修改能够执行的对文件系统的访问。这种机制包括基于Linux的系统中的LD_PRELOAD和基于BSD的系统(包括Mac OS)的DLYD_INSERT_LIBRARIES。这里,在加载该可执行文件上,将符号解析为动态库(如大多数Linux中用于可执行文件访问文件系统的glibc.so)可以通过提供匹配符号名称来利用备用供应库进行拦截。备用库可以拦截可执行文件对匹配符号的调用,从而更改那些符号的功能,从而改变可执行文件的整体行为。例如,可执行文件假定‘open64’符号允许打开文件进行后续访问,并返回文件句柄。该备用库可以拦截对此符号的调用以提供备用行为,例如打开与最初指定的文件不同的文件。这种用于文件系统访问的拦截机制具有不需要任何特定权限的优点,并能够使虚拟文件看起来可以保存在已安装的文件系统中。然而,这种用于文件系统访问的拦截机制具有许多不足之处,尚未使其实用化。

不足之处有:

1.尽管通过***如打开、读取和写入的操作可以轻易拦截文件系统访问,但是内存映射文件的读取/写入操作由操作系统处理,该操作系统通过内核直接将数据从文件系统读取或者写入文件系统,因此不会被库拦截。

2.静态编译的二进制文件,或者不使用如glibc.so的库访问文件系统而是直接使用操作系统调用的二进制文件,就不会被动态链接机制拦截。

总的来说,参考图1,图中提供了数据处理系统10、数据处理装置20,其中该数据处理装置20包括用于执行一个或多个软件产品40的计算硬件30,其中,一个或多个软件产品40的执行配置数据处理装置,以从文件系统装置访问数据,其特征在于,数据处理装置10可***作来加载动态链接库50,该动态链接库50可***作来包括拦截库50,该拦截库50拦截可执行软件产品的文件访问操作,其中:

(1)文件系统装置中不存在的虚拟文件能够被可执行软件产品访问;

(2)虚拟文件是以下任一情况的结果:(a)文件系统装置中一个或多个真实文件的即时转换,其中,即时转换是由一种文件格式到另一种文件格式,或者(b)将访问操作转换为对位于云对象存储上的真实对象的等效云对象存储的访问操作,或者(c)即时转换(a)和对象访问转换(b)的组合。

可选地,在数据处理系统中,至少其中之一:

(3)虚拟文件是与真实文件/对象不同的文件格式,其中,压缩文件格式和虚拟文件是互不相同的文件格式;以及

(4)文件格式是基因组文件格式。

可选地,压缩文件格式是压缩基因组文件格式,另一种文件格式是另一种基因组文件格式。

利用基于ZLIB/GZIP的压缩技术,大量的基因组数据已经以BAM或FASTQ.gz文件的标准格式压缩了。由于单个文件的大小可以是许多GB(千兆字节),以及有时是TB(兆兆字节),组织机构存储和传输这些文件也是一种挑战。更好的压缩将有利于减少存储成本和数据传输时间。然而,压缩为新的或更新的文件格式必然会破坏不支持这种新文件格式的现有生物信息学工具和工序的兼容性。虽然可以将其解压缩回原来的文件格式(如BAM或FASTQ.gz)并随后将其输入到工具和工序中,但是这需要作为工序的一部分被明确指出,或者即使实际上只有一小部分用于分析,也要首先在处理之前花时间对整个文件进行解压缩。因此,希望能够从新的被更好地压缩的文件格式透明地转换到压缩量小、兼容性好的文件格式。

处理基因组数据的另一个问题是工序由可执行文件组成,这些可执行文件可以通过POSIX文件的访问来读取/写入存储,而不是为读取或写入通常由REST访问操作的云存储而构建的。如果这些工具/工序可以像常规文件一样访问云存储,那么将是有益的。

可选地,在数据处理系统中,动态链接库包括以强制方式的拦截库。

可选地,在数据处理系统中,可执行软件产品可以通过使用ptrace调用用于访问基因组数据,其中,ptrace调用允许操纵文件描述符、数据存储库和数据寄存库。另外可选地,在数据处理系统中,ptrace调用可***作来拦截由子进程的数据处理系统进行的强制调用,拦截文件系统可通过内核提供的可执行跟踪功能调用该子进程,其中:

(1)数据处理系统可以访问文件系统装置中不存在的虚拟文件;

(2)虚拟文件是文件系统装置中的一个或多个文件从一种文件格式到另一种文件格式的即时转换;

(3)真实文件是压缩的基因组文件格式,而虚拟文件是另一种基因组文件格式;以及

(4)(*)在操作中,拦截用于打开虚拟文件的系统调用,并通过确保已经安装的虚拟文件系统可以使用并且随后将系统调用重新引导到虚拟文件系统上的文件来首先处理。

可选地,数据处理系统可***作来拦截子进程的文件系统访问,以便向子进程提供对虚拟文件的访问,其中,数据处理系统可***作来:

(1)使用动态链接拦截机制(如LD_PRELOAD)拦截库;

(2)在该库中拦截用于创建新的子进程的调用(例如,通过拦截Linux中的诸如execve的exec变量以及fork/vfork);

(3)检查新的子进程的可执行文件,以确定其是否依赖于适当的拦截库(例如,通过检查其是否对glibc.so具有动态依赖关系);

以及,其中:

(4)如果子进程依赖于拦截库,则允许创建子进程,但是要确保动态链接拦截机制能够使用(例如,通过确保LD_PRELOAD环境变量包括必需的拦截库),其中,必需的拦截库拦截文件系统访问,以提供虚拟文件;或者

(5)如果子可执行文件没有依赖于拦截库,则需要检查看备用拦截机制是否是可使用的(即,母进程是否有充分的权限来应用备用的拦截方式),其中,如果备用拦截机制是可使用的,则在子进程中应用备用拦截机制。

可选地,如果多个这样的备用拦截机制均可使用,则数据处理系统可***作来选择一个这样的可使用的备用拦截机制。

可选地,该备用拦截机制允许子进程继续运行,但是设置了该子进程的拦截系统调用(例如,通过使用Linux中的ptrace机制)。另外可选地,出于对性能的考虑,系统调用的拦截仅限于目标事项(例如,通过在Linux上使用seccomp过滤库)。以这种方式,所有文件系统的操作均可以被拦截,从而可以转换虚拟文件上的任何操作。

可选地,该备用拦截机制是利用在子进程上运行的即时再编译库(如Intel的PIN工具或HP-MIT的DynamoRIO),其中,即时再编译库被配置用于通过子进程检测和拦截系统调用。以这种方式,访问文件系统的系统调用可以被重新引导到提供虚拟文件的备用代码。

可选地,该数据处理系统可***作来将任何基于文件名(或基于路径名)的访问重新引导到虚拟文件和虚拟文件系统安装点(如,对于Linux,将FUSE安装到临时受限访问目录)内的等效条目上,其中,如果当前不存在这样的安装点,在使用已修改的系统调用之前,会即时创建新的安装。在这种方案中,对如“打开文件”之类操作的系统调用将返回一个有效的文件句柄,其中,对该文件句柄的读取/写入操作将不需要进一步的系统调用拦截,从而提高了性能,但会通过基于安装的虚拟文件系统的方法被拦截。

另外可选地,在数据处理系统中,在(4)(*)中,已安装的虚拟文件系统被实现为临时目录,其中,如果尚未存在安装点,则数据处理系统可***作来为虚拟文件系统自动创建安装点以使其存在。

可选地,在数据处理系统中,动态链接器可***作来在运行二进制代码之前,通过对二进制代码的部分进行即时的再编译以拦截可执行的子进程的系统调用,其中,

(1)可以访问文件系统装置中不存在的虚拟文件;

(2)虚拟文件是文件系统装置上的一个或多个真实文件的即时转换,其中,即时转换从一种文件格式转换到另一种文件格式;

(3)真实文件是压缩的基因组文件格式,而虚拟文件是另一种基因组文件格式;以及

(4)拦截用于打开所述虚拟文件的系统调用,并通过首先确保已安装的虚拟文件系统是可以使用的,并随后将系统调用重新引导到虚拟文件系统上的文件来进行处理。

另外可选地,在数据处理系统中,已安装的虚拟文件系统实现为临时目录,其中,为虚拟文件系统自动创建了安装点以使其存在。

可选地,在数据处理系统中,基因组数据的透明访问的即时转换可***作来组合来自多个基因组文件的内容,并将其显示为一个基因组文件,适用于以下任何一种或组合:

(1)其中合并的内容是质量得分数据;

(2)其中合并的内容是读取名称信息;

(3)其中合并的内容是映射的基因组读取内容的辅助标签;

(4)其中合并的内容包括不同的基因组区域;

(5)其中合并的内容包括多个基因组样本/标本;以及

(6)其中单独的基因组文件代表给定基因组的不同区域、样品或其他可分开的部分。

可选地,在数据处理系统中,动态链接器被强制加载并在操作中使用拦截库,该拦截库拦截可执行软件产品的文件访问操作,其中:

(1)新的子进程的创建将拦截库保留在关联的拦截环境变量中。

可选地,在数据处理系统中,动态链接器可***作来采用拦截库,该拦截库拦截可执行软件产品的文件访问操作,其中:

(1)拦截库检测是否程序正在被提交到工作提交系统,如果是,则:

(2)创建一个临时shell脚本,该shell脚本在调用原始程序之前保留拦截环境变量;以及

(3)将新的临时脚本提交到工作提交系统中来代替原始程序,

另外可选地,在数据处理系统中,在实施(3)前,该数据处理系统可***作来:

(4)检测原始程序是否是包含工作提交系统特定元数据的脚本,如果是,则将该元数据信息复制到新的临时shell脚本中。

可选地,数据处理系统可***作来提供对基因组数据的透明访问,通过将操作转换成等效的、被转换的请求来将虚拟路径(例如,/pgs3/)下的访问重新引导到云存储装置,这些请求经由互联网发送到云存储装置的提供商。

这也有一些复杂的问题,其中访问云存储上的基因组数据不仅给工具和工序从云存储直接流访问(stream access)的能力带来了挑战,而且由于基因组数据的庞大性而承受了相当大的延迟和成本。

如果云存储中的对象使用更好的压缩文件格式,并且即时地转换为标准文件格式,那将是有利的。在这种方案中,对标准文件格式的文件系统访问被转换为对更好的压缩文件格式的等效云访问。由于更好的压缩,将需要从云对象存储中传输更少的数据,从而加快了访问速度,但是将更好的压缩数据转换为标准文件格式的形式需要花费一定的计算开销。

另外可选地,在数据处理系统中:

(1)数据处理系统可访问云存储装置中不存在的相应的虚拟文件;

(2)虚拟文件是云存储装置上的一个或多个相应的真实对象从一种文件格式到另一种文件格式的即时转换;

(3)其中,真实对象是压缩的基因组文件格式,而虚拟文件是另一种基因组文件格式。

可选地,数据处理系统可***作来提供对基因组数据的透明访问,这样,动态链接器可***作来通过以下方式为可执行文件对虚拟文件的内存映射文件访问操作提供拦截库:

(1)对页面错误中断处理器进行注册;

(2)创建虚拟区域,但是要保护所述虚拟区域以防止读取和写入,所述虚拟区域具有内存映射文件映射操作要求的大小;

(3)在对一个或多个特定的受保护页面进行读取访问时,用来自真实文件的对应的转换内容替换一个或多个页面,并允许一个或多个特定的受保护页面可被访问以被读取和/或写入;以及

(4)维持已转换内容的一个或多个页面的列表,并在达到内存消耗限制时释放已转换内容占用的内存,选择已转换内容的一个或多个页面,释放一个或多个页面的内存并再次保护这些页面区域以防止进一步的读取和写入;以及

(5)其中,通过使用LRU(Least Recently Used,近期最少利用)、LFU(LeastFrequently Used,最不频繁利用)或其他替换的启发方式做出释放哪个页面的选择。

可选地,数据处理系统可***作来提供对基因组数据的透明访问,这样,它拦截了动态链接器,并且可***作来提供拦截库,以允许可执行文件对虚拟文件的内存映射文件访问操作,其中:

(1)其中,拦截对虚拟文件进行内存映射的系统调用,并通过首先确保已安装的虚拟文件系统是可以使用的(也许在临时目录中,此处的“确保”表示如果安装点尚不存在,则为虚拟文件系统自动创建所述安装点,以使其存在),并随后将内存映射操作重新引导到虚拟文件系统上的文件来进行处理。

根据另一方面,提供了一种使用数据处理系统10的方法,数据处理系统10包括数据处理装置20,其中,数据处理装置20包括用于执行一个或多个软件产品40的计算硬件30,其中,一个或多个软件产品40的执行配置数据处理装置20,以访问来自文件系统装置的数据,

其特征在于,该方法包括操作数据处理装置以加载动态连接器,该动态链接器可***作来包括拦截可执行软件产品的文件访问操作的拦截库,其中:

(1)文件系统装置中不存在的虚拟文件能够被可执行软件产品访问;

(2)虚拟文件是以下任一情况的结果:(a)文件系统装置的一个或多个真实文件即时转换,其中,该即时转换从一种文件格式转换到另一种文件格式,或者(b)将访问操作转换为位于云对象存储上的真实对象的等效云对象存储访问操作,或者(c)即时转换(a)和对象访问转换(b)的结合。

可选地,在这种方法中,至少其中之一:

(3)虚拟文件是与真实文件/对象不同的文件格式,其中,压缩文件格式和虚拟文件是互不相同的文件格式;以及

(4)文件格式是基因组文件格式。

可选地,(3)和(4)均适用于本公开给出的方法。

可选地,压缩文件格式是压缩基因组文件格式,而另一种文件格式是另一种基因组文件格式。

参考图2,示出了使用图1的数据处理系统10实施的方法的步骤的流程图。

该方法包括第一步骤200,提供包括数据处理装置的数据处理系统,其中,数据处理装置包括用于执行一个或多个软件产品的计算硬件,其中,一个或多个软件产品的执行配置数据处理装置从文件系统装置中访问数据。

该方法还包括第二步骤210,执行数据处理装置10以加载动态链接器,该动态链接器包括拦截库以拦截可执行软件产品的文件访问操作,其中:

(1)文件系统装置中不存在的虚拟文件能够被可执行软件产品访问;

(2)虚拟文件是以下任一情况的结果:(a)文件系统装置中一个或多个真实文件的即时转换,其中,即时转换是由一种文件格式到另一种文件格式,(b)将访问操作转换为对位于云对象存储上的真实对象的等效云对象存储的访问操作,(c)即时转换(a)和对象访问转换(b)的组合。

可选地,在图2的方法中,至少包括:

(3)虚拟文件是与真实文件/对象不同的文件格式,其中,压缩文件格式和虚拟文件格式是互不相同的文件格式;以及

(4)文件格式是基因组文件格式。

可选地,(3)和(4)均属于图2中的方法。

根据另一方面,提供了一种计算机程序产品,其包括存储有计算机可读指令的非暂时性计算机可读存储介质,该计算机可读指令能够由包括处理硬件的计算设备执行,以执行上述方法。

在不脱离由所附权利要求限定的本公开的范围的情况下,可以对上文中描述的本公开的实施方式进行修改。例如“包括”、“包括有”、“包含”、“由...组成”、“具有”、“是”等用于描述和对本发明主张权利的表述旨在以非排他性的方式解释,即也允许存在未明确描述的项目、组件或元件。提及到的单数也应解释为涉及复数。所附权利要求的括号内包括的数字旨在帮助理解权利要求,而不应以任何方式解释为限制这些权利要求所要求保护的主题。

短语“在实施方式中”,“根据实施方式”等通常表示该短语之后的特定特征、结构或特性被包括在本公开的至少一个实施方式中,并且可以被包括在本公开的一个以上的实施方式中。重要的是,这样的短语不一定指相同的实施方式。

附录(发明人说明)

透明访问层

来自***中对动态链接器(Dynamic Linker)的解释:

“动态链接器可以在程序执行或程序链接期间受到影响,以修改其行为,并且可以在多种Unix类系统的运行链接器手册页中看到它的示例。对此行为的典型修改是使用:

LD_LIBRARY_PATH and LD_PRELOAD environment variables(LD_LIBRARY_PATH和LD_PRELOAD环境变量),

通过在不同定位处搜索共享库,并且强制加载和链接原本不可能被分别加载和链接的库,以修改运行时的链接进程。一个示例是

Figure BDA0002287015430000141

也称为“uncompress.so”,在通过LD_PRELOAD hack使用时,其有助于透明解压缩(transparent decompression);因此,可以在BSD和

Figure BDA0002287015430000142

系统中读取预压缩(gzipped)的文件数据,就像未压缩文件一样,实际上即使出现一些警告也允许用户在基本文件系统上添加透明解压缩。该机制是灵活的,在向请求它的用户进程提供所述数据之前,允许对相同的代码进行微调,以在读取文件时可以对数据进行附加或替换处理。”

基因组数据的透明访问(主要方法)

方法:

通过动态链接器强制加载拦截库,该拦截库拦截可执行文件的文件访问操作,使得:

(1)文件系统中不存在的虚拟文件能够被访问;

(2)其中,虚拟文件是文件系统中真实文件从一种文件到另一种文件格式的即时转换;以及

(3)其中,真实文件是压缩的基因组文件格式,而虚拟文件是另一种基因组文件格式。

透明访问基因组数据的备用方法1:

使用系统调用拦截,例如通过ptrace。

来自***中对ptrace的解释:

“ptrace由调试器(如gdbdbx)、straceItrace等跟踪工具以及code coverage工具使用。专用程序也使用ptrace修补运行中的程序,以避免未修复的错误或解决安全特性。它可以进一步用作sandbox和运行环境模拟器(像模拟非根软件的根访问)。

通过使用ptrace调用附加到另一进程,工具对其目标的操作具有广泛的控制。这包括对其文件描述符(file descriptors)、内存和寄存器(registers)的操纵。它可以single-step目标的代码,可以观察和拦截系统调用及其结果,还可以操纵目标的信号(signal)处理进程,并为其接收和发送信号。写入目标的内存的能力不仅允许更改其数据存储,而且还允许更改应用程序自己的代码段(code segment),从而允许控制器安装断点(breakpoints)并修补目标的运行代码。”

以下是关于这种访问方法的现有技术,但是不涉及转换或虚拟文件系统:

http://www.alfonsobeato.net/c/modifying-system-call-arguments-with- ptrace/

http://www.alfonsobeato.net/c/filter-and-modify-system-calls-with- seccomp-and-ptrace/

方法:

通过内核提供的可执行文件跟踪功能拦截文件系统调用,强制拦截(子进程)可执行文件的系统调用,使得:

(1)文件系统中不存在的虚拟文件能够被访问;

(2)其中,虚拟文件是文件系统中真实文件从一种文件格式到另一种文件格式的即时转换;

(3)其中,真实文件是压缩的基因组文件格式,而虚拟文件是另一种基因组文件格式;以及

(4)其中,拦截用于打开所述虚拟文件的系统调用,并通过首先确保已安装的虚拟文件系统是可以使用的(也许在临时目录中,此处“确保”表示如果安装点尚不存在,则为虚拟文件系统自动创建所述安装点,以使其存在),并随后将系统调用重新引导到所述虚拟文件系统上的文件来进行处理。

透明访问基因组数据的替代方法2:

这基于如英特尔的PIN的插桩(Instrumentation)。

来自***中对PIN的解释:

“在将程序加载到内存后,Pin通过对程序的控制来执行插桩。然后,在运行前使用Pin即时再编译(just-in-time recompiles,JIT)二进制代码的一小部分。将新的执行分析的指令添加到再编译的代码上。这些新的指令来自Pintool。使用了大量的优化技术来获得尽可能低的运行时间和内存使用开销。截至2010年6月,Pin的平均基本开销为30%(不运行pintool)”。

方法:

在即将运行前,通过即时再编译二进制代码的部分,强制拦截(子进程)可执行文件的系统调用,使得:

(1)文件系统中不存在的虚拟文件能够被访问;

(2)其中,虚拟文件是文件系统中真实文件从一种文件格式到另一种文件格式的即时转换;

(3)其中,真实文件是压缩的基因组文件格式,而虚拟文件是另一种基因组文件格式;以及

(4)其中,拦截用于打开所述虚拟文件的系统调用,并通过首先确保已安装的虚拟文件系统是可以使用的(也许在临时目录中,此处“确保”表示如果安装点尚不存在,则为虚拟文件系统自动创建所述安装点,以使其存在),并随后将系统调用重新引导到所述虚拟文件系统上的文件来进行处理。

注意和主要的拦截方法一样,备用方法也可以通过拦截对虚拟文件的真实文件读取(写入)和搜索操作,而不仅仅是打开文件的操作来工作。然而(4)中还允许使用更高效的拦截方法,以便将打开文件的操作重新引导到已安装的虚拟文件系统(例如Linux下的FUSE)的路径上,并且使得在已安装的虚拟文件系统层拦截真实文件的读取和搜索操作,而不是拦截相应的系统调用。

两种访问基因组数据的方法之间的决定:

方法:

其中,检查被拦截的可执行文件,以查看其是否对可拦截库(如glibc)具有动态库依赖性,如果没有,则使用备用访问方法代替主要方法。根据备用方法1是否可被可执行文件使用(例如,是否有足够的用户安全权限)以及是否不使用备用方法2,来选择备用方法本身。

透明访问分层/分离的基因组数据

方法:

其中,基因组数据(及其替代物)的透明访问的即时转换可以合并来自多个基因组文件的内容,并将其显示为一个基因组文件,适用于以下任何一种或组合:

(1)其中合并的内容是质量得分数据;

(2)其中合并的内容是读取名称信息;

(3)其中合并的内容是映射的基因组读取内容的辅助标签;

(4)其中合并的内容包括不同的基因组区域;

(5)其中合并的内容包括多个基因组样本/标本;

其中,基因组数据(及其替代物)的透明访问的即时转换可以获取一个基因组文件,并将其显示为多个基因组文件:

(1)其中不同的基因组文件代表基因组的不同区域、样品或其他可分开的部分。

通过子进程保护拦截能力

在Linux中,可以将LD_PRELOAD环境变量配置为加载拦截库,然而这意味着,如果进程修改了该环境变量或者如果子进程在没有该环境变量时被调用了,则拦截功能就会丧失。基于MacOS和BSD的执行系统中存在类似的环境变量。我们称其为拦截环境变量。

方法:

通过动态链接器强制加载拦截可执行文件的文件访问操作的拦截库,使得:

(1)对新的(子)进程的创建将拦截库保留在拦截环境变量中。

通过工作提交系统保护拦截能力

由于工作提交被认为存在安全风险,工作提交系统(如HPC系统)可能不会保留工作提交的拦截环境变量。

方法:

通过动态链接器强制加载拦截可执行文件的文件访问操作的拦截库,使得:

(1)其检测程序是否正在被提交到工作提交系统,如果是,则:

(2)创建一个临时shell脚本,该shell脚本在调用原始程序之前保留拦截环境变量;

(3)可选地,检测程序是否是包含工作提交系统特定元数据的脚本,如果是,则将该元数据信息复制到新的临时shell脚本中;以及

(4)将新的临时脚本提交到工作提交系统以代替原始程序。

云存储的扩展

这样就可以作为虚拟文件访问云存储(例如AWS S3)或从中进行访问。与现有技术不同,这是通过上述拦截方法,并使用与基本对象文件格式不同的文件格式的虚拟文件。

方法:

根据对基因组数据(及其替代物)的透明访问,通过将操作转换成等效的、被转换的请求来将虚拟路径(例如,/pgs3/)下的访问重新引导到云存储装置,这些请求经由互联网发送到云存储装置的提供商,并且使得:

(1)云存储中不存在的相应的虚拟文件能够被访问;

(2)其中,虚拟文件是云存储上的相应的真实对象从一种文件格式到另一种文件格式的即时转换;以及

(3)其中,真实对象是压缩的基因组文件格式,而虚拟文件是另一种基因组文件格式。

例如,对/pgs3/mybucket/myfile.bam的访问将重新引导到存在于云对象位置s3://mybucket/myfile.cram的对象(具有不同文件格式),并且在s3://mybucket/myfile.bam中不存在相应的对象。

处理内存映射文件

不幸的是,在通过动态链接器强制加载拦截可执行文件的文件访问操作的拦截库时,对内存映射文件的访问更难处理。这是因为这样的文件访问意味着仅通过访问内存映射文件区域内的存储位置发生,而不是作为对可拦截库功能的调用。

方法:

根据对基因组数据(及其替代物)的透明访问,使得通过以下方式拦截可执行文件对虚拟文件的内存映射文件访问操作:

(1)对页面错误中断处理器进行注册;

(2)创建虚拟区域,但是要保护所述虚拟区域以防止读取和写入,所述虚拟区域具有内存映射文件映射操作要求的大小;

(3)在对所述受保护页面进行读取访问时,用来自真实文件的对应的转换内容替换该页面(以及可选地,周围页面,或可选地,预取后续页面),并允许所述页面能够被访问以被读取(和/或写入);

(4)维持已转换内容的所述页面的列表,并在达到内存消耗限制时释放已转换内容占用的内存,选择所述已转换内容的一个或多个页面,释放所述页面的内存并再次保护这些页面区域以防止被再次读取和写入;以及

(5)其中,通过使用LRU(近期最少利用)、LFU(最不频繁利用)或其他替换启发方式做出释放哪个页面的选择。

处理内存映射文件的备用方法

根据对基因组数据(及其替代物)的透明访问,使得它拦截可执行文件对虚拟文件的内存映射文件访问操作:

(1)其中,拦截对所述虚拟文件进行内存映射的系统调用,并通过首先确保已安装的虚拟文件系统是可以使用的(也许在临时目录中,此处的“确保”表示如果安装点尚不存在,则为虚拟文件系统自动创建所述安装点,以使其存在),并随后将内存映射操作重新引导到虚拟文件系统上的文件来进行处理。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:近距离放射治疗处置规划系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!