CN113626212A - 一种基于句柄结构的对象管理方法及装置 - Google Patents
一种基于句柄结构的对象管理方法及装置 Download PDFInfo
- Publication number
- CN113626212A CN113626212A CN202110786879.7A CN202110786879A CN113626212A CN 113626212 A CN113626212 A CN 113626212A CN 202110786879 A CN202110786879 A CN 202110786879A CN 113626212 A CN113626212 A CN 113626212A
- Authority
- CN
- China
- Prior art keywords
- handle
- description item
- description
- item
- matched
- 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.)
- Pending
Links
- 238000007726 management method Methods 0.000 title claims abstract description 62
- 230000015654 memory Effects 0.000 claims abstract description 76
- 238000000034 method Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 4
- 230000002194 synthesizing effect Effects 0.000 claims description 2
- 239000002609 medium Substances 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000010276 construction Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000012120 mounting media Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例公开了一种基于句柄结构的对象管理方法及装置。本申请实施例提供的技术方案,通过从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至描述项,基于描述项生成相关联的句柄;在使用句柄访问对象时,将句柄与句柄描述表中对应的描述项比对,判断句柄与对应的描述项是否匹配;确定句柄与对应的描述项匹配,锁定描述项相关联的对象,执行对象访问操作;确定句柄与对应的描述项不匹配,结束当前对象访问流程。采用上述技术手段,确保句柄复用准确,避免句柄复用时,访问错误对象的情况,解决句柄复用时的对象误用问题,优化系统内存管理及程序运行。
Description
技术领域
本申请实施例涉及系统对象管理技术领域,尤其涉及一种基于句柄结构的对象管理方法及装置。
背景技术
传统操作系统在进行对象管理时,一般是在系统堆里为应用程序直接分配一块内存,应用程序直接引用内存的原始指针去操作对象。这种方式极度依赖内存管理单元,容易导致内存对象访问异常,程序奔溃。
为此,现有一种采用句柄管控内存对象的方式,其通过应用程序持有对象句柄,该句柄指向句柄描述表中的某个描述项,然后通过描述项间接指向内存中真正的对象。以此可以排除系统内存对内存管理单元的依赖,避免直接分配内存导致的异常情况。
但是,采用传统句柄方式管理对象无法保证句柄的唯一性,当一个句柄被释放后,又被另外的使用者复用时,前后两者的句柄值是一样的,但实际指向内容不一样,容易出现对象误用的情况,导致程序运行出错,影响系统运行。
发明内容
本申请实施例提供一种基于句柄结构的对象管理方法及装置,能够解决句柄复用时的对象误用问题,确保句柄复用准确,优化系统运行。
在第一方面,本申请实施例提供了一种基于句柄结构的对象管理方法,包括:
从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至所述描述项,基于所述描述项生成相关联的句柄;
在使用所述句柄访问对象时,将所述句柄与所述句柄描述表中对应的所述描述项比对,判断所述句柄与对应的所述描述项是否匹配;
确定所述句柄与对应的所述描述项匹配,锁定所述描述项相关联的对象,执行对象访问操作;
确定所述句柄与对应的所述描述项不匹配,结束当前对象访问流程。
进一步的,所述基于所述描述项生成相关联的句柄,包括:
生成所述描述项的唯一标识符,基于所述唯一标识符生成所述描述项相关联的句柄;
对应的,所述判断所述句柄与对应的所述描述项是否匹配,包括:
基于所述唯一标识符的比对结果判断所述句柄与对应的所述描述项是否匹配。
进一步的,所述基于所述唯一标识符生成所述描述项相关联的句柄,包括:
确定所述描述项在所述句柄描述表的索引号,将所述索引号和所述唯一标识符合成为所述描述项相关联的句柄。
进一步的,在从预设的句柄描述表中抽取处于空闲状态的描述项之后,还包括:
将所述描述项的句柄状态类型从空闲状态切换为关联状态。
进一步的,在从预设的句柄描述表中抽取处于空闲状态的描述项之后,还包括:
将所述描述项的引用计数清零,所述引用计数用于计数所述描述项相关联对象的锁定数量;
对应的,在锁定所述描述项相关联的对象,还包括:
根据所述描述项相关联对象的锁定和解锁操作,更新所述引用计数。
进一步的,在根据所述描述项相关联对象的锁定和解锁操作,更新所述引用计数之后,还包括:
在所述引用计数为零时,将所述描述项的句柄状态类型设置为空闲状态,并解除所述描述项与对应的所述句柄的关联关系。
进一步的,在将所述描述项的句柄状态类型设置为空闲状态之后,还包括:
确定所述描述项关联的对象,对所述描述项关联的对象进行内存碎片整理操作。
在第二方面,本申请实施例提供了一种基于句柄结构的对象管理装置,包括:
创建模块,用于从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至所述描述项,基于所述描述项生成相关联的句柄;
比对模块,用于在使用所述句柄访问对象时,将所述句柄与所述句柄描述表中对应的所述描述项比对,判断所述句柄与对应的所述描述项是否匹配;
访问模块,用于确定所述句柄与对应的所述描述项匹配,锁定所述描述项相关联的对象,执行对象访问操作;确定所述句柄与对应的所述描述项不匹配,结束当前对象访问流程。
在第三方面,本申请实施例提供了一种电子设备,包括:
存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的基于句柄结构的对象管理方法。
在第四方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的基于句柄结构的对象管理方法。
本申请实施例通过从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至描述项,基于描述项生成相关联的句柄;在使用句柄访问对象时,将句柄与句柄描述表中对应的描述项比对,判断句柄与对应的描述项是否匹配;确定句柄与对应的描述项匹配,锁定描述项相关联的对象,执行对象访问操作;确定句柄与对应的描述项不匹配,结束当前对象访问流程。采用上述技术手段,确保句柄复用准确,避免句柄复用时,访问错误对象的情况,解决句柄复用时的对象误用问题,优化系统内存管理及程序运行。
附图说明
图1是本申请实施例一提供的一种基于句柄结构的对象管理方法的流程图;
图2是本申请实施例一中的描述项结构示意图;
图3是本申请实施例一中的句柄结构示意图;
图4是本申请实施例一中的对象关联示意图;
图5是本申请实施例一中的句柄构建流程图;
图6是本申请实施例一中的对象访问流程图;
图7是本申请实施例一中的句柄释放流程图;
图8是本申请实施例二提供的一种基于句柄结构的对象管理装置的结构示意图;
图9是本申请实施例三提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
本申请提供的基于句柄结构的对象管理方法,旨在通过句柄描述表中描述项与句柄的匹配,来避免句柄复用时对象错误访问的问题。相对于传统的对象管理方式,一般是在系统堆里为应用程序直接分配一块内存,由应用程序直接引用内存的原始指针去操作对象。这种方式简单直接,但存在如下几个缺陷:
1、在没有内存管理单元的系统上,内存一旦分配就无法动态调整位置,当系统长时间运行后可能会出现大量内存碎片,导致内存利用率变低,影响系统的可用性;
2、在有内存管理单元的系统上,操作系统可以管理虚拟内存和物理内存的映射,通过内存管理单元采用间接寻址的方式缓解内存碎片问题,但系统会过分依赖处理器的内存管理单元;
3、使用原始指针无法判断其所指向对象或内存的有效性。在多线程、有回调函数或结构复杂的程序中,代码中持有或传递的对象可能在中间某个过程中被释放,持有者在不知情的情况下继续使用该对象,可能会导致内存访问异常,程序崩溃。
而另一种采用句柄管控内存对象的方式,其主要通过应用程序持有对象句柄,利用句柄指向句柄描述表中的某个描述项,然后通过描述项间接指向内存中真正的对象,以此实现对象访问等操作。常见的诸如Linux文件描述符、Windows内核对象均采用上述句柄管控内存对象的方式。这种对象管理方式虽然可以解决直接分配内存的缺陷,但传统方式通常都是直接用句柄描述表的索引(即序号)作为句柄的值,比如Linux文件描述符,虽然描述项中可以标识句柄的有效性,但在已释放的句柄被复用的情况下,容易被误用。对于代码中持有或传递的句柄可能在中间某个过程中被释放,然后该句柄描述项又立即被一个新的对象复用,句柄持有者在不知情的情况下继续使用该对象,可能会导致程序运行出错,甚至是很隐秘的异常。并且,这些句柄管理机制都是绑定在特定的系统上,专用于管理操作系统的文件和内核对象,并不通用,实现方式复杂或不公开实现细节,无法移植到其他的项目上,其灵活性偏低。基于此,提供本申请实施例的一种基于句柄结构的对象管理方法,以解决现有对象管理方法中句柄复用时的对象误用问题。
实施例一:
图1给出了本申请实施例一提供的一种基于句柄结构的对象管理方法的流程图,本实施例中提供的基于句柄结构的对象管理方法可以由基于句柄结构的对象管理设备执行,该基于句柄结构的对象管理设备可以通过软件和/或硬件的方式实现,该基于句柄结构的对象管理设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。一般而言,该基于句柄结构的对象管理设备可以是电脑、服务器、处理器、控制器等计算设备。
下述以该基于句柄结构的对象管理设备为执行基于句柄结构的对象管理方法的主体为例,进行描述。参照图1,该基于句柄结构的对象管理方法具体包括:
S110、从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至所述描述项,基于所述描述项生成相关联的句柄。
本申请为了避免在句柄描述项复用的情况下,该句柄描述项原先关联的句柄继续访问该句柄描述项所链接的对象,导致对象错误访问的情况。通过构建句柄与描述项之间关联的唯一性,以进行句柄被复用时的有效性判断,确保句柄的准确复用。
示例的,参照图2-图3,提供本申请描述项和句柄的结构示意图。如图2所示,本申请实施例中用64位数据表示表示一个句柄对应的描述项,其中8位数据记录该描述项的引用计数器(ref);用8位数据记录该描述项的状态类型(tag),状态类型为tag=0xFF时代表空闲状态,其他值由用户自由定义;用16位数据记录该描述项的唯一标识符(UID);用32位数据记录与描述项绑定的真实对象指针(void*),在系统内存中,该对象可以是一块内存、一个图像等。另一方面,如图3所示,用32位数据表示一个句柄,其中16位数据记录该句柄在句柄描述表中的索引(即句柄序号);用16位数据记录该句柄的唯一标识符(UID),该句柄的唯一标识符(UID)用于与描述项中对应的唯一标识符(UID)做校验判断该句柄是否有效。本申请实施例中,当句柄的值=0xFFFFFFFF时,代表当前句柄无效。
此外,本申请实施例将多个描述项紧凑排列组成一个句柄描述表,如图4所示,句柄管理程序可通过句柄描述表来管理所有的句柄,包括句柄申请(即句柄构建)、释放、锁定和解锁等,利用句柄描述项分别关联对应的句柄和对象,以此来实现句柄与对象的绑定,以便于后续进行对象的访问。本申请实施例的句柄索引包括16位数据,因此该句柄描述表最大可支持65535项。
具体的,在系统初始化时,会将句柄描述表中的所有描述项设置为空闲状态。空闲状态下描述项未关联相应的句柄和对象,其唯一标识符为空。后续根据系统实际需要访问的对象,进行句柄的申请和对象的锁定。其中,在进行句柄构建时,通过在句柄描述表中抽取处于空闲状态的描述项。可以理解的是,描述项用8位数据记录其所处状态类型(tag),若描述项的tag=0xFF时,则代表当前描述项处于空闲状态。本申请实施例依此在句柄描述表中抽取空闲状态的描述项。进一步的,基于抽取到的描述项,生成所述描述项的唯一标识符,基于所述唯一标识符生成所述描述项相关联的句柄。为了便于后续进行句柄与描述项的匹配,确定两者关联的唯一性。因此本申请实施例会根据描述项的唯一标识符生成句柄的值,则生成的句柄中,应当包含该唯一标识符。
此外,本申请实施例还通过确定所述描述项在所述句柄描述表的索引号,将所述索引号和所述唯一标识符合成为所述描述项相关联的句柄。可以理解的是,为了便于在句柄描述表中查找对应的描述项,需要在构建句柄时,添加对应描述符的索引号,即描述项在句柄描述表中的排列序号。基于该索引号,可以方便句柄在句柄描述表中查找到对应的描述项,进而基于描述项进行对象访问。
参照图5,在进行句柄构建时,每申请一个新的句柄,会从句柄描述表中处于空闲状态的描述项中抽出一项,生成该描述项的唯一标识符(UID)。进而设置该描述项的句柄类状态型(tag),将所述描述项的句柄状态类型从空闲状态切换为关联状态。将所述描述项的引用计数清零,所述引用计数用于计数所述描述项相关联对象的锁定数量,以便于确定当前描述项可以链接到的对象。进一步在系统内存中创建真实对象并链接到该描述项,以此完成描述项与系统内存对象的关联。另一方面,则将描述项的唯一标识符(UID)和描述项的索引号合成一个句柄的值返回给句柄管理程序,以此完成一个句柄的构建,得到句柄与描述项的关联关系。其中,唯一标识符(UID)可以通过算法生成,每次申请新的句柄,则唯一标识符(UID)的全局计数器+1,以此可以确保生成的唯一标识符具备唯一性。
采用上述方式完成对象访问所需的句柄构建之后,即得到如图4所示的句柄与对象的关联关系。当句柄管理程序需要访问某一个对象时,则通过句柄与描述项进行匹配,并在匹配完成后,利用描述项与对象的关联关系进行对象访问。
S120、在使用所述句柄访问对象时,将所述句柄与所述句柄描述表中对应的所述描述项比对,判断所述句柄与对应的所述描述项是否匹配;
S130、确定所述句柄与对应的所述描述项匹配,锁定所述描述项相关联的对象,执行对象访问操作;确定所述句柄与对应的所述描述项不匹配,结束当前对象访问流程。
进一步的,基于预先构建的句柄,当需要使用句柄访问系统内存中的对象时,则通过句柄与描述表的比对校验,确定两者是否匹配,并在确定两者匹配时,进行对象锁定及访问。
具体的,本申请在判断所述句柄与对应的所述描述项是否匹配时,包括:
基于所述唯一标识符的比对结果判断所述句柄与对应的所述描述项是否匹配。
示例性的,如图6所示,在访问句柄关联的对象时,应当先锁定对象,在锁定对象后基于相应的描述项进行对象访问。在锁定对象时,通过句柄与对应的描述项进行比对,校验句柄中唯一标识符(UID)是否与描述项的唯一标识符(UID)匹配,如果匹配则对象锁定成功,如果不匹配则对象锁定失败。可以理解的是,句柄中包含了对应描述项的索引号,根据索引号可以找到该句柄关联的描述项。进而通过两者唯一标识符(UID)的比对匹配判断两者是否匹配。根据匹配结果判断是否进行对象锁定。在确定锁定对象时,即可访问当前描述项所关联的对象,执行对系统对象的相应操作。而在确定两者不匹配时,为了避免对象的错误访问导致程序异常等情况,此时结束对象访问流程。
此外,本申请实施例还根据所述描述项相关联对象的锁定和解锁操作,更新所述引用计数。每锁定一次对象,描述项的引用计数+1,以此来记录对应描述项所关联的对象。当不再使用对应对象时,需要解锁该对象。每解锁一次对象,则对应描述项的引用计数-1。系统可多次加锁解锁,并支持嵌套。
进一步的,根据上述对象锁定和解锁操作,在描述项所有关联对象均解锁后,则进行句柄的释放操作。如图7所示,其中,在所述引用计数为零时,将所述描述项的句柄状态类型设置为空闲状态,并解除所述描述项与对应的所述句柄的关联关系。只有引用计数=0时才能释放句柄,释放句柄时将描述项设置为空闲状态,并销毁句柄关联的真实对象,解除描述项与对应句柄的关联关系。关联关系解除后,描述项和句柄的唯一标识符清空,以避免后续对象的错误引用。而空闲的描述项可在下次申请新的句柄时重复使用。可以理解的是,本申请通过使用句柄上的唯一标识符(UID)与描述项中的唯一标识符(UID)相互校验的方式,解决描述项被复用时的有效性判断问题。由于每次申请新的句柄唯一标识符(UID)都不一样,即使某个描述项被释放后又立即被复用,老的句柄与新句柄序号尽管是一样的,但唯一标识符(UID)不一样,以此可以避免描述项复用时对象的错误访问。由于句柄持有者在使用前需要锁定对象,进行句柄与描述项的比对匹配,如果出现唯一标识符(UID)不匹配的情况,就会判定锁定失败,进而避免错误的发生。
可选的,本申请实施例还通过确定所述描述项关联的对象,对所述描述项关联的对象进行内存碎片整理操作。通过使用句柄间接访问对象和锁定解锁机制,当句柄持有者需要访问对象的真实内存时,需要先锁定对象,使用后要解锁对象。对于所有引用计数为0的对象,则可以进行内存移动,将该对象的内存移动至指定存储空间,进而实现碎片整理功能。
上述,通过从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至描述项,基于描述项生成相关联的句柄;在使用句柄访问对象时,将句柄与句柄描述表中对应的描述项比对,判断句柄与对应的描述项是否匹配;确定句柄与对应的描述项匹配,锁定描述项相关联的对象,执行对象访问操作;确定句柄与对应的描述项不匹配,结束当前对象访问流程。采用上述技术手段,确保句柄复用准确,避免句柄复用时,访问错误对象的情况,解决句柄复用时的对象误用问题,优化系统内存管理及程序运行。
此外,本申请通过的句柄和句柄描述表结构设计简单紧凑,流程简单明了,内存消耗小,有较强的通用性和可移植性。可以用于嵌入式系统的资源管理,GUI对象管理等应用场合。
实施例二:
在上述实施例的基础上,图8为本申请实施例二提供的一种基于句柄结构的对象管理装置的结构示意图。参考图8,本实施例提供的基于句柄结构的对象管理装置具体包括:创建模块21、比对模块22和访问模块23。
其中,创建模块21用于从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至所述描述项,基于所述描述项生成相关联的句柄;
比对模块22用于在使用所述句柄访问对象时,将所述句柄与所述句柄描述表中对应的所述描述项比对,判断所述句柄与对应的所述描述项是否匹配;
访问模块23用于确定所述句柄与对应的所述描述项匹配,锁定所述描述项相关联的对象,执行对象访问操作;确定所述句柄与对应的所述描述项不匹配,结束当前对象访问流程。
具体的,创建模块21包括:
生成单元,用于生成所述描述项的唯一标识符,基于所述唯一标识符生成所述描述项相关联的句柄;
对应的,比对模块22包括:
匹配单元,用于基于所述唯一标识符的比对结果判断所述句柄与对应的所述描述项是否匹配。
具体的,生成单元用于确定所述描述项在所述句柄描述表的索引号,将所述索引号和所述唯一标识符合成为所述描述项相关联的句柄。
具体的,创建模块21包括:
切换单元,用于将所述描述项的句柄状态类型从空闲状态切换为关联状态。
计数单元,用于将所述描述项的引用计数清零,所述引用计数用于计数所述描述项相关联对象的锁定数量;根据所述描述项相关联对象的锁定和解锁操作,更新所述引用计数。
解除单元,用于在所述引用计数为零时,将所述描述项的句柄状态类型设置为空闲状态,并解除所述描述项与对应的所述句柄的关联关系。
清理单元,用于确定所述描述项关联的对象,对所述描述项关联的对象进行内存碎片整理操作。
上述,通过从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至描述项,基于描述项生成相关联的句柄;在使用句柄访问对象时,将句柄与句柄描述表中对应的描述项比对,判断句柄与对应的描述项是否匹配;确定句柄与对应的描述项匹配,锁定描述项相关联的对象,执行对象访问操作;确定句柄与对应的描述项不匹配,结束当前对象访问流程。采用上述技术手段,确保句柄复用准确,避免句柄复用时,访问错误对象的情况,解决句柄复用时的对象误用问题,优化系统内存管理及程序运行。
本申请实施例二提供的基于句柄结构的对象管理装置可以用于执行上述实施例一提供的基于句柄结构的对象管理方法,具备相应的功能和有益效果。
实施例三:
本申请实施例三提供了一种电子设备,参照图9,该电子设备包括:处理器31、存储器32、通信模块33、输入装置34及输出装置35。该电子设备中处理器的数量可以是一个或者多个,该电子设备中的存储器的数量可以是一个或者多个。该电子设备的处理器、存储器、通信模块、输入装置及输出装置可以通过总线或者其他方式连接。
存储器32作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请任意实施例所述的基于句柄结构的对象管理方法对应的程序指令/模块(例如,基于句柄结构的对象管理装置中的创建模块、比对模块和访问模块)。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信模块33用于进行数据传输。
处理器31通过运行存储在存储器中的软件程序、指令以及模块,从而执行输入装置34可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置35可包括显示屏等显示设备。
上述提供的电子设备可用于执行上述实施例一提供的基于句柄结构的对象管理方法,具备相应的功能和有益效果。
实施例四:
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种基于句柄结构的对象管理方法,该基于句柄结构的对象管理方法包括:从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至所述描述项,基于所述描述项生成相关联的句柄;在使用所述句柄访问对象时,将所述句柄与所述句柄描述表中对应的所述描述项比对,判断所述句柄与对应的所述描述项是否匹配;确定所述句柄与对应的所述描述项匹配,锁定所述描述项相关联的对象,执行对象访问操作;确定所述句柄与对应的所述描述项不匹配,结束当前对象访问流程。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的基于句柄结构的对象管理方法,还可以执行本申请任意实施例所提供的基于句柄结构的对象管理方法中的相关操作。
上述实施例中提供的基于句柄结构的对象管理装置、存储介质及电子设备可执行本申请任意实施例所提供的基于句柄结构的对象管理方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的基于句柄结构的对象管理方法。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。
Claims (10)
1.一种基于句柄结构的对象管理方法,其特征在于,包括:
从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至所述描述项,基于所述描述项生成相关联的句柄;
在使用所述句柄访问对象时,将所述句柄与所述句柄描述表中对应的所述描述项比对,判断所述句柄与对应的所述描述项是否匹配;
确定所述句柄与对应的所述描述项匹配,锁定所述描述项相关联的对象,执行对象访问操作;
确定所述句柄与对应的所述描述项不匹配,结束当前对象访问流程。
2.根据权利要求1所述的基于句柄结构的对象管理方法,其特征在于,所述基于所述描述项生成相关联的句柄,包括:
生成所述描述项的唯一标识符,基于所述唯一标识符生成所述描述项相关联的句柄;
对应的,所述判断所述句柄与对应的所述描述项是否匹配,包括:
基于所述唯一标识符的比对结果判断所述句柄与对应的所述描述项是否匹配。
3.根据权利要求2所述的基于句柄结构的对象管理方法,其特征在于,所述基于所述唯一标识符生成所述描述项相关联的句柄,包括:
确定所述描述项在所述句柄描述表的索引号,将所述索引号和所述唯一标识符合成为所述描述项相关联的句柄。
4.根据权利要求1所述的基于句柄结构的对象管理方法,其特征在于,在从预设的句柄描述表中抽取处于空闲状态的描述项之后,还包括:
将所述描述项的句柄状态类型从空闲状态切换为关联状态。
5.根据权利要求1所述的基于句柄结构的对象管理方法,其特征在于,在从预设的句柄描述表中抽取处于空闲状态的描述项之后,还包括:
将所述描述项的引用计数清零,所述引用计数用于计数所述描述项相关联对象的锁定数量;
对应的,在锁定所述描述项相关联的对象,还包括:
根据所述描述项相关联对象的锁定和解锁操作,更新所述引用计数。
6.根据权利要求5所述的基于句柄结构的对象管理方法,其特征在于,在根据所述描述项相关联对象的锁定和解锁操作,更新所述引用计数之后,还包括:
在所述引用计数为零时,将所述描述项的句柄状态类型设置为空闲状态,并解除所述描述项与对应的所述句柄的关联关系。
7.根据权利要求6所述的基于句柄结构的对象管理方法,其特征在于,在将所述描述项的句柄状态类型设置为空闲状态之后,还包括:
确定所述描述项关联的对象,对所述描述项关联的对象进行内存碎片整理操作。
8.一种基于句柄结构的对象管理装置,其特征在于,包括:
创建模块,用于从预设的句柄描述表中抽取处于空闲状态的描述项,在系统内存中创建对象并关联至所述描述项,基于所述描述项生成相关联的句柄;
比对模块,用于在使用所述句柄访问对象时,将所述句柄与所述句柄描述表中对应的所述描述项比对,判断所述句柄与对应的所述描述项是否匹配;
访问模块,用于确定所述句柄与对应的所述描述项匹配,锁定所述描述项相关联的对象,执行对象访问操作;确定所述句柄与对应的所述描述项不匹配,结束当前对象访问流程。
9.一种电子设备,其特征在于,包括:
存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7任一所述的基于句柄结构的对象管理方法。
10.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-7任一所述的基于句柄结构的对象管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110786879.7A CN113626212A (zh) | 2021-07-12 | 2021-07-12 | 一种基于句柄结构的对象管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110786879.7A CN113626212A (zh) | 2021-07-12 | 2021-07-12 | 一种基于句柄结构的对象管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113626212A true CN113626212A (zh) | 2021-11-09 |
Family
ID=78379610
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110786879.7A Pending CN113626212A (zh) | 2021-07-12 | 2021-07-12 | 一种基于句柄结构的对象管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113626212A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114462388A (zh) * | 2022-02-11 | 2022-05-10 | 阿里巴巴(中国)有限公司 | 句柄管理或通信方法、电子设备、存储介质及程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101502042A (zh) * | 2005-07-15 | 2009-08-05 | 微软公司 | 用户账户内应用程序专用数据的隔离 |
CN102999518A (zh) * | 2011-09-15 | 2013-03-27 | 腾讯科技(深圳)有限公司 | 一种图形设备接口资源管理方法和装置 |
CN103853504A (zh) * | 2014-02-12 | 2014-06-11 | 上海爱数软件有限公司 | 一种缓存系统数据存取方法 |
CN105931441A (zh) * | 2016-04-29 | 2016-09-07 | 镇江惠通电子有限公司 | 数据的接收方法、装置及遥控终端 |
-
2021
- 2021-07-12 CN CN202110786879.7A patent/CN113626212A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101502042A (zh) * | 2005-07-15 | 2009-08-05 | 微软公司 | 用户账户内应用程序专用数据的隔离 |
CN102999518A (zh) * | 2011-09-15 | 2013-03-27 | 腾讯科技(深圳)有限公司 | 一种图形设备接口资源管理方法和装置 |
CN103853504A (zh) * | 2014-02-12 | 2014-06-11 | 上海爱数软件有限公司 | 一种缓存系统数据存取方法 |
CN105931441A (zh) * | 2016-04-29 | 2016-09-07 | 镇江惠通电子有限公司 | 数据的接收方法、装置及遥控终端 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114462388A (zh) * | 2022-02-11 | 2022-05-10 | 阿里巴巴(中国)有限公司 | 句柄管理或通信方法、电子设备、存储介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11593337B2 (en) | Data processing method, device, and a storage medium | |
EP3764237B1 (en) | System startup method and apparatus, electronic device and storage medium | |
US11386065B2 (en) | Database concurrency control through hash-bucket latching | |
US5655146A (en) | Coexecution processor isolation using an isolation process or having authority controls for accessing system main storage | |
JP2825550B2 (ja) | 多重仮想空間アドレス制御方法および計算機システム | |
US7512693B2 (en) | Dual-component state token with state data direct access index for systems with high transaction volume and high number of unexpired tokens | |
US7464189B2 (en) | System and method for creation/deletion of linear block address table entries for direct I/O | |
US10514943B2 (en) | Method and apparatus for establishing system-on-chip (SOC) security through memory management unit (MMU) virtualization | |
CN107479931B (zh) | 一种linux系统应用层刷新BIOS的方法 | |
US11934383B2 (en) | Mimetic database-based network operating system design method | |
US8769350B1 (en) | Multi-writer in-memory non-copying database (MIND) system and method | |
US9195578B2 (en) | Systems, methods and computer program products memory space management for storage class memory | |
US10235234B2 (en) | Method and apparatus for determining failure similarity in computing device | |
US7657662B2 (en) | Processing user space operations directly between an application instance and an I/O adapter | |
MX2008001159A (es) | Memoria de transaccion de software de actualizacion directa. | |
US20130262426A1 (en) | Method and apparatus for accessing database and database application system | |
US20070168567A1 (en) | System and method for file based I/O directly between an application instance and an I/O adapter | |
CN112231070B (zh) | 数据写入、读取方法、装置及服务器 | |
CN101556559A (zh) | 利用虚拟存储器的事务型存储器执行 | |
CN110554911A (zh) | 内存访问与分配方法、存储控制器及系统 | |
US20070005815A1 (en) | System and method for processing block mode I/O operations using a linear block address translation protection table | |
US7577761B2 (en) | Out of user space I/O directly between a host system and a physical adapter using file based linear block address translation | |
CN116578504A (zh) | 提高rdma引擎访问内存区域效率的方法、装置、系统、芯片及存储介质 | |
CN113626212A (zh) | 一种基于句柄结构的对象管理方法及装置 | |
US20060265522A1 (en) | System and method for query/modification of linear block address table entries for direct I/O |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |