CN103150159A - 使用命名对象的标识符生成 - Google Patents
使用命名对象的标识符生成 Download PDFInfo
- Publication number
- CN103150159A CN103150159A CN2013100287863A CN201310028786A CN103150159A CN 103150159 A CN103150159 A CN 103150159A CN 2013100287863 A CN2013100287863 A CN 2013100287863A CN 201310028786 A CN201310028786 A CN 201310028786A CN 103150159 A CN103150159 A CN 103150159A
- Authority
- CN
- China
- Prior art keywords
- identifier
- named object
- identification symbol
- candidate identification
- equipment
- 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
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及使用命名对象的标识符生成。生成进程的候选标识符,并且作出创建拥有名称的命名对象的尝试,该名称是候选标识符。响应于尝试成功以及命名对象被创建,候选标识符被用作进程的标识符。响应于尝试不成功以及命名对象未被创建,重复生成和尝试。
Description
技术领域
本发明涉及标识符生成,尤其是使用命名对象的标识符生成。
背景技术
计算机通常并行地运行多个程序,每个程序可作为一个或多个进程来运行。通常期望保护特定的资源(例如,存储区域、设备等),使得它们只能由特定的进程来访问。然而,实现这样的保护不乏其问题。一个这样的问题是确定如何以允许进程彼此相区别的方式来标识不同的进程,而同时不使计算机的资源(例如,存储器、处理容量等)过载。
发明内容
提供本发明内容以便以简化形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
根据一个或多个方面,在设备处生成进程的候选标识符。作出创建具有名称的命名对象的尝试,该名称是候选标识符。如果命名对象被创建,则候选标识符被用作进程的标识符。然而,如果命名对象未被创建,则重复生成和尝试。
根据一个或多个方面,接收对程序的进程的标识符的请求。生成进程的候选标识符,并且作出创建具有名称的命名对象的尝试,该名称是候选标识符。响应于成功创建命名对象的尝试,候选标识符作为进程的标识符被返回到程序。
附图简述
在全部附图中,使用相同的附图标记来指示相同的特征。
图1是示出根据一个或多个实施例的实现使用命名对象的标识符生成的示例设备的框图。
图2是示出根据一个或多个实施例的实现使用命名对象的标识符生成的另一个示例设备的框图。
图3示出了根据一个或多个实施例的示例的基于命名对象的标识符生成系统。
图4是示出了根据一个或多个实施例的用于实现使用命名对象的标识符生成的设备的示例过程的流程图。
图5是示出了根据一个或多个实施例的用于实现使用命名对象的标识符生成的设备的另一示例过程的流程图。
图6示出根据一个或多个实施例的可被配置成实现使用命名对象的标识符生成的示例计算设备。
具体实施方式
此处讨论使用命名对象的标识符生成。为设备上的进程生成候选标识符。随后作出创建命名对象的尝试,该命名对象将候选标识符作为该对象的名称。设备的操作系统防止多个命名对象拥有相同的名称。如果创建命名对象的尝试是成功的,则假设没有其他进程正在使用该候选标识符,并且该候选标识符被用作该进程的标识符。如果创建命名对象的尝试不成功,则假设另一个进程正在使用该候选标识符,并且生成另一个候选标识符。候选标识符的这种生成以及创建将候选标识符作为对象名称的命名对象的尝试可被重复一次或多次。
图1是示出根据一个或多个实施例的实现使用命名对象的标识符生成的示例设备100的框图。设备100可以是各种各样不同种类的设备,诸如物理设备或虚拟设备。例如,设备100可以是物理设备,诸如台式计算机、服务器计算机、膝上型或上网本计算机、平板或笔记本计算机、移动站、娱乐设备、可通信地耦合到显示设备的机顶盒、电视机或其他显示设备、蜂窝式或其他无线电话、游戏控制台、车载计算机等等。设备100还可以是虚拟设备,诸如运行在物理设备上的虚拟机。虚拟机可在各种各样不同种类的物理设备(例如,上面列出的各种类型中的任一个)中的任一个上运行。
设备100包括操作系统102和一个或多(x)个程序104。可在设备100上运行各种不同的程序,诸如娱乐程序、游戏程序、资源程序、实用程序、生产力程序等等。每个程序作为一个或多(y)个进程106来运行,该进程也被称为对应于程序。不同的程序104可具有不同数量的进程106。
每个程序还包括基于命名对象的标识符模块108,该标识符模块108为程序的进程106生成标识符。这些标识符允许在设备100上运行的不同进程106彼此相区分,即使进程可由不同程序104、由同一程序104的不同实例、由同一程序104的同一实例、它们的组合等来生成。进程106的已生成标识符可用于如下的任何情形中:进程106期望拥有不为任何其他进程106并行使用的标识符。例如,进程106的标识符可被用作安全标识符,该安全标识符指示该进程被许可访问设备的一个或多个资源中的哪个。下面更详细地讨论进程106的这些标识符的生成。
操作系统102包括命名对象管理模块112、访问控制模块114、进程管理模块116、以及基于命名对象的标识符生成模块118。虽然在图1中示出特定的模块112-118,但应当注意一个或多个模块112-118的功能可被组合成单个模块,和/或一个或多个模块的功能可被分解成多个模块。
命名对象管理模块112管理设备100上的命名对象。该管理包括响应于来自程序104或操作系统102的请求来创建命名对象,以及删除由程序104或操作系统102释放的命名对象。命名对象是指具有一个或多个属性和/或方法的实体(例如,类的实例),属性和/或方法中的至少一个包括被称为对象名称的对象的标识符。如果设备100的另一个对象已经拥有同一名称,则命名对象管理模块112防止在设备100上创建命名对象。因此,在任何一个时刻设备100中只有一个命名对象可拥有特定的名称。然而,应当注意,一旦命名对象被删除,就可创建拥有与已删除对象相同名称的另一个对象。
进程管理模块116管理进程106的运行,包括响应于用户运行程序的请求来创建进程106、响应于来自其他进程106的请求来创建进程106、响应于用户终止进程的请求来停止进程106的执行等等。
访问控制模块114管理进程106对设备100的各种资源的访问。在一个或多个实施例中,每个进程106具有与那个进程106而非其他进程106相关联的安全标识符。该安全标识符可以是由基于命名对象的标识符生成模块108生成的进程的标识符。设备100包括各种不同的资源,诸如不同的存储设备或组件(或存储设备或组件的部分)、文件或目录、不同的输入设备或组件、不同的输出设备或组件等。可以限制特定进程106对特定资源的访问,并且访问控制模块114实施这些限制。每个进程106具有相关联的安全标识符,并且这些相关联的安全标识符由访问控制模块114用来确定进程106是否被许可访问资源。例如,每个资源可具有对应的访问控制列表,该列表标识哪些安全标识符被许可访问该资源,并且仅当进程106具有由对应于资源的访问控制列表所标识的相关联的安全标识符时,访问控制模块114才许可进程106访问该资源。
在一个或多个实施例中,操作系统102也作为一个或多个进程来运行,该一个或多个进程可作为进程106来被包括。在这些实施例中,操作系统102的进程可具有由基于命名对象的安全标识符生成模块118所生成的相关联的标识符。模块118以与基于命名对象的标识符生成模块108相同的方式为操作系统的进程生成标识符,如下面更详细地讨论的。
图2是示出根据一个或多个实施例的实现使用命名对象的标识符生成的另一个示例设备200的框图。设备200可以是各种各样不同类型的设备,与图1的设备100类似。设备200与图1的设备100相似,包括操作系统202、以及一个或多(x)个程序204,一个或多(x)个程序204的每个作为一个或多(y)个进程206运行。操作系统202包括与图1的命名对象管理模块112类似的命名对象管理模块212,与图1的访问控制模块114类似的访问控制模块214,与图1的进程管理模块116类似的进程管理模块216,以及基于命名对象的标识符生成模块218。
基于命名对象的标识符生成模块218与图1的基于命名对象的标识符生成模块118类似,为操作系统的进程生成标识符。设备200与图1的设备100的不同之处在于基于命名对象的标识符生成模块218为进程206生成标识符。因此,每个程序204包括基于命名对象的标识符检索模块220,而不是为进程206生成标识符的模块,该基于命名对象的标识符检索模块220从基于命名对象的标识符生成模块218请求进程的标识符。模块218生成标识符,如下面更详细地讨论的,并且将所生成的标识符返回给基于命名对象的标识符检索模块220。
图1示出了其中由程序生成进程的标识符的实现,并且图2示出了其中由操作系统生成进程的标识符的实现。应当注意,这些实现可通过设备上生成进程的标识符的一些程序、以及同一设备上从操作系统获得进程的标识符的其他程序来组合。
图3示出了根据一个或多个实施例的示例的基于命名对象的标识符生成系统300。基于命名对象的标识符生成系统300可由例如图1的基于命名对象的标识符生成模块108、图1的基于命名对象的标识符生成模块118、图2的基于命名对象的标识符生成模块218、它们的组合等来实现。如下面更详细地讨论的,虽然没有这种标识符可被生成的情形会出现,但每次请求或期望进程的标识符时,系统300尝试生成标识符。
基于命名对象的标识符生成系统300包括候选标识符生成模块302和命名对象检索模块304。候选标识符生成模块302至少部分地基于包括特定数量值的一组值中所选择的一个,来生成候选标识符306。值的特定数量作为对设备上一个或多个程序可并发存在的标识符的数量的限制来操作。该限制是否是针对设备上全部程序的标识符的数量的限制还是基于逐个程序的基础的限制取决于候选标识符306是否包括固定部分,如下面更详细地讨论的。
值的这个特定数量可在系统300中被预先配置和/或由包括系统300的设备的用户或管理员来设置。通常,值的特定数量大于要在设备上并发运行的预期进程的总数,但不会太大,以便减少设备上的资源消耗。例如,如果要在设备上并发运行的预期进程的总数是20-500,则值的特定数量可以是2000-3000。或者,值的特定数量可以是动态的,并用于扼制设备上进程的数量,如下面更详细地讨论的。
候选标识符生成模块302选择这组值中的一个作为候选标识符306的基础。这组值可以是特定范围的值,诸如范围从0到limit-1的整数,其中limit是指设备上一个或多个程序可并发存在的标识符数量的限制。这组值也可以是各种其他集合,诸如一组特定数量的偶数、一组特定数量的奇数等。
候选标识符生成模块302从这组值中选择一个值。在一个或多个实施例中,模块302在这组值中标识起始位置,并选择起始位置处的值。可按照各种方式来标识这个起始位置。该起始位置可通过生成位于这组值中值的特定数量以内的随机或伪随机数来标识。例如,如果特定数量的值包括3000个值,则可生成1与3000之间的随机或伪随机数,并且所生成的数是这组值中的值的起始位置(例如,如果随机或伪随机地生成2135,则起始位置是这组值中的第2135个值)。
或者,候选标识符生成模块302可通过其他方式来标识起始位置。例如,起始位置可以是这组值中的预定或固定位置(例如,第一个位置、最后一个位置、这组值中一半的位置等),或者可使用各种其他规则或标准来确定。
候选标识符生成模块302使用这组值中所选择的一个作为候选标识符306的基础。候选标识符306包括基于所选择的值的可变部分312。可变部分312可以是所选择的值,或者替换地是基于所选择的值生成的另一个值(例如,通过向所选择的值应用特定的函数或算法)。虽然替换的候选标识符306可包括可变部分312而不包括固定部分314,但候选标识符306也可包括固定部分314。
虽然可另选或另外地使用其他符号或字符,但固定部分314通常是字母数字次序。固定部分314被称为固定的,因为它对多个候选标识符是通用的,无论它是对于为处理同一程序和/或程序版本而生成的候选标识符是通用的,还是对于多个程序和/或程序版本是通用的。固定部分314通常标识对应于进程的程序和/或程序版本,为该进程生成标识符,虽然固定部分314可替换地是对于多个程序和/或程序版本通用的值。例如,对于进程来说,无论对应于进程的程序或程序版本如何,固定部分314可以是同一个值“69869565c0fd”。作为另一个示例,固定部分314可以是与名为“Widget(小部件)”的程序的版本1相对应的进程的值“ProgramWidgets1(程序小部件1)”,与名为“Widget(小部件)”的程序的版本2相对应的进程的值“ProgramWidgets2(程序小部件2)”,与名为“Alpha(阿尔法)”的程序的所有版本相对应的进程的值“ProgramAlpha(程序阿尔法)”等。
在图3所示的示例中,候选标识符包括两个单独的部分:可变部分312和固定部分314。候选标识符306通常包括可选地用分隔这两部分的字符或符号串接在一起的这两个部分。例如,如果固定部分是“69869565c0fd”并且可变部分是“4378”,则候选标识符306可以是“69869565c0fd_4378”。
或者,候选标识符生成模块302可按照各种方式中的任一种来组合可变部分312和固定部分314。例如,两个部分可彼此进行数学上的相加,两个部分中的一个可与另一个进行数学上的相减,两个值可彼此进行异或等。可替换地使用各种其他规则、标准、函数、算法等来组合这两个部分。
在候选标识符306被生成之后,命名对象检索模块304尝试创建拥有名称的命名对象,该名称是候选标识符306。命名对象检索模块304向创建命名对象的操作系统模块(例如,图1的命名对象管理模块112或者图2的命名对象管理模块212)提交请求,以创建拥有名称的命名对象,该名称是候选标识符306。如上面所讨论的,如果设备100的另一个对象已经拥有同一名称,则命名对象管理模块112防止在设备100上创建命名对象。因此,如果拥有候选标识符306的命名对象尚未存在于设备上,则创建拥有名称(该名称是候选标识符306)的命名对象的尝试是成功的。然而,如果拥有候选标识符306的命名对象已经存在于设备上,则创建拥有名称(该名称是候选标识符306)的命名对象的尝试是不成功的(尝试失败)。
如果创建拥有名称(该名称是候选标识符306)的命名对象的尝试是成功的,则候选标识符306被提供作为标识符320。标识符320是由系统300生成的基于命名对象的标识符。因此标识符320是进程的标识符,诸如上面讨论的安全标识符。应当注意,一旦用是标识符320的名称来创建命名对象,创建拥有该同一名称的命名对象的接下来的尝试将失败,因为拥有该名称的命名对象已经存在。因此,确保没有其他的运行在设备上的进程并发地拥有相同的标识符。
然而,如果创建拥有名称(该名称是候选标识符306)的命名对象的尝试是不成功的,则候选标识符306向候选标识符生成模块302返回失败的指示。响应于该失败指示,候选标识符生成模块302生成附加的候选标识符306。虽然附加候选标识符306的可变部分312是基于一组值中不同的所选择的一个值,但模块302按照与上面讨论相同的方式来生成该附加的候选标识符306。
模块302按照各种不同的方式为附加的候选标识符306选择这组值中一个不同的值。在一个或多个实施例中,模块302通过在这组值中顺序地选择最近选中值的下一个值,来选择这组值中一个不同的值。例如,如果这组值是范围从0到450的整数,并且之前生成的候选标识符306的可变部分312是37,则顺序上下一个值将是38,并将值38选作可变部分312。如果最近选中的值是这组值中的最后一个值,则选择过程回绕,并由模块302选择这组值中的第一个值。例如,如果这组值是范围从0到450的整数,并且之前生成的候选标识符306的可变部分312是450,则顺序上下一个值将是0,并将值0选作可变部分312。或者,可按照其他方式来选择这组值中的不同的值,诸如在这组值中顺序地选择最近选中值的前一个值(按需在这组值中从第一个值回绕到最后一个值),在随机或伪随机选择的位置处选择值,使用各种其他规则或标准来选择值或位置等。
一旦附加的候选标识符306被生成,命名对象检索模块304尝试创建拥有名称的命名对象,该名称是附加的候选标识符306。如上面所讨论的,该尝试可以是成功的或不成功的。
候选标识符的这种生成以及创建拥有候选标识符的命名对象的尝试可被重复一次或多次。这种生成和尝试被重复多少次可基于不同的标准而变化。在一个或多个实施例中,生成和尝试被重复,直到拥有已生成候选标识符的命名对象被创建,或者创建命名对象的尝试的数量等于这组值中的值的特定数量,该数量被用作候选标识符306的基础。在其他实施例中,这种生成和尝试被重复特定数量的次数(例如,三次、十次等)。生成和尝试被重复的次数的该特定数量可在系统300中预先配置,可由包括系统300的设备的用户或管理员来标识等。
如果生成和尝试不能成功地创建命名对象(在试过特定数量的次数之后,在尝试创建命名对象的次数等于用作候选标识符306的基础的这组值中的值的特定数量之后,等),则系统300返回标识符无法被创建的指示。因此,通知期望生成进程的标识符的程序或模块,目前无法生成标识符。程序或模块随后可采取适当的动作,诸如不创建期望标识符的特定的进程。
如上面讨论的,候选标识符生成模块302可从中选择作为可变部分312的基础的值的特定数量作为设备上一个或多个程序可并发存在的标识符的数量的限制来操作。候选标识符生成模块302可从中选择作为可变部分312的基础的值的特定数量还可作为可存在(例如,并发运行)于设备上的进程的数量的限制来操作。例如,如果系统300生成的标识符被用作进程的安全标识符,并且若程序无法为进程生成唯一的安全标识符程序就不创建进程,则模块302可从中选择的值的特定数量也是可存在于设备上的进程的数量的限制,因为在没有安全标识符的情况下进程将不能被创建。
如上面讨论的,如果候选标识符被生成以包括固定部分314,则对于每个固定部分来说,可存在于设备上的进程的数量被限制为候选标识符生成模块302可为可变部分312选择的一组值中的值的特定数量。例如,对于每个程序的每个版本,如果每个固定部分是不同的,并且如果模块302可从中为可变部分312进行选择的这组值中值的特定数量是98个值,则对于每个程序的每个版本,系统300将安全标识符的数量限制为98,并且对于每个程序的每个版本,在任何一个时刻,可在设备上存在的进程的数量因此也被限制为98。作为另一个示例,对于每个程序(无论程序的版本如何),如果每个固定部分是不同的,并且如果模块302可从中为可变部分312进行选择的这组值中值的特定数量是128个值,则对于每个程序,系统300将安全标识符的数量限制为128,并且对于每个程序(无论程序版本如何),在任何一个时刻,可在设备上存在的进程的数量因此也被限制为128。
然而,如上面讨论的,如果候选标识符被生成以包括可变部分312而非固定部分314,则无论哪些程序和/或程序版本位于设备上,可存在于设备上的进程的数量被限制为候选标识符生成模块302可从其中为可变部分312选择的一组值中值的特定数量。例如,如果模块302可从其中为可变部分312进行选择的这组值中值的特定数量是532个值,则系统300将安全标识符的数量限制为532,并且在任何一个时刻,可存在于设备上的进程的数量因此也被限制为532。
在一个或多个实施例中,候选标识符生成模块302可从其中选择的这组值中值的特定数量用作对可在设备上运行的进程的数量的限制。值的特定数量可以是动态的、被(例如,实现系统300的设备上的操作系统,诸如图1的操作系统102或图2的操作系统202)调整并被用于基于设备的性能来扼制设备上进程的数量。可在设备上包括各种监视器或性能计数器,以跟踪设备性能。这些计数器可通过各种各样不同的公知和/或私有方式来监视各种资源使用,诸如处理器使用、存储器使用、存储设备使用、网络连接使用等。
如果满足特定的规则或标准(例如,特定时间的持续时间内资源使用的特定阈值被满足),则可减少候选标识符生成模块302可从其中选择的这组值中值的特定数量。减少的量可按诸如固定的量(例如按100个值)和/或按可变量(例如,按模块302可从其中选择的这组值中值的当前特定数量的10%,按使得模块302可从其中选择的这组值中值的特定数量等于在设备上运行的进程的当前数量的量)而变化。类似地,如果满足其他特定的规则或标准(例如,特定时间的持续时间内资源使用的其他特定阈值被满足),则可增加候选标识符生成模块302可从其中选择的这组值中值的特定数量。增加的量可按固定量(例如,按100个值)和/或按可变量(例如,按模块302可从其中选择的这组值中值的当前特定数量的10%,达到之前(例如由管理员或用户)配置的值)而变化。
应当注意,当进程被终止时,为该进程创建的命名对象通常被(例如,该进程或对应程序的其他进程)释放。程序可以是命名对象的拥有者,并在进程被终止时释放为该进程创建的命名对象,或者每个进程本身可以是为该进程创建的命名对象的拥有者,使得当进程被终止时,为该进程创建(并拥有)的命名对象被自动地释放。通常将对命名对象的释放通知给管理命名对象的操作系统模块(例如,图1的命名对象管理模块112、或图2的命名对象管理模块212)。作为响应,操作系统删除或移除那些被释放的命名对象。因此,对于被终止的进程,拥有系统300根据该进程的候选标识符生成的名称的命名对象被释放。拥有该特定名称的命名对象不再存在于设备上,并且创建拥有该特定名称的命名对象的接下来的尝试将是成功的。
或者,程序可重新使用进程的标识符。在这些情形中,当进程被终止时,程序将已终止进程的标识符的记录维护成当前未使用,但不释放拥有该标识符作为名称的命名对象。当随后为程序创建一个新的进程时,程序可为新进程重新使用该标识符,而不必由基于命名对象的标识符生成模块创建新的标识符。标识符可被重新使用任何数量的次数,并且任选地被使用不超过阈值数量的次数(该次数可在程序中被预先配置,由运行程序的设备的管理员或用户来设置等)。程序可任选地拥有基于命名对象的标识符生成模块预先创建的一个或多个标识符,并随后当创建新进程时使用那些预先创建的标识符。可通过不同的方式来确定被预先创建的标识符的数量(例如,可在程序中被预先配置,可由运行程序的设备的管理员或用户来设置,可基于系统负载(例如,已在运行程序的设备上创建的多个命名对象,基于各种监视器或性能计数器的设备性能)等)。程序还可响应于期望创建新进程并且没有可用于重新使用的标识符而创建标识符。
通常,以相同的方式为每个进程生成候选标识符。例如,如果通过向所选择的值应用特定函数来生成可变部分312,则每个所选择的值具有向其应用的生成可变部分312的同一特定函数。或者,可以为不同的进程按照不同的方式来生成候选标识符(例如,在生成候选标识符中为可选部分选择值的一组值中的起始位置对于不同的进程可以变化,可向所选择的值应用不同的函数以生成不同进程的可变部分312等)。
应当注意,虽然同一程序的不同实例通常具有固定部分的相同值,但不同程序可具有固定部分的不同的值。然而,由于候选标识符包括可变部分,并且仅当命名对象被创建时候选标识符被用作标识符,虽然有通用的固定部分,但为同一程序的不同实例的不同进程生成不同的标识符。
虽然此处参考使用命名对象来防止设备上的多个进程并发拥有同一标识符来讨论,但这种预防可通过其他方式来执行。例如,可以检查已使用标识符的记录,而不是尝试用候选标识符来创建命名对象。该记录可以是例如数据库、表格、文件等。系统300可直接地、或者替换地经由维护记录的服务或模块,来访问记录。如果候选标识符已被包括在记录中(并且因此已经用于进程),则附加的候选标识符被生成,并且记录被再次检查。然而,如果候选标识符尚未被包括在记录中(并且因此尚未用于进程),则附加的候选标识符被添加到记录,并且用作进程的标识符。当进程被终止时,该进程更新记录以将标识符从记录中移除。
图4是示出了根据一个或多个实施例的用于实现使用命名对象的标识符生成的设备的示例过程400的流程图。过程400由诸如图3的系统300等系统来执行,并可以用软件、固件、硬件、或其组合来实现。每次请求或期望进程的标识符时,执行过程400。过程400被示为一组动作,并且不仅限于所示出的用于执行各种动作的操作的顺序。过程400是用于实现使用命名对象的标识符生成的示例过程;参考不同附图,此处包括了实现使用命名对象的标识符生成的附加讨论。
在过程400中,生成进程的候选标识符(动作402)。该候选标识符包括可变部分,并且还可包括如上面讨论的固定部分。
作出创建拥有名称的命名对象的尝试(动作404),该名称是候选标识符。如上面所讨论的,基于拥有该名称的命名对象是否已经存在,尝试可以是成功的或不成功的。
过程400基于尝试是否成功而前进(动作406)。如果尝试是成功的,则候选标识符被用作进程的标识符(动作408)。该标识符可以是,例如,如上面讨论的安全标识符。
然而,如果尝试是不成功的,则过程400返回到动作402,以生成另一个候选标识符并尝试创建拥有名称的命名对象,该名称是附加的候选标识符。这种生成和尝试可被重复一次或多次,如上面讨论的。
图5是示出了根据一个或多个实施例的用于实现使用命名对象的标识符生成的设备的另一示例过程500的流程图。过程500由诸如图3的系统300等系统来执行,并可以用软件、固件、硬件、或其组合来实现。每次请求进程的标识符时,执行过程500。过程500被示为一组动作,并且不仅限于所示出的用于执行各种动作的操作的顺序。过程500是用于实现使用命名对象的标识符生成的示例过程;参考不同附图,此处包括了实现使用命名对象的标识符生成的附加讨论。
在过程500中,接收对程序的进程的标识符的请求(动作502)。该请求可从程序(例如,程序的父进程或其他进程)接收。该标识符可以是如上面讨论的进程的安全标识符。
生成进程的候选标识符(动作504)。该候选标识符包括可变部分,并且还可包括如上面讨论的固定部分。
作出创建拥有名称的命名对象的尝试(动作506),该名称是候选标识符。如上面所讨论的,基于拥有该名称的命名对象是否已经存在,尝试可以是成功的或不成功的。
过程500基于尝试是否成功而前进(动作508)。如果尝试是成功的,则返回候选标识符(动作510)。该候选标识符作为进程的标识符被返回,并且可被返回给请求方(例如,动作502中从其接收请求的程序)。然而,如果尝试是不成功的,则过程500返回到动作504,以生成附加的候选标识符并尝试创建拥有名称的命名对象,该名称是附加的候选标识符。这种生成和尝试可被重复一次或多次,如上面讨论的。
本文讨论了由各模块执行的诸如接收、请求、生成、获得等各个动作。本文讨论的执行某一动作的特定模块包括该特定模块本身执行该动作或另选地该特定模块调用或与其他方式访问执行该动作的另一组件或模块(或与该特定模块联合执行该动作)。因而,执行某一动作的特定模块包括该特定模块本身执行该动作或该特定模块调用或以其他方式访问的另一模块执行该动作。
图6示出根据一个或多个实施例的可被配置成实现使用命名对象的标识符生成的示例计算设备600。计算设备600可以是例如图1的设备100或图2的设备200。
计算设备600包括一个或多个处理器602、可包括一个或多个存储器和/或存储组件606的一个或多个计算机可读介质604、一个或多个输入/输出(I/O)设备608、以及允许各组件和设备彼此通信的总线610。计算机可读介质604和/或一个或多个I/O设备608可以作为计算设备600的一部分被包括,或者可另选地可以耦合到计算设备600。处理器602、计算机可读介质604、设备608中的一个或多个、和/或总线610可任选地被实现为单个组件或芯片(例如,片上系统)。总线610表示若干类型的总线结构中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各种不同的总线体系结构中的处理器或局部总线。总线610可包括有线和/或无线总线。
存储器/存储组件606表示一个或多个计算机存储介质。组件606可包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等等)。组件606可包括固定介质(例如,RAM、ROM、固定硬盘驱动器等等)以及可移动介质(例如,闪存驱动器、可移动硬盘驱动器、光盘等等)。
此处所讨论的技术可以以软件实现,该软件具有由一个或多个处理器602执行的指令。可以理解,不同的指令可以存储在计算设备600的不同的组件中,诸如存储在处理器602中,存储在处理器602的各种高速缓冲存储器中,存储在设备600的其他高速缓冲存储器(未示出)中,存储在其他计算机可读介质上等等。另外,可以理解,指令存储在计算设备600中的位置可以随着时间而变化。
一个或多个输入/输出设备608允许用户向计算设备600输入命令和信息,以及允许信息被呈现给用户和/或其他组件或设备。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、话筒、扫描仪等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡等等。
此处可以在软件或程序模块的一般上下文中描述各种技术。一般而言,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、应用、对象、组件、数据结构等等。这些模块和技术的实现可以存储在某种形式的计算机可读介质上或通过某种形式的计算机可读介质传输。计算机可读介质可以是可以被计算设备访问的任何可用介质。作为示例,而非限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算机访问的任何其他介质。计算机存储介质指的是用于信息的存储的介质,与仅仅是信号传输、载波、或信号本身形成对比。因而,计算机存储介质指的是非信号承载介质,并且不是通信介质。
“通信介质”通常用诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据。通信介质还包括任何信息传送介质。术语“已调制数据信号”指其一个或多个特征以这样的方式设置或改变以便在信号中对信息进行编码的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线路连接,以及无线介质,诸如声学、RF、红外线和其他无线介质。上面各项中的任何组合也包括在计算机可读介质的范围内。
一般而言,此处所描述的任何功能或技术都可使用软件、固件、硬件(例如,固定逻辑电路)、手动处理或这些实现的组合来实现。如此处所使用的术语“模块”和“组件”一般代表软件、固件、硬件或其组合。在软件实现的情况下,模块或组件表示当在处理器(例如,一个或多个CPU)上执行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算机可读的存储器设备中,可以参考图6发现关于其进一步的描述。在硬件实现的情况下,模块或组件表示执行指定任务的功能块或其他硬件。例如,在硬件实现中,模块或组件可以是专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD),等等。本文描述的使用命名对象的标识符生成技术的特征是平台无关的,从而意味着该技术可在具有各种处理器的各种商用计算平台上实现。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
Claims (10)
1.一种方法,包括:
在设备处生成进程的候选标识符(402);
尝试创建命名对象(404),所述命名对象拥有名称,所述名称是所述候选标识符;
响应于成功地尝试创建所述命名对象,使用所述候选标识符作为所述进程的标识符(408);以及
响应于未成功地尝试创建所述命名对象,重复所述生成和尝试(402、404、406)。
2.如权利要求1所述的方法,其特征在于,所述进程的所述标识符包括安全标识符,所述安全标识符指示所述进程被许可访问所述设备的一个或多个资源中的哪个。
3.如权利要求1所述的方法,其特征在于,所述候选标识符包括可变部分,所述可变部分是一组值中的值,该组值包括特定数量的值,所述特定数量的值是对可存在于所述设备上的进程的数量的限制。
4.如权利要求3所述的方法,其特征在于,所述特定数量的值是基于所述设备的性能而变化的。
5.如权利要求3所述的方法,其特征在于,所述进程是程序的进程,并且所述限制是对可存在于所述设备上的所述程序的进程的数量的限制。
6.如权利要求1所述的方法,其特征在于,还包括当所述进程终止时,释放所述命名对象。
7.如权利要求1所述的方法,其特征在于,所述进程是程序的进程,并且所述生成、尝试和使用由所述程序来执行。
8.如权利要求1所述的方法,其特征在于,仅当拥有名称的另一个命名对象不存在于所述设备上时,成功地尝试创建所述命名对象,所述名称是所述候选标识符。
9.一种计算设备,包括:
一个或多个处理器(602);以及
一个或多个其上存储有多个指令的计算机可读介质(604),所述指令在被所述一个或多个处理器执行时使得所述一个或多个处理器执行以下动作:
接收对程序的进程的标识符的请求(502);
在所述计算设备处生成所述进程的候选标识符(504);
尝试创建拥有名称的命名对象(506),所述名称是所述候选标识符;以及
响应于成功创建所述命名对象的尝试,向所述程序返回所述候选标识符作为所述进程的标识符。
10.如权利要求9所述的计算设备,其特征在于,所述候选标识符包括固定部分和可变部分,所述可变部分是从一组特定的值中选择的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/360,329 | 2012-01-27 | ||
US13/360,329 US9298499B2 (en) | 2012-01-27 | 2012-01-27 | Identifier generation using named objects |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150159A true CN103150159A (zh) | 2013-06-12 |
CN103150159B CN103150159B (zh) | 2017-04-12 |
Family
ID=48548261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310028786.3A Active CN103150159B (zh) | 2012-01-27 | 2013-01-25 | 使用命名对象的标识符生成 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9298499B2 (zh) |
CN (1) | CN103150159B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844304A (zh) * | 2016-09-18 | 2018-03-27 | 阿里巴巴集团控股有限公司 | 虚拟机热升级方法及装置 |
CN111079915A (zh) * | 2018-10-19 | 2020-04-28 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN114090209A (zh) * | 2021-11-23 | 2022-02-25 | 四川启睿克科技有限公司 | 基于risc-v架构的密码获取方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856540B1 (en) * | 2010-12-29 | 2014-10-07 | Amazon Technologies, Inc. | Customized ID generation |
CN104954374B (zh) * | 2015-06-15 | 2018-11-20 | 上海网车科技有限公司 | 一种车联网通信协议的设计方法 |
US10592470B2 (en) * | 2016-08-10 | 2020-03-17 | Microsoft Technology Licensing, Llc | Discovery of calling application for control of file hydration behavior |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060265754A1 (en) * | 2005-05-19 | 2006-11-23 | Microsoft Corporation | Systems and methods for pattern matching on principal names to control access to computing resources |
US20100223446A1 (en) * | 2009-02-27 | 2010-09-02 | Microsoft Corporation | Contextual tracing |
WO2010147486A2 (en) * | 2009-06-19 | 2010-12-23 | Core Technology Ltd | Computer process management |
US20110225226A1 (en) * | 2010-03-11 | 2011-09-15 | International Business Machines Corporation | Assigning A Unique Identifier To A Communicator |
CN102236549A (zh) * | 2010-04-20 | 2011-11-09 | 微软公司 | 跨动态边界的运行时分析的可视化 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4761808A (en) * | 1987-03-18 | 1988-08-02 | Sheldon Howard | Time code telephone security access system |
US5522077A (en) * | 1994-05-19 | 1996-05-28 | Ontos, Inc. | Object oriented network system for allocating ranges of globally unique object identifiers from a server process to client processes which release unused identifiers |
US6714930B1 (en) * | 2000-05-31 | 2004-03-30 | International Business Machines Corporation | Lightweight directory access protocol, (LDAP) trusted processing of unique identifiers |
US7328242B1 (en) | 2001-11-09 | 2008-02-05 | Mccarthy Software, Inc. | Using multiple simultaneous threads of communication |
US7233999B2 (en) | 2003-01-28 | 2007-06-19 | Altaf Hadi | System and method for delivering last mile computing over light from a plurality of network edge locations |
US7657543B1 (en) * | 2004-10-12 | 2010-02-02 | Sun Microsystems, Inc. | Method and system for creating and using shadow roots |
JP2007199811A (ja) * | 2006-01-24 | 2007-08-09 | Hitachi Ltd | プログラム制御方法、計算機およびプログラム制御プログラム |
US8407704B2 (en) | 2006-09-26 | 2013-03-26 | International Business Machines Corporation | Multi-level memory architecture using data structures for storing access rights and performing address translation |
US20080222634A1 (en) | 2007-03-06 | 2008-09-11 | Yahoo! Inc. | Parallel processing for etl processes |
US8938722B2 (en) * | 2012-10-17 | 2015-01-20 | International Business Machines Corporation | Identifying errors using context based class names |
-
2012
- 2012-01-27 US US13/360,329 patent/US9298499B2/en active Active
-
2013
- 2013-01-25 CN CN201310028786.3A patent/CN103150159B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060265754A1 (en) * | 2005-05-19 | 2006-11-23 | Microsoft Corporation | Systems and methods for pattern matching on principal names to control access to computing resources |
US20100223446A1 (en) * | 2009-02-27 | 2010-09-02 | Microsoft Corporation | Contextual tracing |
WO2010147486A2 (en) * | 2009-06-19 | 2010-12-23 | Core Technology Ltd | Computer process management |
US20110225226A1 (en) * | 2010-03-11 | 2011-09-15 | International Business Machines Corporation | Assigning A Unique Identifier To A Communicator |
CN102236549A (zh) * | 2010-04-20 | 2011-11-09 | 微软公司 | 跨动态边界的运行时分析的可视化 |
Non-Patent Citations (1)
Title |
---|
陶树平: "《数据库系统原理与应用》", 31 January 2005, article "Object Pascal的面向对象编程" * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107844304A (zh) * | 2016-09-18 | 2018-03-27 | 阿里巴巴集团控股有限公司 | 虚拟机热升级方法及装置 |
CN111079915A (zh) * | 2018-10-19 | 2020-04-28 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111079915B (zh) * | 2018-10-19 | 2021-01-26 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN114090209A (zh) * | 2021-11-23 | 2022-02-25 | 四川启睿克科技有限公司 | 基于risc-v架构的密码获取方法 |
CN114090209B (zh) * | 2021-11-23 | 2024-04-12 | 四川启睿克科技有限公司 | 基于risc-v架构的密码获取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103150159B (zh) | 2017-04-12 |
US9298499B2 (en) | 2016-03-29 |
US20130198831A1 (en) | 2013-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102232217B (zh) | 插件的沙盒执行 | |
CN103150159A (zh) | 使用命名对象的标识符生成 | |
US20170280437A1 (en) | Mobile Terminal and Resource Management Method of Mobile Terminal | |
US10523714B2 (en) | Device policy composition and management system | |
EP3852335B1 (en) | Method and system for modifying blockchain network configuration | |
US20120246317A1 (en) | Cloud-Based Resource Identification and Allocation | |
US20220004410A1 (en) | Method For Deploying Virtual Machine And Container, And Related Apparatus | |
CN103810444B (zh) | 一种云计算平台中多租户应用隔离的方法和系统 | |
CN105119966A (zh) | 一种公众号管理方法及装置 | |
CN102917052A (zh) | 一种云计算系统中资源分配的方法 | |
CN103309721A (zh) | 虚拟机监视器管理系统及方法 | |
CN103873457A (zh) | 用于游戏服务器间负载均衡的方法和设备 | |
US20160191407A1 (en) | Selecting computing resources | |
CN110708369A (zh) | 设备节点的文件部署方法、装置、调度服务器及存储介质 | |
CN114706690B (zh) | 一种Kubernetes容器共享GPU方法及系统 | |
CN106980537A (zh) | 云计算环境中删除云主机的方法和系统 | |
CN114650170B (zh) | 跨集群资源管理方法、装置、设备和存储介质 | |
CN111464331A (zh) | 一种线程创建的控制方法、系统及终端设备 | |
CN111147600B (zh) | 集群环境下的服务执行方法及终端 | |
CN110543357B (zh) | 管理应用程序对象的方法,相关装置及系统 | |
US20060195586A1 (en) | Sessions and terminals configured for binding in an extensible manner | |
CN109582464B (zh) | 一种云平台管理多种虚拟化平台的方法和装置 | |
CN110960858B (zh) | 一种游戏资源的处理方法、装置、设备及存储介质 | |
CN103761473A (zh) | 一种移动终端上的应用管理系统和方法 | |
CN104572036B (zh) | 事件的处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150717 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150717 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |