多媒体系统中高效传送数据流的系统方法

文档序号:7573538阅读:226来源:国知局
专利名称:多媒体系统中高效传送数据流的系统方法
技术领域
本发明涉及计算机化的多媒体服务器,具体地说,涉及这种系统中高效率地在各装置之间诸如从一个磁盘存储子系统至一个网络或图像解码卡传送数据流的技术。
多媒体系统通常涉及大量表示高密多媒体数据的数据流,它们必需以非常高的效率传送通过系统。一个有代表性的例子是“视频点播”服务系统。人们已经研究了各种方法,力图高效率地使数据通过这些系统。这些系统有许多用众所周知的Unix操作系统或其派生系统作为它们的操作系统,正如通常在那些实现多媒体内容投送系统的用户服务器环境中可以看到的那样。这种基于Unix的系统的固有严重不足之处是其中传送数据所采用的机制并没有如所需的那样在涉及非常复杂的多媒体数据流的系统中使效率最佳化。
下面将要详细说明的本发明的视频连接系统(video coupling system,vcs)提供了一种产生器/用户框架(producer/consumer framework),在这种Unix或其派生的内核环境以极高效率在产生器和用户装置之间传送数据。传统的方法需要将这样的数据从内核拷到用户空间,然后再拷回内核。此外,这类系统涉及大量的用于语境转换的CPU开销。对于驻留有多媒体数据、在避免拷贝数据以减少CPU开销而改善效率的零拷贝框架内起着产生器作用的多媒体文件系统(MMFS)来说,这样的MMFS必需在中断语境内在中断级为需传送的数据提供缓存器。然而,文件系统的操作(诸如与基于Unix的系统有关的那些)通常必需在过程语境而不是中断语境内运行,这是一个相当大的问题。
常规子系统进行高效率传送多媒体数据流信息所出现的其他一些问题,使本发明采取了相应的革新措施,包括在中断级寻找和锁定缓存器,向后台进程传送预取信息,以在中断级需要文件数据缓存器前预先加以领取,用并行写入器对文件进行串行化,以及更概括地说,提供在VCS框架内支持零拷贝的通用文件系统接口。
为了更完全地理解本发明的贡献和细节,首先对如

图1所示的多媒体系统中的基本组成和模块作概要说明是有益的。
按照本发明,“零拷贝”或图像连接系统“VCS”48用来在文件系统22与网络或图像解码卡之间传送数据而不必将数据从内核拷到用户空间。虽然这个VCS示于传统系统的图1中以便可以清楚地看到它是在哪个与这种系统配合的,但实际上反映了本发明的创新贡献的一个方面。这在下面将要详细说明。这样的包括文件系统、数据输出口、VCS和NAR的各个子系统的组合下面将更概括地总称为数据泵子系统14。
在针对上述问题的研究工作中,有人提出希望通过开发管理缓存器将数据从大容量存储器传送给用户装置的若干独立子系统来实现零拷贝机制。然而,这种方法是很有问题的,关系到将数据首先取入共享存储器的理由,例如是为了及时进行数据管理以提供在避免对数据进行拷贝和只用相应的CPU开销的情况下传送数据的高效机制。
在这些系统中,历来需要有效地将这个功能(管理共享数据)下放到各独立的特意设计的新模块去,而这些新模块本身尚需解决实现正确的数据共享问题。因此,迫切需要有一种机制使必需的控制和缓冲知识能够保留在原文件系统。这样,就可以有利地维持任何与现有文件系统中已经实现的数据控制和缓冲相应的策略。
本发明为多媒体服务器的文件系统提供了一种通用接口以改善数据流的吞吐。文件系统包括一个输出登记服务程序,用来为文件系统实现规定的一组零拷贝接口提供指示字。这些接口包括一个初始化服务程序,用来建立必需的数据结构和将使用计数置于对象上以免这些计数在进行零拷贝操作中被消掉。在零拷贝接口中还提供了一个终止服务程序,用来清理数据结构和除去使用计数。还有一个服务程序,用来验证所规定的文件是否适合零拷贝操作。再有一个服务程序用来发现和记录以后在中断级获取缓存器时所需的文件属性。一种数据结构规定成保持这些属性以备以后调用。有一个服务程序用来在中断级锁定一个缓存器和返回现存的数据量,并且还提供对这个缓存器在另一个地址空间语境的可寻址标志(addressability)。一种数据结构规定成保持这些缓存器属性以备以后调用。还有一个服务程序用来在中断级释放缓存器。最后,有一个服务程序用来提供有关文件访问模式变化的信息,这种信息会被诸如支持VCR功能所需要。
一种应用自动更新的单链接表的散列链用来使查找缓存器的操作在中断级安全地得到执行。对缓存器采用一种“比较后交换”的锁定形式,以使这种操作可以在中断级执行。实现一个适合在中断级使用的信箱接口,为后台进程提供预取和释放信息。这个接口代替了不能通过中断使用的诸如消息队列之类的标准IPC方法。为了处理正从磁带或其他外界装置输入一个文件同时又将这个文件发送给一个输出装置这样的“装入和播放”操作,锁定只对缓存器执行,而不是对文件和缓存器都执行。为了检测读出器是否赶上了写入器,在缓存器中提供的字节个数用作文件终了(EOF)指示。
采用了上述这些技术,在一般情况下可以为一个输出装置提供一个缓存器,而不需要进行数据拷贝和语境转换。然而,在锁定有冲突或缓存器不可得(如被挪用)的情况下,这里所描述的系统和方法也用来在过程语境内获取缓存器。在这种图像连接子系统(VCS)框架中,配置了一个内核过程用来再试在中断级运行失败的操作。由于某些操作需要多个步骤,而在失败前其中的一些步骤可能已经完成,因此录有附加状态信息,使得只再试执行剩下的需完成工作。
在本说明书的附图中图1为传统的多媒体数据流系统的功能方框图;图2为本发明的多媒体数据流服务器系统的方框图,较为详细地示出了图1中的一些组成部分和另外一些本发明的组成部分;以及图3是为实现本发明而在图2所示系统上执行的程序代码中实现的流程图。
参见图1,图中包括了零拷贝或VCS子系统48,以示出它的功能与一个更为传统的系统中的各组成部分的配合情况。前面所述的数据输出口18主要是用来建立磁盘驱动器26和文件系统22与诸如ADEC40那样的图像解码卡之间的连接。概括地说,输出口18提供以流水线方式对产生器和用户装置的互连。一旦连接建立,数据输出口18通过控制50至VCS48提供一个连接,用来通过VCS直接控制文件系统22和通信装置40之间的数据流动。
现在来看图2,图像连接子系统24(在图1中示为VCS48)的总体功能是以最佳方式控制多媒体文件系统(MMFS)、产生模块22和用户模块26之间的数据流动。用户模块例如可以是一个包括例如ADECNAR30和基本上处于流水线输出那一侧的相应ADEC适配卡40(见图1)的图像解码器。产生模块22例如参照图1可以是一个诸如可以部分体现在多个常用的磁盘驱动器或一个RAID阵列中的磁盘驱动系统26和文件系统22那样的存储子系统。产生模块22起着另一个可以是具有现有常用结构的诸如文件系统22那样的文件系统与VCS之间的中介作用。VCS本身有一组管理数据流动的接口,因此产生模块22实质上起着响应来自VCS24的请求对文件系统22进行相应调用以获得所请求的数据的中介作用。在图2中,大容量存储器10与图1中所示的磁盘驱动子系统26相应,而MMFS内核扩展16和MMFS Daemon18体现在图1的文件系统22内。
再来看图2,内核扩展16显然是处于在图1所示系统上执行的操作系统内核之中,而后台进程18在应用空间内执行。这说明了为什么控制流程是从VCS24到产生器模块22到内核扩展16再到后台进程18,VCS、产生器模块和内核扩展都在内核内,一直通达由应用空间中的后台进程18所代表的用户级。
本发明的基本目的是实现必需的多媒体数据传送而不需要对数据进行拷贝占用开销。已经知道,能够在不将数据取入存储器的情况下在各装置之间传送数据。有关技术的一个实例是“零拷贝”技术,可参见已发表的有关文献。在这种方法中,在总线上应用的装置之间有一些可用的协议,有利于装置之间数据的实际传送,而不必占用系统处理器或将数据取入存储器。
在图像服务器环境中,可能感兴趣的是将数据取入存储器,因为如果有两个用户希望播放同一个节目,那么这些多个请求可以用存储器中的单个拷贝来满足(然而如果在装置之间直接传送相同的数据,那么这数据就必需在物理上传送两次)。因此,在这个用户可以希望接入相同数据的图像服务器环境中,能够利用存储器的缓冲特性是有意义的。本发明的模型是基于这样的设想数据将取入存储器和希望得到单个数据拷贝,所选择的方案基本上是使文件系统22提供这单个拷贝。
文件系统传统上是在过程语境内运行的。在这个语境内,文件系统中传送数据的传统方式是从一个用户级程序对内核进行“读”系统调用,得到从盘读入一个内核缓存器的文件的特定数据范围,然后再将它拷贝到用户缓存器。另一方面,如果需要将数据写到网络上,那么就发出一个“写”系统调用,数据从用户存储器反向传送到内核,再从内核缓存器传送给网络装置。
本发明所研究的一个问题涉及图像连接子系统48可以支持的模型。具体地说,需要的是这样的一个系统,它能在Unix或Unix派生的环境(诸如IBM公司的AIX)TM(操作系统)内以能限制CPU开销和拷贝数据所占用的开销的方式进行操作。VCS在产生模块22和用户模块26之间执行的控制流程大都是在中断语境内发生的。然而,在Unix和Unix派生的操作系统的环境中,对能在中断环境(与文件系统在其中运行的过程语境不同)中执行的操作有着明显的限制。本发明的VCS24实质上是用一个完全在内核内执行数据传送的模型来代替传统的写模型。
在这一点上,可以用一个例子来说明采用本发明所提出的零拷贝方法传送数据的情况。一旦VCS24在产生模块22和用户模块26之间建立了一条流水线而开始传送数据流时,VCS就会向产生模块22发出一个请求,要求它取得一个数据缓存器。产生模块22于是接入文件系统22,执行查找,确定数据缓存器的位置,然后提供在内核语境对这个缓存器的可寻址标志,转给用户模块26。因此,不是实际拷贝数据,而是提供对数据的寻址基准。用户模块26在需要将数据传给一个象图1中的图像解码卡40那样的输出装置时,因此实际上就是访问文件系统22已经有的数据拷贝。
再来看图2,大容量存储器10、共享存储器12和用户装置14都分列在图2的顶上,以示出控制流程,例如在占用文件系统时,数据从大容量存储器10(或图1中的磁盘驱动子系统26)传入共享存储器12,而共享存储器12是由文件系统1 8管理的。图像连接子系统24向用户装置14提供一个在共享存储器12中对这数据的寻址基准。因此,我们最终得到共享存储器12中的一个拷贝,从而使数据从大容量存储器10传送给用户装置14。用户装置14在服务器上映射为本地装置,例如网络或图像解码器,再由它通过一个高速宽带ATM交换机之类在电缆上将数字数据或模拟数据分发给用户。
现在来看图3,其中示出了以在图2的系统上执行的程序代码实现本发明的流程图。具体地说,代码主要在产生模块22内执行。为了建立图3所解释的框架,VCS24和与它有关的各部分都是图2系统的操作系统的内核扩展,可动态装入。因此,在图像子系统启动后,产生模块22装入操作系统的内核,于是就发生了图3中的几个起动步骤。产生模块22装入后,就调入由内核扩展16提供的输出服务,这基本上是一个登记服务。产生模块22请求内核扩展16的服务指出该内核扩展16为了支持零拷贝功能所提供的各功能的相应地址。如步骤36所示,当过程开始和产生模块22装入后,就发生了上述在方框38所示的步骤,即登记内核扩展16所支持的文件系统零拷贝支持接口。
应该指出,本发明的一个重要特点是提供了支持这种零拷贝功能的一个通用接口。在另一种不大合意的方法中,可以专为特定的现有多媒体文件系统提供专用接口。然而,按照本发明,由于提供的是一组更为通用的内核服务,因此可由在零拷贝框架内的各种不同的文件系统加以利用。这些文件系统由产生模块22登记。具体地说,响应模块22的这个调用,内核扩展16向产生模块22返回一组功能描述符,使得产生模块22以后能对内核扩展16进行各种功能调用。上述步骤作为配置产生模块22的一部分。
图像连接子系统功能操作的下一阶段,如图3所示,在产生模块22实际受VCS24调用进行某些初始化和提供一些VCS要得到数据而需的参数(例如,在现有多媒体文件系统内的文件)时发生。因此,产生模块22将对它的数据结构进行某些初始化,并对传送给它的文件进行参数检验,以保证这文件实际是一个来自多媒体文件系统的多媒体文件而不是一个来自诸如杂志文件系统(JFS)那样的其他什么文件系统的文件。图3中的这个初始化和检验阶段40还表示产生模块22进行了进一步检验,以保证送至产生模块22的文件满足允许这文件参与零拷贝操作所需的任何其他准则。为执行零拷贝操作所传的一些参数包括文件中希望开始拷贝的偏移、所需数据长度等。因此,步骤40中的参数检验用来保证文件与希望得到数据所需的开始偏移和结束偏移等相对应。
再来看图3,在数据传送实际开始前,产生模块22将调入现有多媒体文件系统(具体是MMFS内核扩展16),提取有关以后将在这中断语境内允许数据从中检索数据的文件的信息。
如前面所述,通常在Unix或Unix派生的环境中,大多数文件系统操作,如从文件系统读出数据或将数据写入文件系统,都在过程语境内发生。要使数据可在文件系统内传送必需能获取进行传送所需的所有信息,例如有关文件、支持从中断语境传送数据的缓存器等的信息。诸如节点和间接块之类的相应数据结构传统上通常是在过程语境而不是在中断语境可访问的。参见图3,在步骤42执行的一个功能是录取进行数据传送必需的这些有关文件的属性,并在一文件句柄或其他适当指定的数据结构中保存下去,例如将这些属性保存下去,在系统要实际传送数据时,这些属性将允许从一个中断语境确定这样数据的位置。
在步骤42执行的另一个功能称为初始预取(initiating prefetch)。从产生模块22发送给内核扩展16的信息将向文件系统指出必需为待传送的文件准备好数据。在一个支持连续分发多媒体数据的多媒体文件系统中现有的一些特色和设计关键都可有益地用来支持本发明的在中断环境提供零拷贝机制的特色。具体地说,这种文件系统最好具有在用户装置14实际要求数据前能从大容量存储器10中检索出数据送至共享存储器12的能力。
记住了这点,就可以更好地理解步骤42的“初始预取”部分的意义。这初始预取实质上就是在实际开始将数据流发送给用户装置14前将文件的开始部分数据事先装入共享存储器12。与这预取有关的控制流是从产生模块22到内核扩展16再到后台进程18。正是这个后台进程18向大容量存储器发出I/O请求,于是预取的数据就被装入共享存储器12。在以后实际启动数据传送时,将从已经可以在共享存储器12中得到的这种预取数据处开始。
然后,在步骤44获取文件系统的下一个缓存器。在以下的几个步骤中,过程实质上进入一个循环,每个具有文件相应数据的缓存器得到传送,相继的这些缓存器将从产生装置传送到用户装置,直至所请求的数据全部得到传送。
因此,在图像连接子系统24指示系统已就绪,可以进行I/O(例如,马上就要进行从产生装置到用户装置的数据传送)时,VCS24将向产生模块22发送一个功能调用,于是产生模块22调入内核扩展16,以寻求一个特定的文件偏移来确定与这个文件系统相应的数据缓存器在共享存储器12中的位置。在用于这里所说明的优选实施例的一个特定Unix派生系统(例如AIX操作系统)中,提供了一个“交叉存储器描述符”,它允许可能在不同语境(例如无论是过程语境还是中断语境)中的不同程序片具有对存储器的同一部分的可寻址性。接收到文件描述和文件偏移描述后,内核扩展16仍必需检查多媒体文件系统数据结构,以确定共享存储器12中这些缓存器的哪一个缓存器与这个特定文件和文件偏移相应。一旦内核扩展16确定了这个,就提供上述交叉存储器描述符(例如对正确的缓存器的寻址基准),这个描述符返回传送到产生模块22,经VCS24最终传送给用户模块26。
于是,用户模块26就有了一个在共享存储器12内对正确的缓存器的寻址基准。现在可以将这基准传送给标准装置驱动器,无论是一个与网络关联的装置驱动器还是图像解码器,这种装置驱动器示于图2中的方框20。这样,装置驱动器20有了从用户模块26送来的对相应缓存器或存储器12相应部分的寻址基准,就可以进行诸如AIX DMA这样的标准操作或者其他本领域中众所周知的操作,使数据从共享存储器12传入用户装置14。
再看图3,在获取文件系统下一缓存器的方框44,产生模块22调入内核扩展16,必需非常谨慎地完成内核扩展在响应中断语境执行的操作。下面是本发明为此所采取的一个具体措施的较为详细的情况。本发明利用了一个应用可自动更新的单链接表的散列链,这可使查找缓存器的操作在中断级安全地执行。当从共享存储器获取了数据缓存器时,就对它加以锁定,用的是比较后交换的锁定形式,以与可能发生的其他文件系统操作串行。在一个中断语境,必需谨慎考虑所用的具体锁定形式。在所述措施中选择比较后交换的锁定形式是很有意义的,因为如在本技术领域内众所周知,这种锁定形式在内核扩展16所进行操作的中断语境内将是有效的。
需要对所述措施的另一个重要情况作进一步说明。由于文件空间本身在内核扩展16和用户空间的后台进程部分18之间是分离的,因此在这两个组成部分16、18之间需要有一种通信方法,它也是在中断语境内实现。然而,普通的一些过程间通信(IPC)方法(例如5号系统共享存储器)或其他标准的IPC机制(例如消息队列)只能在过程语境内或在过程级实现。因此,本发明规定组成部分16、18之间的通信形式采用能在中断级使用的信箱接口,使得内核扩展和后台进程之间的相互通信能在支持零拷贝的中断环境中进行,以向后台进程提供前面所提到的预取和释放信息。
一旦在步骤44中了获取一个缓存器,可能会出现在中断语境内不希望有的情况;过程要为文件数据获取一个缓存器,然而可能由于某个原因而使该缓存器不存在,还可能存在不能锁定这个缓存器的情况或可能存在一系列其他使获取缓存器操作在中断语境内不能成功的原因,从而取不到这个缓存器。在这种情况下,过程将转至较为传统的在过程语境获取缓存器。这样,在方框46所进行的测试如果表明在方框44所进行的获取文件系统下一个缓存器的操作不成功,则流程转至方框48。在方框48所表示的步骤中,同样的操作(为获取文件系统下一个缓存器)就会利用与普通的过程语境相对应的一些步骤来进行,确定占用哪个缓存器,得出对它的可寻址标志等。这样,在VCS内,提供了一个独立的内核过程,用来处理由于任何原因不能在中断语境执行的那些操作。
一旦下一个缓存器成功地获取后(无论是在方框44的中断语境,还是在方框48的普通过程语境),流程就进至方框50。此时,已经获取了缓存器,并且得到了从文件系统对它在共享存储器内的可寻址标志。方框50表示此后就将这个特定缓存器内的数据送至用户装置14。这实际上涉及将控制交还给VCS24,再转达用户模块26。应该记得,用户模块26有着对于需要从存储器12内传出的数据的交叉存储器描述符或寻址基准,因此能使用一个标准的AIX装置驱动器或在其他Unix系统的情况使用其他标准的装置驱动器来使数据从存储器12传向装置14。
一旦用户装置14将当前缓存器中的所有数据都传给了装置14,用户装置14就(通过一个中断或其他适当机制)通知装置驱动器20,向装置14传送当前缓存器这个操作已经完成。于是装置驱动器20再将这数据传送已经完成的消息通知用户模块26。用户模块26作为响应将控制交还给VCS24。再由VCS通知产生模块22,I/O(例如,从存储器12中的当前缓存器到装置14的数据传送)已经完成,系统已准备好进行其他缓存器传送。
因此,在图3的步骤52,用户装置14实际上已经完成了共享存储器12中的当前缓存器的传送。一旦作出了这个传送完成的通知,指示该缓存器正在使用的任何锁定或其他信息都必需更新,例如加以释放之类。此外,另一个预取消息于是从产生模块22通过内核扩展16的通路发送给后台进程18,以在用户装置14需要前进行下一个缓存器的预取(即在文件中将要传送的位置,逻辑上与上一次传入刚释放的缓存器内的数据相邻)。这样,系统就保持这样一种状态,在用户装置14需要以前数据就已存在共享存储器12内了。这种预取处理提高了服务质量,例如可以避免帧丢失。
再看图3,在方框54,进行检验,确定是否其他缓存器留有与文件对应的需传送数据。实际上,如果还没有达到数据的终端,过程就循环回方框44,重复前面结合方框46至54所说明的各个步骤。如果在方框54的测试表明所有这些数据都已传送,则过程在56结束,发出返回消息,表示数据传送已经完成。
虽然结合本发明的一些具体实施例对本发明作了说明,但熟悉本技术领域的人员可以理解,其中可以根据本发明的精神实质无论在形式上还是在细节上都能进行种种修改,因此都应属于本发明的专利保护范围。
权利要求
1.一种用于在多媒体数据流系统中用预先存在的文件系统支持对一个数据流文件执行零拷贝功能的方法,所述的多媒体数据流系统包括多个各支持一组零拷贝功能接口的不同现有文件系统中的一个现有文件系统、一个使一个产生模块和一个用户模块连接的VCS、一个与共享存储器连接的大容量存储装置、一个用户装置、一个多媒体文件系统后台进程和一个配置在所述用户装置和用户模块之间的装置驱动器;其特征在于所述方法包括下列步骤建立一个与所述多个不同现有文件系统相连的通用文件系统接口;以及调用所述通用文件系统接口,以实现从所述产生模块到所述用户模块的所述数据流的零拷贝传送。
2.如权利要求1所述的方法,其特征是所述建立一个通用接口的步骤包括下列步骤建立一个输出登记服务,使所述现有文件系统向所述产生模块登记并可由所述产生模块调用。
3.如权利要求2所述的方法,其特征是所述输出登记服务是一个多媒体文件业务的内核服务扩展。
4.如权利要求3所述的方法,其特征是所述输出登记服务产生对于所述输出登记服务、所述现有文件系统和对于所述零拷贝功能接口的各功能描述符。
5.如权利要求4所述的方法,其特征是所述方法还包括下列步骤从所述产生模块向所述输出登记服务发送一个功能调用,以得到所述产生模块可用来调用所述内核扩展的所述功能描述符。
6.如权利要求5所述的方法,其特征是所述方法还包括下列步骤用所述VCS调用所述产生模块,以使所述产生模块验证所述数据流文件是否符合所述零拷贝功能的要求。
7.如权利要求6所述的方法,其特征是所述验证步骤包括对数据结构进行初始化和检验与所述数据流文件相关的一些参数。
8.如权利要求7所述的方法,其特征是所述验证步骤包括下列步骤保证所述数据流文件是一个多媒体文件。
9.如权利要求8所述的方法,其特征是所述参数包括所述数据流文件的开始偏移、结束偏移和长度。
10.如权利要求9所述的方法,其特征是所述方法还包括下列步骤从所述产生模块调用所述内核服务扩展,以得到支持从中断语境传送数据的缓存器的标识,从而确定所述数据流在所述大容量存储装置内的位置并可在中断语境加以检索。
11.如权利要求10所述的方法,其特征是所述方法还包括下列步骤响应所述产生模块对所述内核服务扩展的所述调用,以录取所述数据流文件的属性。
12.如权利要求11所述的方法,其特征是所述方法还包括下列步骤从所述产生模块向所述内核服务扩展传送一个指示符,指明所述系统随时可以准备与所述数据流文件对应的需从所述大容量存储装置传送经所述共享存储器内缓存器的数据。
13.如权利要求12所述的方法,其特征是所述方法还包括下列步骤启动对与所述数据流文件对应的数据的初始预取。
14.如权利要求13所述的方法,其特征是所述初始预取是响应从所述后台进程发出的一个I/O命令,是在中断语境将数据从所述大容量存储装置取入所述共享存储器内的一个缓存器。
15.如权利要求14所述的方法,其特征是所述方法还包括下列步骤从所述VCS产生一个对所述产生模块的功能调用,指示所述系统已经随时可以进行从所述共享存储器内的所述缓存器到所述用户装置的I/O操作。
16.如权利要求15所述的方法,其特征是所述方法还包括下列步骤从所述产生模块产生一个对所述内核服务扩展的功能调用,以得到确定所述大容量存储装置中的所述数据的下一个缓存器的文件描述符和偏移。
17.如权利要求16所述的方法,其特征是所述方法还包括下列步骤由所述内核服务扩展检查所述多媒体文件系统,以确定响应所述I/O调用需向所述用户装置输出的所述共享存储器内一个正确的缓存器。
18.如权利要求17所述的方法,其特征是所述方法还包括下列步骤用所述内核服务扩展产生一个与所述正确缓存器相应的交叉存储器描述符。
19.如权利要求18所述的方法,其特征是所述方法还包括下列步骤将所述交叉存储器描述符从所述内核服务扩展依次传送到所述产生模块、到所述VCS、再传送到所述用户模块。
20.如权利要求19所述的方法,其特征是所述方法还包括下列步骤由所述驱动器接收所述交叉存储器描述符,以及由所述驱动器根据所接收的所述交叉存储器描述符将在所述共享存储器内的所述正确缓存器中的所述数据传送给所述用户装置。
21.如权利要求20所述的方法,其特征是所述方法还包括下列步骤检验确定所述数据流文件不适合在中断语境传送;以及根据所述检验,在过程语境从所述文件获取一个数据缓存器。
22.如权利要求21所述的方法,其特征是所述方法还包括下列步骤在所述内核扩展和所述后台进程之间建立一个在中断语境的信箱接口。
23.一种用于在一个多媒体数据流系统中用预先存在的文件系统支持对一个数据流文件执行零拷贝而功能的设备,所述多媒体数据流系统包括多个各支持一组零拷贝功能接口的不同现有文件系统中的一个现有文件系统、一个使一个产生模块和一个用户模块连接的VCS、一个与共享存储器连接的大容量存储装置、一个用户装置、一个多媒体文件系统后台进程和一个配置在所述用户装置和用户模块之间的装置驱动器;其特征是所述设备包括用来建立一个与所述多个不同现有文件系统相连的通用文件系统接口的装置;以及用来调用所述通用文件系统接口,以实现从所述产生模块到所述用户模块的所述数据流的零拷贝传送的装置。
24.如权利要求23所述的设备,其特征是所述建立一个通用接口的装置包括用来建立一个输出登记服务的装置使所述现有文件系统向所述产生模块登记并可由所述产生模块调用。
25.如权利要求24所述的设备,其特征是所述输出登记服务是一个多媒体文件业务的内核服务扩展。
26.如权利要求25所述的设备,其特征是所述输出登记服务产生对于所述输出登记服务、所述现有文件系统和对于所述零拷贝功能接口的各功能描述符。
27.如权利要求26所述的设备,其特征是所述设备还包括用来从所述产生模块向所述输出登记服务发送一个功能调用以得到所述产生模块可用来调用所述内核扩展的所述功能描述符的装置。
28.如权利要求27所述的设备,其特征是所述设备还包括用来用所述VCS调用所述产生模块以使所述产生模块验证所述数据流文件是否合符所述零拷贝功能的要求的装置。
29.如权利要求28所述的设备,其特征是所述验证装置包括用来对数据结构进行初始化和检验与所述数据流文件相关的一些参数的装置。
30.如权利要求29所述的设备,其特征是所述验证装置包括用来保证所述数据流文件是一个多媒体文件的装置。
31.如权利要求30所述的设备,其特征是所述参数包括所述数据流文件的开始偏移、结束偏移和长度。
32.如权利要求31所述的设备,其特征是所述设备还包括用来从所述产生模块调用所述内核服务扩展以得到支持从中断语境传送数据的缓存器的标识的装置,从而确定所述数据流在所述大容量存储装置内的位置并在中断语境加以检索。
33.如权利要求32所述的设备,其特征是所述设备还包括用来响应所述产生模块对所述内核服务扩展的调用以录取所述数据流文件的属性的装置。
34.如权利要求33所述的设备,其特征是所述设备还包括用来从所述产生模块向所述内核服务扩展传送一个指示符的装置,所述指示符指明所述系统随时可以准备与所述数据流文件对应的需从所述大容量存储装置传送给所述共享存储器内缓存器的数据。
35.如权利要求34所述的设备,其特征是所述设备还包括用来启动对与所述数据流文件对应的数据的初始预取的装置。
36.如权利要求35所述的设备,其特征是所述初始预取是响应从所述后台进程发出的一个I/O命令,是在中断语境将数据从所述大容量存储装置取入所述共享存储器内的一个缓存器。
37.如权利要求36所述的设备,其特征是所述设备还包括用来从所述VCS产生一个对所述产生模块的功能调用的装置,指示所述系统已经随时可以进行从所述共享存储器内的所述缓存器到所述用户装置的I/O操作。
38.如权利要求37所述的设备,其特征是所述设备还包括用来从所述产生模块产生一个对所述内核服务扩展的功能调用的装置,以得到确定所述大容量存储装置中的所述数据的下一个缓存器的文件描述符和偏移。
39.如权利要求38所述的设备,其特征是所述设备还包括用来由所述内核服务扩展检查所述多媒体文件系统以确定响应所述I/O调用需向所述用户装置输出的所述共享存储器内一个正确缓存器的装置。
40.如权利要求39所述的设备,其特征是所述设备还包括用来用所述内核服务扩展产生一个与所述正确缓存器相应的交叉存储器描述符的装置。
41.如权利要求40所述的设备,其特征是所述设备还包括用来将所述交叉存储器描述符从所述内核服务扩展依次传送到所述产生模块、到所述VCS、再传送到所述用户模块的装置。
42.如权利要求41所述的设备,其特征是所述设备还包括用来由所述驱动器接收所述交叉存储器描述符的装置;以及用来由所述驱动器根据所接收的所述交叉存储器描述符将在所述共享存储器内的所述正确缓存器中的所述数据传送给所述用户装置的装置。
43.如权利要求42所述的设备,其特征是所述设备还包括用来检验确定所述数据流文件不适合在中断语境传送的装置;以及用来根据所述检验在过程语境从所述文件获取一个数据缓存器的装置。
44.如权利要求43所述的设备,其特征是所述设备还包括用来在所述内核扩展和所述后台进程之间建立一个在中断语境的信箱接口的装置。
全文摘要
本发明为多媒体服务器的文件系统提供了一个通用接口以通过避免数据拷贝和语境转换来改善数据流吞吐量。该文件系统包括一个输出登记服务程序,用来提供指向文件系统实现规定的一组零拷贝接口的各功能指示字。这些接口包括一个用来建立必需的数据结构的初始化服务程序;用来验证所规定的文件是否适合零拷贝操作的另一些服务程序;用来在中断级锁定一个缓存器和返回现有的数据量的另一个服务程序;以及一个用来提供有关文件访问模式变化的信息的服务程序。
文档编号H04L29/06GK1184285SQ9712123
公开日1998年6月10日 申请日期1997年10月30日 优先权日1996年12月2日
发明者丹尼尔·劳埃德·麦克纳布, 斯科特·林恩·波特, 詹姆斯·克里斯托弗·怀利 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1