CN1497448A - 在操作系统内核环境中高速缓存应用数据的系统和方法 - Google Patents
在操作系统内核环境中高速缓存应用数据的系统和方法 Download PDFInfo
- Publication number
- CN1497448A CN1497448A CNA031587933A CN03158793A CN1497448A CN 1497448 A CN1497448 A CN 1497448A CN A031587933 A CNA031587933 A CN A031587933A CN 03158793 A CN03158793 A CN 03158793A CN 1497448 A CN1497448 A CN 1497448A
- Authority
- CN
- China
- Prior art keywords
- data
- cache object
- cache
- data sources
- amount
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实现了一种独立于应用的内核高速缓存。该内核高速缓存可快速有效地为应用提供常用数据。利用操作系统提供的机构,实现了用于存储内容、高速缓存对象的方法和设备。每种操作系统都具有一个或多个内核扩展可用的内核存储的专用装置。实现了一种为高速缓存对象获得存储的系统。定义了可允许多个不同数据的源的技术。通过使用多种协议,多个数据源可提供专用于应用和/或独立于应用的数据。上述高速缓存对象存储机构独立于数据源,反之亦然。定义了用于快速查找和管理高速缓存对象的技术。实现了用于将数据从数据源移动到高速缓存对象存储机构的机构。
Description
发明领域
本发明通常涉及操作系统,且具体涉及在操作系统内核环境中高速缓存应用数据。
发明背景
高速缓存已应用于计算机科学的许多领域,它完全与字典中作出的“用于隐藏或存储事物的安全场地”的定义一致(如参见Webster’s New World Dictionary of the American,2nd collegeed.1976)。处理器可具有多种级别的高速缓存(cache)(参见Hennessy,John and David A Patterson,
Computer Architecture A Quantitative Approach 2nd ed.San Francisco:Morgan Kaufmann,1996,p.375),而一些文件系统也能具有高速缓存(参见Solomon,David and Mark Russinovich,
Inside Microsoft Windows 2000 3rd ed.Redmond:Microsoft Press,2000,p.646)。诸如HTTP服务器(Fielding,R.,et al.,
RFC 2068,1997,p.70,http://www.ietf.org/rfc/rfc2068.txt)的应用(application)也可具有高速缓存。还存在有更多例子。一些应用甚至在操作系统内核中具有应用专用的高速缓存(Hu,Elbert,et al.,“Adaptive Fast PathArchitecture”,IBM Journal of Research and Development,March2001,p.191-206)。术语“内核”通常指运行在特权模式中的那部分操作系统;它是操作系统实现基本功能和服务的重要部分。
然而,迄今为止,据了解还不存在任何一种独立于数据的源的、通用操作系统内核环境的高速缓存。这样,就产生了克服这种缺陷的需求。
发明内容
根据本发明至少一个现有优选实施例,本发明广泛考虑了一种既能高速缓存专用于应用的数据,又能高速缓存独立于应用的数据,并基本上通过任何应用协议来传递这些数据的通用操作系统内核的高速缓存。数据可来自多个源,并可使用多个内核专用机构(mechanism)将其存储在内核高速缓存中。本发明还广泛考虑了用于管理该高速缓存的系统。
总之,一方面,本发明提供一种用于在操作系统内核环境中高速缓存应用数据的系统,该系统包括:用于创建至少一个高速缓存对象的装置,该高速缓存对象用于在内核环境中存储所缓存的内容;至少一个用于查找至少一个高速缓存对象的装置;和用于从多个数据源收集数据并将所收集的数据赋予至少一个高速缓存对象的装置。
另一方面,本发明提供了一种在操作系统内核环境中高速缓存应用数据的方法,该方法包括以下步骤:创建至少一个用于在内核环境中存储所缓存内容的高速缓存对象;查找至少一个高速缓存对象;以及从多个数据源收集数据并将所收集的数据赋予至少一个高速缓存对象。
此外,又一方面,本发明提供了一种可被机器读取的程序存储装置,具体包括可被机器执行的指令程序,以执行在操作系统的内核环境中高速缓存应用数据的方法步骤,所述方法包括如下步骤:创建至少一个用于在内核环境中存储所缓存内容的高速缓存对象;查找至少一个高速缓存对象;以及从多个数据源收集数据并将所收集的数据赋予至少一个高速缓存对象。
为更好地理解本发明以及其他更多特征和优点,下面将结合附图,详细描述本发明,同时将在所附权利要求中给出本发明的范围。
附图说明
图1的框图表示一运行环境;
图2的示例图表示以示例说明的不同对象及其指针;
图3的框图表示多个模块与对象之间的交互;
图4的示图表示用于高速缓存对象的存储器划分和指针;
图5的示图表示用于数据源的存储器划分和指针;
图6的框图表示在对象与模块之间关于数据请求的通信;
图7的框图表示各种内核组件;
图8的框图表示文件数据源和与之相关联的内核组件之间的通信;
图9的框图表示HTTP数据源和与之相关联的内核组件之间的通信;
图10的框图表示用户空间与内核空间之间的通信。
具体实施方式
通常,本发明至少一个现有优选实施例涉及用于构建高性能网络服务器的内核运行环境。本发明的一个方面涉及一种N源内核高速缓存(NICache,N-source In-kernel Cache)。NICache使得一个或多个应用(application)有可能为获得高性能而对操作系统进行扩展。这里所述的通过NICache增强的应用为自适应快速路径体系结构(AFPA,Adaptive Fast Path Architecture)。AFPA是一种为来自多个分散源的数据提供服务的内核网络服务器加速器。应该将其理解为,NICache不是一个独立的应用,它必须为一个或多个应用所使用。
下面将给出本发明所用一些术语的具体定义。
“回调函数(callback function)”,可将其理解为一种指向不连续编码的指针(reference),即,所指定的并且在以后所需某一时刻被调用的函数。对于由于一事件而希望调用函数或不想同时调用多个函数的程序员,通常使用这种技术。例如,当信号发生时,信号处理程序会执行由程序员编写的函数。
“散列表(hash table)”,可将其理解为程序员用于存储数据的一种数据结构。散列表提供了对表中元素快速直接的寻址(addressing),而不必使用足够存储一组K元素的存储机构。散列表通常对每一数据元素应用一种函数(一般称之为散列函数)以确定对表的索引。散列表通常长度是固定的。
“链表(linked list)”,可将其理解为程序员用于存储数据的一种数据结构。链表线性地存储数据,通常从表的前端或后端进行访问。链表长度不固定且易于增加。检索链表所需的时间量通常随表中项的数量线性地增加。
下面将描述本发明的优选实施例,如图1所示,本机内核环境(native kernel environment)110可包括通常对用户级应用隐藏的操作系统的地址空间、执行文本、安全属性等。本机内核环境将实现用户空间中的应用可用的服务,并可为写入内核扩展提供服务。
术语“本机(native)”,用于对“内核环境”进行限制,专指一具体内核环境。例如,AIX,Linux和Windows操作系统都具有截然不同的本机内核环境。这种不同性是由于它们都具有专用的一组用于写入子系统(如网络适配器驱动器,视频驱动器,或内核扩展)的应用接口(API)。Windows在其本机内核环境中提供数百个API。AIX和Linux各具有不同的API。此外,在文件系统与TCP/IP子系统如何交互方面,这些操作系统之间的运行环境也有所不同。
N源内核高速缓存(NICache)130使用这些API作为内核扩展。通常将NICache与一个或多个应用120一起使用,或在一个或多个应用120内使用。一个应用,无论其目的如何,也在本机内核环境110中运行。在本发明一优选实施例中,HTTP服务器加速器是所述应用,NICache与该应用相链接。即,不能将NICache作为独立的执行单元在该应用外执行。应用本身可具有多个执行单元,包括运行在用户空间中的扩展。应用扩展140最好不运行在本机内核环境中而运行在用户空间中。
应用扩展140可以是HTTP服务器的一部分,HTTP服务器可基于所接收到的HTTP请求来产生动态内容。对于应用,将服务器划分为内核和用户部分是有利的。这种方法允许服务器写入器拾取和选择服务器的哪些部分需要在用户空间中,哪些部分需要在内核中。例如,由于CGI需要用户空间保护,因而HTTP服务器总是希望在用户空间运行客户通用网关接口(CGI)请求,而不是在内核中。
在本发明的优选实施例中,应用处理包括GET,HEAD和POST请求的HTTP请求。如果高速缓存中存在一响应,那么该请求是从内核被提供的。然而,如果HTTP请求是对动态内容的请求(如CGI请求),那么它将由应用扩展140来处理。应用扩展执行需要用户空间执行环境(context)的任何部分请求。
NICache 130对其相关(accompanying)应用120提供API。所有到API的调用通过高速缓存对象管理器210(如图2所示)。在图2中,高速缓存对象管理器210最好代理到NICache的所有调用(call),以及管理所有的内部组件和逻辑。为了最优地实现其功能,高速缓存对象管理器可查询260诸如物理存储器利用(utilization)或CPU利用之类的机器硬件状态。它还可查询260本机内核环境的状态,即非分页池(non-paged pool)的使用和空闲页数描述符的数量。
所缓存的内容是NICache为应用高速缓存的数据。更具体说,它是应用所需的要保存在易于检索(retrieve)数据的系统中的数据。这种数据可以为任何源生成的任何格式,如ASCII或二进制。对缓存内容的限制是本机内核环境的限制。每一部分数据由其源而确定。这些源可包括来自用户级程序的输出,对HTTP GET请求作出的响应,或本地或远端文件的内容。高速缓存内容存储在高速缓存对象230,231,232中。高速缓存对象是使用专用内核机构存储和缓存所需数据的结构和程序。这些机构可包括文件系统高速缓存,插针存储器(pinned memory),或可分页存储器以及表示多个高速缓存对象的类型和类。可将每个高速缓存对象与应用可能提供的描述符或检索键相关联。
为了保持和定位高速缓存内容,高速缓存对象管理器210使用任意一个容器数据结构220。这些容器最好以各自特定的方式保存指向高速缓存对象230的指针。例如,容器可包括链表221,散列表220,二叉树,或数组。链表容器221最好具有指向双向链表头部高速缓存对象的指针250。散列表容器220具有指向散列表中存储的所有高速缓存对象的指针270。必须将指向每个高速缓存的指针存储在至少一个容器中。对于哪些容器保持哪些高速缓存对象,高速缓存对象管理器210最好具有惟一的判断。可基于数据源,系统资源的使用量,或其他标准,将其他容器用于对高速缓存对象分类。
每个高速缓存对象最好与单个数据源相联系。数据源描述了高速缓存对象的数据来自何处,后面将对数据源做详细描述。数据源代表高速缓存对象与本机内核环境110进行通信215,225,235。为了对其数据源240,241,242进行定位,每一高速缓存对象230,231,232最好保持指向该数据源的指针280。同样,该数据源具有指回高速缓存对象的指针290。
NICache 130最好可同时支持任何类型的任意多个高速缓存对象。此外,NICache 130可同时支持来自多个源的数据。从任何源都可对任何类型的高速缓存对象赋值(populate)。例如,将其内容存储在插针存储器中的高速缓存对象,可从本地文件接收内容,或可从HTTP响应来接收内容。为清楚起见,高速缓存对象存储高速缓存的内容。数据的源识别出那些内容来自何处,并且被配置用于检索该内容。每个高速缓存对象都与单个数据源相关联,反之亦然。对于哪种类型的高速缓存对象能与哪种类型的数据源相配最好不要有任何限制,反之亦然。
下面,如图3所示,NICache 130通常可对来自一个或多个应用120的请求作出响应。作为高速缓存,NICache 130响应查找/查寻310,存储/创建350和去除/删除380的请求。对于高速缓存对象操作的所有请求,诸如上述的请求,最好是被发送到高速缓存对象管理器210中。高速缓存对象管理器210最好管理所有高速缓存对象,从而处理所有外部请求。当应用120需将数据缓存时,它最好向NICache130发送创建命令,并将指向数据源的指针传给它(尽管不是数据)。基于数据源中的字段,收集260的关于系统当前状态以及NICache当前状态的信息,高速缓存对象管理器210最好确定出使用那种存储机构来存储数据(即使用高速缓存对象的类型)。确定出高速缓存对象类型之后,最好创建360该类型的高速缓存对象330,并在一个或多个适当的容器220,221中存储361,362指向该高速缓存象的指针。将指向最新创建的高速缓存对象的指针返回370给应用120。
相反,当应用120打算从高速缓存中移除内容时,它最好向NICache130启动调用通过传递(pass in)指向所要移除的高速缓存对象的指针来删除380该高速缓存对象。高速缓存对象管理器210通过调用在任何包含指向该高速缓存对象指针的容器220,221上的移除程序390,391,而后向高速缓存对象330发送删除命令,来处理来自应用120的请求380。最好是该高速缓存对象将清除它正使用来存储高速缓存内容的任何易失性和非易失性存储器(storage)。实现这些操作之后,高速缓存对象管理器210最好删除被高速缓存对象数据结构本身所使用的所有易失性存储器。
当应用需要在高速缓存NICache 130中存储的数据时,最好基于标识符对高速缓存对象发出查找请求310。在本发明的示例性实施例中,这种标识符包括HTTP统一资源标识符(URI,UniversalResource Identifier)(Berners-Lee,T.,et al.,
RFC 1945,1996,http://www.ieft.org/rfc/rfc1945.txt)。如果高速缓存对象处于至少NICache的容器其中的一个中,则将其返回312到应用120。在本实施例中还包括“快速检索容器”的概念——其为一种容器,在这种容器中在固定时间内完成对标识符的查找,且该高速缓存对象知道如何定位这种容器。为此,NICache的优选实施例使用散列表220。当然,高速缓存对象管理器向这种快速容器发送查找调用320来查找在该标识符下存储的数据。一旦定位,该容器将向高速缓存对象管理器210返回340高速缓存对象,而高速缓存对象管理器210向应用返回高速缓存对象(或未找到)。这些操作可同步进行,或可异步进行。
NICache 130的优选实施例包括作为容器221,220两者之一的链表容器221。最好使用加权的最近最少使用的(LRU,LeastRecently Used)算法对该链表进行分类。每次将高速缓存对象作为查找请求310的结果返回时,最好将该高速缓存对象移到该链表的头部。这会确保将最近最少访问的高速缓存对象逼近该表的尾部。例如在资源有限的环境中,当必须将高速缓存对象从高速缓存移除时,这些信息将会有用。
高速缓存对象多个不同的类会导致高速缓存对象多个不同的实现方式;然而,所有高速缓存对象都通常需要具有某些部分。如图4和图5所示,在高速缓存对象需要通知高速缓存对象管理器数据的源已被移除从而高速缓存对象本身也必须被移除的情况下,最好保持指向高速缓存对象管理器210的指针450。元数据结构410最好具有描述这种高速缓存对象的信息。在此将找到生成网络协议头所需的信息。每个高速缓存对象最好包含有指向单个元数据的指针。同样,每个高速缓存对象最好保持指向利用420的指针,该利用420描述了与其相应的高速缓存对象230的系统资源利用。高速缓存对象最好包含指向一列被包含的高速缓存对象430的指针。当应用请求用于高速缓存对象的数据时,则将来自被包含的高速缓存对象的数据以及原始高速缓存对象的数据一起返回。被包含的高速缓存对象结构430可包含用于发送被包含的高速缓存对象数据的规则,如排序。高速缓存对象的专用类型部分(type-specific portion)430最好包含高速缓存对象使用的任意和所有数据与指针以以定义类型的方式保持缓存内容。数据源240可保持指向各自高速缓存对象230的指针290,反之亦然。图4和图5显示出这种联系。
除指向高速缓存对象的指针290外,每个数据源最好还保存有数据的大小(若有的话)和数据到期的时间(若有的话)。在数据源240的专用类型510部分中最好包含有对数据源专用的信息和如何从源检索内容的信息。
下面如图6所示,当应用120准备从高速缓存对象230提取信息时,它最好发出对数据的请求610,该请求可选择性地包括偏移量和长度。在NICache该优选实施方式中,当需要内容以发送到客户机时,应用将仅发送这种请求610。此外,高速缓存对象不会预填充该内容。因此,当对数据的请求610传到高速缓存对象时,可能数据不存在(即未存储在高速缓存对象内)。如果数据存在的话,则该高速缓存对象立即将内容返回620。然后,基于高速缓存对象的所包含的高速缓存对象结构430的规则,高速缓存对象可将请求620转发到被包含的高速缓存对象。如果在高速缓存对象中内容不存在的话,则调用610以未定状态编码返回,并且该高速缓存对象向其数据源启动调用来请求数据,该调用可选择地包括偏移量和长度。当数据源已具有来自源的请求的信息时,就立即将请求630返回,从而将数据传回到应用120。然而,在一些情况下,数据源必须经由内核机构来接触615数据的源以取得数据的最新副本。在这种情况下,高速缓存对象的调用630被返回以未定(pending)状态编码,而数据源等待源返回数据。一旦数据源接收到高速缓存对象所需的一些或所有内容,就将数据回调640给高速缓存对象,并使高速缓存对象将数据返回620给应用120。对于单次到数据源的请求630可调用多次高速缓存对象回调640。这种双层异步接口可防止应用和高速缓存对象处于等待。这允许应用120在中断级或较高中断请求级(IRQL)提交对数据610的请求。
如上所述,数据源与本机内核环境110进行通信以获取最新数据的副本,如附图标记615所示。图7重点讲述在本机内核环境110中的不同子组件。尽管在操作系统之间其名称以及可能的分组会有所不同,但这些组件都以各自的特性在商业操作系统如AIX,Linux和Windows中存在。NICache可能会使用多个这样的组件。
文件系统710是处理向非易失性存储器和非易失性存储器传输数据的操作系统的一部分。该存储器可以是位于同一物理机器中的物理或逻辑的磁盘驱动器,或位于通过网络相连的物理或逻辑的磁盘驱动器。可将来自这些文件的数据赋予高速缓存对象。NICache数据源可使用这些文件系统的API进行通信,以创建文件,打开文件,检索文件句柄(handler),读取数据和写入数据。图8显示出在示例性实施例中文件数据源800如何向文件系统710发送文件打开请求810,以及如何返回文件句柄820。
存储器管理器720是一组负责分配、解除分配和管理虚拟存储器, 解析硬件存储器异常和管理页表(参见Solomon andRussinovich,supra,p.380)的系统服务。为了满足高速缓存对象的索取数据(Get Data)请求630,数据源可能需要分配725存储器(插针存储器,非分页池等)或访问共享存储器。
内核的网络栈(stack)730通常通过网络发送和接收数据,详细解释请参见W.Richard Stevens,TCP/IP Illustrated,Volume 1 TheProtocols Addison-Wesley,1994。数据源可通过与网络栈730的交互735来获取其数据。图9表示在NICache的示例性实施例中HTTP数据源900利用内核的网络栈730向HTTP服务器发送HTTP请求910(参见Berners-Lee,T..et al.,RFC1945,1996,http://www.ietf.org/rfc/rfc1945.txt)。对这些HTTP请求的响应以数据流920的形式被路由返回到HTTP数据源900。基于其他网络协议需使用网络栈730可创建多个数据源。
进程和线程740是指运行在与NICache相同的机器上但在不同的范围(context)的程序。通过由本机内核环境110提供的内部进程通信机构,数据源可与另一进程或线程通信745。
图10显示一类数据源与另一执行程序或线程1030的交互,在示例性实施例中该类数据源为User Level Data Source 1000。数据请求1010和含有数据的响应1020通过用于内部进程通信的内核机构来通信,该内核机构包括套接字、数据流、共享存储器、信令或管道。
应该理解,根据至少一个现有优选实施例,本发明包括,用于创建至少一个用于在内核环境中存储所缓存内容的高速缓存对象的装置,至少一个用于查找至少一个高速缓存对象的装置,和用于从多个数据源收集数据并将所收集的数据赋予至少一个高速缓存对象的装置。综合起来,可在至少一台运行适合的软件程序的通用计算机上实现这些组件。也可以在至少一块集成电路或至少一块集成电路的部分上实现这些组件。从而,应当理解本发明可以以硬件、软件,或在二者的组合来实现。
如果不另外声明,则认为此处提到和引用的所有专利,专利申请,专利公开和其他出版物(包括基于Web的出版物),在此全部引作参考。
尽管在此参照附图描述了本发明说明性的实施例,但应该理解本发明不限于那些具体的实施例,本领域技术人员在不脱离本发明的范围或精神的条件下可进行各种其他修改和变化。
Claims (47)
1.一种用于在操作系统的内核环境中高速缓存应用数据的系统,所述系统包括:
用于创建至少一个用于在内核环境中存储所缓存内容的高速缓存对象的装置;
至少一个用于查找至少一个高速缓存对象的装置;和
用于从多个数据源收集数据并将所收集的数据赋予至少一个高速缓存对象的装置。
2.如权利要求1所述的系统,其中至少一个高速缓存对象适合于采用至少一种专用于操作系统的存储机构。
3.如权利要求2所述的系统,其中至少有一种存储机构与以下二者至少之一相对应:独立的高速缓存对象类型和独立的高速缓存类。
4.如权利要求1所述的系统,其中所述系统专门管理和控制至少一个高速缓存对象。
5.如权利要求4所述的系统,还包括用于使至少一个高速缓存对象的处理适用于专用操作系统环境的装置。
6.如权利要求5所述的系统,其中所述使至少一个高速缓存对象处理适用的装置被配置用于基于以下至少一项使至少一个高速缓存对象的处理适用:已用可分页存储器量;可用的空闲可分页存储器量;系统中可分页存储器总量;内核中可分页存储器总量;已用非分页存储器量;可用的空闲非分页存储器量;系统中非分页存储器总量;内核中非分页存储器总量;已用的系统页表表项数;可用系统页表表项数;分配到系统页表的虚拟存储器量;系统高速缓存的大小;在系统高速缓存中可用空间量;在系统高速缓存中已用空间量;系统工作组的大小;已用系统缓冲器数量;可用系统缓冲器数量;系统缓冲器数量;页大小;建立的网络连接数;一个或多个中央处理器(CPU)的利用;分配的工作线程数;空闲工作线程数;忙碌的工作线程数;分配的高速缓存对象数;在内核中花费CPU时间的百分数;每时间单位系统中断数;每时间单位页出错数;每时间单位在系统中的页出错数;每时间单位分页池分配的数量;每时间单位非分页池分配的数量;旁视表的长度;打开文件描述符数;一个或多个磁盘上可用空间量;和在中断级以及其他已知较高的中断请求级所花费时间的百分数。
7.如权利要求1所述的系统,其中所述至少一个用于查找至少一个高速缓存对象的装置包括至少一个数据结构。
8.如权利要求7所述的系统,其中所述至少一个数据结构由所述系统来控制。
9.如权利要求8所述的系统,其中所述至少一个数据结构包括以下至少一个:至少一个散列表、至少一个链表、至少一个树、至少一个堆栈和至少一个队列。
10.如权利要求1所述的系统,还包括存储有关多个数据源详细信息的易失性存储器。
11.如权利要求10所述的系统,其中至少一个高速缓存对象利用所存储的多个数据源的详细信息适于与多个数据源保持一致。
12.如权利要求1所述的系统,其中将至少一个高速缓存对象的任何分类与多个数据源任何分类的一个相关联。
13.如权利要求12所述的系统,其中用于存储来自多个数据源的数据的任何装置独立于存储有关多个数据源的详细信息的任何装置。
14.如权利要求13所述的系统,其中多个数据源独立与至少一个高速缓存对象。
15.如权利要求1所述的系统,其中来自多个数据源的数据是应用专用的。
16.如权利要求1所述的系统,其中来自多个数据源的数据独立于应用。
17.如权利要求1所述的系统,还包括用于删除至少一个高速缓存对象的装置。
18.如权利要求1所述的系统,还包括用于在对至少一个高速缓存对象赋值期间允许将来自多个数据源的数据发送到客户机应用的装置。
19.如权利要求1所述的系统,其中客户机应用负责以下至少一个:任何对请求参数的必要分析;产生多个数据源提供的之外的、任何必需的专用于应用的响应数据;选择至少一个数据的类型;和产生多个数据源。
20.如权利要求1所述的系统,其中多个数据源包括以下至少一个:文件系统;HTTP服务器;和用户级应用。
21.如权利要求1所述的系统,还包括用于根据请求返回所缓存内容的装置。
22.如权利要求21所述的系统,其中使所述返回缓存内容的装置适合于根据请求返回至少一个高速缓存对象的数据。
23.如权利要求21所述的系统,其中使所述返回缓存内容的装置适合于使用高速缓存对象返回至少一个被包含的高速缓存对象的数据。
24.一种在操作系统的内核环境中高速缓存应用数据的方法,所述方法包括以下步骤:
创建至少一个用于在内核环境中存储缓存内容的高速缓存对象;
查找至少一个高速缓存对象;和
从多个数据源收集数据并将所收集的数据赋予至少一个高速缓存对象。
25.如权利要求24所述的方法,其中所述的创建步骤包括创建至少一个适用于采用至少一个专用于操作系统的存储机构的高速缓存对象。
26.如权利要求25所述的方法,其中至少一个存储机构与以下至少一个相对应:独立的高速缓存对象类型和独立的高速缓存对象类。
27.如权利要求24所述的方法,其中所述系统专门管理和控制至少一个高速缓存对象。
28.如权利要求27所述的方法,还包括使至少一个高速缓存对象的处理适用于专用操作系统环境的步骤。
29.如权利要求28所述的方法,其中所述使至少一个高速缓存对象的程序适用的步骤包括基于以下至少一项使至少一个高速缓存对象的处理适用:已用可分页存储器量;可用的空闲可分页存储器量;系统中可分页存储器总量;内核中可分页存储器总量;已用非分页存储器量;可用的空闲非分页存储器量;系统中非分页存储器总量;内核中非分页存储器总量;已用的系统页表表项数;可用系统页表表项数;分配到系统页表的虚拟存储器量;系统高速缓存的大小;在系统高速缓存中可用空间量;在系统高速缓存中已用空间量;系统工作组的大小;已用系统缓冲器数量;可用系统缓冲器数量;系统缓冲器数量;页大小;建立的网络连接数;一个或多个中央处理器(CPU)的利用;分配的工作线程数;空闲工作线程数;忙碌的工作线程数;分配的高速缓存对象数;在内核中花费CPU时间的百分数;每时间单位系统中断数;每时间单位页出错数;每时间单位在系统中的页出错数;每时间单位分页池分配的数量;每时间单位非分页池分配的数量;旁视表的长度;打开文件描述符数;一个或多个磁盘上可用空间量;和在中断级以及其他已知较高的中断请求级所花费时间的百分数。
30.如权利要求24所述的方法,还包括:
提供至少一个数据结构;
其中所述查找至少一个高速缓存对象的步骤包括利用所述至少一个数据结构来查找至少一个高速缓存。
31.如权利要求30所述的方法,其中所述至少一个数据结构由所述系统控制。
32.如权利要求31所述的方法,其中所述至少一个数据结构包括以下至少一个:至少一个散列表、至少一个链表、至少一个树、至少一个堆栈和至少一个队列。
33.如权利要求24所述的方法,还包括为存储有关多个数据源的数据信息而提供易失性存储器的步骤。
34.如权利要求33所述的方法,其中至少一个高速缓存对象利用所存储的多个数据源的详细信息来与多个数据源保持一致。
35.如权利要求24所述的方法,其中将至少一个高速缓存对象的任何分类与多个数据源任何分类的一个相关联。
36.如权利要求35所述的方法,其中用于存储来自多个数据源数据的任何装置独立于存储有关多个数据源详细信息的任何装置。
37.如权利要求36所述的方法,其中多个数据源独立于至少一个高速缓存对象。
38.如权利要求24所述的方法,其中来自多个数据源的数据是应用专用的。
39.如权利要求24所述的方法,其中来自多个数据源的数据独立于应用。
40.如权利要求24所述的方法,还包括提供用于删除至少一个高速缓存对象的装置的步骤。
41.如权利要求24所述的方法,还包括在对至少一个高速缓存对象赋值期间允许将来自多个数据源的数据发送到客户机应用的步骤。
42.如权利要求24所述的方法,其中客户机应用负责以下至少一项:任何对请求参数的必要分析;产生由多个数据源提供之外的、任何必需的专用于应用的响应数据;选择至少一个数据的类型;和产生多个数据源。
43.如权利要求24所述的方法,其中多个数据源包括以下至少一个:文件系统;HTTP服务器;和用户级应用。
44.如权利要求24所述的方法,还包括根据请求返回所缓存内容的步骤。
45.如权利要求44所述的方法,其中所述返回所缓存内容的步骤包括根据请求返回至少一个高速缓存对象的数据。
46.如权利要求44所述的方法,其中所述返回所缓存内容的步骤包括使用高速缓存对象返回至少一个被包含的高速缓存对象的数据。
47.一种可被机器读取的程序存储装置,具体包括有可被机器执行的指令程序,以执行在操作系统的内核环境中高速缓存应用数据的方法步骤,所述方法包括如下步骤:
创建至少一个用于在内核环境中存储所缓存内容的高速缓存对象;
查找至少一个高速缓存对象;以及
从多个数据源收集数据并将所收集的数据赋予至少一个高速缓存对象。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/260,803 | 2002-09-30 | ||
US10/260,803 US7155571B2 (en) | 2002-09-30 | 2002-09-30 | N-source in-kernel cache for high performance in computer operating systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1497448A true CN1497448A (zh) | 2004-05-19 |
CN1295621C CN1295621C (zh) | 2007-01-17 |
Family
ID=32029783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031587933A Expired - Fee Related CN1295621C (zh) | 2002-09-30 | 2003-09-24 | 在操作系统内核环境中高速缓存应用数据的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7155571B2 (zh) |
JP (1) | JP3882923B2 (zh) |
KR (1) | KR100532337B1 (zh) |
CN (1) | CN1295621C (zh) |
TW (1) | TWI243331B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102122256A (zh) * | 2011-03-28 | 2011-07-13 | 中国人民解放军国防科学技术大学 | 一种用于进程间通信的管道式通信方法及系统 |
CN101848203B (zh) * | 2004-07-14 | 2011-08-31 | 国际商业机器公司 | 用于从网络适配器向主机系统传送数据的方法和系统 |
CN102770853A (zh) * | 2009-12-23 | 2012-11-07 | 思杰系统有限公司 | 用于在多核系统中管理大型高速缓存服务的系统和方法 |
CN103297490A (zh) * | 2012-01-27 | 2013-09-11 | 富士通株式会社 | 信息处理装置、分布式处理系统和分布式处理方法 |
CN103631564A (zh) * | 2012-08-27 | 2014-03-12 | 三星电子株式会社 | 保护被高速缓存盘的数据完整性的方法 |
CN105612525A (zh) * | 2013-08-12 | 2016-05-25 | 思科技术公司 | 针对应用安全性的二进制转换和随机化系统 |
CN105861508A (zh) * | 2016-06-21 | 2016-08-17 | 南京农业大学 | 一种疫霉诱导性人工合成启动子pmp2及其重组表达载体和应用 |
CN107111581A (zh) * | 2015-01-19 | 2017-08-29 | 微软技术许可有限责任公司 | 存储器描述符列表高速缓存和管道处理 |
CN112948336A (zh) * | 2021-03-30 | 2021-06-11 | 联想凌拓科技有限公司 | 数据加速方法及缓存单元、电子设备及存储介质 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040167961A1 (en) * | 2003-02-26 | 2004-08-26 | Microsoft Corporation | Fragment response cache |
US7590620B1 (en) * | 2004-06-18 | 2009-09-15 | Google Inc. | System and method for analyzing data records |
US7793304B2 (en) * | 2005-05-04 | 2010-09-07 | Symantec Corporation | System and method for monitoring memory usage |
US8612970B2 (en) | 2005-11-30 | 2013-12-17 | Red Hat, Inc. | Purpose domain for low overhead virtual machines |
US8104034B2 (en) | 2005-11-30 | 2012-01-24 | Red Hat, Inc. | Purpose domain for in-kernel virtual machine for low overhead startup and low resource usage |
US8429629B2 (en) * | 2005-11-30 | 2013-04-23 | Red Hat, Inc. | In-kernel virtual machine for low overhead startup and low resource usage |
EP2062135A1 (en) * | 2006-09-14 | 2009-05-27 | 1060 Research Limited | Method for locating, resolving and invoking software functions |
US8095548B2 (en) * | 2008-10-14 | 2012-01-10 | Saudi Arabian Oil Company | Methods, program product, and system of data management having container approximation indexing |
US20100174850A1 (en) * | 2009-01-08 | 2010-07-08 | Chin-Huo Chu | Data moving method and system utilizing the same |
KR101023877B1 (ko) * | 2009-04-17 | 2011-03-22 | (주)인디링스 | 캐시 및 디스크 관리 방법 및 상기 방법을 이용한 컨트롤러 |
KR101530463B1 (ko) | 2010-11-16 | 2015-06-29 | 인텔 코포레이션 | 데이터 기억 시스템에 대한 엔드포인트 캐싱 |
US10599620B2 (en) * | 2011-09-01 | 2020-03-24 | Full Circle Insights, Inc. | Method and system for object synchronization in CRM systems |
US10621206B2 (en) | 2012-04-19 | 2020-04-14 | Full Circle Insights, Inc. | Method and system for recording responses in a CRM system |
KR102112605B1 (ko) * | 2013-07-01 | 2020-05-19 | 삼성전자 주식회사 | 모바일 단말 및 모바일 단말의 네트워크 전송 제어 방법 |
JP6149595B2 (ja) | 2013-08-13 | 2017-06-21 | 富士通株式会社 | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 |
CN104516828B (zh) * | 2013-09-27 | 2018-01-09 | 伊姆西公司 | 用于移除缓存数据的方法和设备 |
GB2534373A (en) | 2015-01-20 | 2016-07-27 | Ibm | Distributed system with accelerator and catalog |
US11561899B2 (en) * | 2019-05-29 | 2023-01-24 | International Business Machines Corporation | Method and system of managing a file cache by selective delete-on-read operations |
CN111125148B (zh) * | 2019-12-12 | 2023-07-07 | 中化石化销售有限公司 | 一种数据库的分页查询方法及装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5396614A (en) * | 1992-06-25 | 1995-03-07 | Sun Microsystems, Inc. | Method and apparatus for a secure protocol for virtual memory managers that use memory objects |
US5530799A (en) * | 1993-12-17 | 1996-06-25 | Taligent Inc. | Rendering cache in an object oriented system |
US5608909A (en) * | 1994-04-15 | 1997-03-04 | Microsoft Corporation | Method and system for caching presentation data of a source object in a presentation cache |
US5729710A (en) * | 1994-06-22 | 1998-03-17 | International Business Machines Corporation | Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system |
US5771383A (en) * | 1994-12-27 | 1998-06-23 | International Business Machines Corp. | Shared memory support method and apparatus for a microkernel data processing system |
US6163812A (en) * | 1997-10-20 | 2000-12-19 | International Business Machines Corporation | Adaptive fast path architecture for commercial operating systems and information server applications |
US6304879B1 (en) * | 1998-11-25 | 2001-10-16 | Microsoft Corporation | Dynamic data cache for object-oriented computing environments |
US6542967B1 (en) * | 1999-04-12 | 2003-04-01 | Novell, Inc. | Cache object store |
US6886004B2 (en) * | 2000-08-24 | 2005-04-26 | Red Hat, Inc. | Method and apparatus for atomic file look-up |
US7028091B1 (en) * | 2000-08-31 | 2006-04-11 | Sun Microsystems, Inc. | Web server in-kernel interface to data transport system and cache manager |
-
2002
- 2002-09-30 US US10/260,803 patent/US7155571B2/en not_active Expired - Fee Related
-
2003
- 2003-09-05 KR KR10-2003-0062194A patent/KR100532337B1/ko not_active IP Right Cessation
- 2003-09-23 TW TW092126254A patent/TWI243331B/zh not_active IP Right Cessation
- 2003-09-24 CN CNB031587933A patent/CN1295621C/zh not_active Expired - Fee Related
- 2003-09-30 JP JP2003340845A patent/JP3882923B2/ja not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101848203B (zh) * | 2004-07-14 | 2011-08-31 | 国际商业机器公司 | 用于从网络适配器向主机系统传送数据的方法和系统 |
CN102770853A (zh) * | 2009-12-23 | 2012-11-07 | 思杰系统有限公司 | 用于在多核系统中管理大型高速缓存服务的系统和方法 |
CN102122256A (zh) * | 2011-03-28 | 2011-07-13 | 中国人民解放军国防科学技术大学 | 一种用于进程间通信的管道式通信方法及系统 |
CN102122256B (zh) * | 2011-03-28 | 2013-01-09 | 中国人民解放军国防科学技术大学 | 一种用于进程间通信的管道式通信方法及系统 |
US9483523B2 (en) | 2012-01-27 | 2016-11-01 | Fujitsu Limited | Information processing apparatus, distributed processing system, and distributed processing method |
CN103297490A (zh) * | 2012-01-27 | 2013-09-11 | 富士通株式会社 | 信息处理装置、分布式处理系统和分布式处理方法 |
CN103631564A (zh) * | 2012-08-27 | 2014-03-12 | 三星电子株式会社 | 保护被高速缓存盘的数据完整性的方法 |
CN103631564B (zh) * | 2012-08-27 | 2017-03-22 | 三星电子株式会社 | 保护被高速缓存盘的数据完整性的方法 |
CN105612525A (zh) * | 2013-08-12 | 2016-05-25 | 思科技术公司 | 针对应用安全性的二进制转换和随机化系统 |
CN105612525B (zh) * | 2013-08-12 | 2021-09-24 | 思科技术公司 | 针对应用安全性的二进制转换和随机化系统 |
CN107111581A (zh) * | 2015-01-19 | 2017-08-29 | 微软技术许可有限责任公司 | 存储器描述符列表高速缓存和管道处理 |
US10452581B2 (en) | 2015-01-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Memory descriptor list caching and pipeline processing |
CN107111581B (zh) * | 2015-01-19 | 2020-06-05 | 微软技术许可有限责任公司 | 存储器描述符列表高速缓存和管道处理 |
CN105861508A (zh) * | 2016-06-21 | 2016-08-17 | 南京农业大学 | 一种疫霉诱导性人工合成启动子pmp2及其重组表达载体和应用 |
CN105861508B (zh) * | 2016-06-21 | 2019-04-19 | 南京农业大学 | 一种疫霉诱导性人工合成启动子pmp2及其重组表达载体和应用 |
CN112948336A (zh) * | 2021-03-30 | 2021-06-11 | 联想凌拓科技有限公司 | 数据加速方法及缓存单元、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR20040028509A (ko) | 2004-04-03 |
TW200407778A (en) | 2004-05-16 |
US7155571B2 (en) | 2006-12-26 |
CN1295621C (zh) | 2007-01-17 |
JP3882923B2 (ja) | 2007-02-21 |
TWI243331B (en) | 2005-11-11 |
US20040064819A1 (en) | 2004-04-01 |
JP2004133931A (ja) | 2004-04-30 |
KR100532337B1 (ko) | 2005-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1295621C (zh) | 在操作系统内核环境中高速缓存应用数据的系统和方法 | |
US6754799B2 (en) | System and method for indexing and retrieving cached objects | |
US6754800B2 (en) | Methods and apparatus for implementing host-based object storage schemes | |
US6675214B2 (en) | Method and apparatus for efficient storage and retrieval of objects in and from an object storage device | |
US11392544B2 (en) | System and method for leveraging key-value storage to efficiently store data and metadata in a distributed file system | |
CN100337205C (zh) | 便利共享存储器环境中的通信的方法和系统 | |
US6377984B1 (en) | Web crawler system using parallel queues for queing data sets having common address and concurrently downloading data associated with data set in each queue | |
US8161244B2 (en) | Multiple cache directories | |
US8074014B2 (en) | Storage systems using write off-loading | |
US6343350B1 (en) | Conserving storage space by means of low resolution objects | |
US10296462B2 (en) | Method to accelerate queries using dynamically generated alternate data formats in flash cache | |
US6237060B1 (en) | Cache management techniques | |
US20020032691A1 (en) | High performance efficient subsystem for data object storage | |
US8074027B2 (en) | Multi-level read caching for multiplexed transactional logging | |
US8572130B2 (en) | Replacement policy for resource container | |
CN1352772A (zh) | 改进虚拟存储器系统中存储器访问的技术 | |
US6944863B1 (en) | Queue bank repository and method for sharing limited queue banks in memory | |
KR20160073316A (ko) | 통합된 객체 인터페이스를 위한 메모리 관리 장치, 시스템 및 그 방법 | |
Lee et al. | Metadata management of the SANtopia file system | |
EP1564640A1 (en) | Database accelerator | |
WO1998026352A1 (fr) | Procede de commande de prelecture de fichiers dans un systeme d'ordinateur | |
US20100100674A1 (en) | Managing a region cache | |
CN112486996B (zh) | 面向对象的内存数据存储系统 | |
US7698278B2 (en) | Method and system for caching directory services | |
KR19990032182A (ko) | 가변길이 파일의 버퍼 관리 장치 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070117 Termination date: 20100924 |