计算机程序应用许可证管理方法和系统的制作方法

文档序号:6405277阅读:303来源:国知局
专利名称:计算机程序应用许可证管理方法和系统的制作方法
此项发明涉及对计算机程序的使用进行控制的领域,特别是在计算机连网的领域,为计算机程序在网络结点中运行,管理许可证的可用性。
过去,人们采用各种方法防止对计算机程序的非法复制和使用。在单独的计算机,例如个人计算机上,人们采用称为防止复制的方法和设备来控制计算机程序的使用。这种个人计算机都带有一个中央处理机(即CPU),系统内存,还可以选配磁盘存贮器,例如磁盘驱动器,简称为磁盘。一般来说,当许多个人计算机联接在一起组成一个计算机网时,上述防止复制的方法和设备的作用就不够了。
当多个个人计算机联接成网时,这些个人计算机就称为网中的节点。这种网中也可有一个文件服务器,它的作用是对系统中的数据,包括对在特定节点上使用计算机程序的可能性做集中总控。有些文件服务器系统要求应用程序检查文件服务器的序号以便能在该服务器上运行。例如在Doug和DaleCabell合写的《软件保护》一文中(载于MicroCommunicatious,1985年第2卷,第5期,35-37页)指出,应用程序是靠发出一个特定的网上呼叫和把呼叫的结果与予定的回答相比较来检查上述序号的。如果序号正确,应用程序就收到一个完成码。如果序号不正确,为了防止应用程序被运行,用户被强行注销。
另外一些系统要求在节点上的计算机装有专门的硬件板以便控制计算机程序在其上的运行。因此,这类系统就被限制在具备这种硬件板的工作站上运行。作用基于硬件的防止复制的方法时,在一特定节点的硬件板中有一认证码,并要求被保护的计算机程序中带有相应的匹配码以便在该节点上运行。这种解决防止复制问题的方法是着眼于计算机程序的。因为非法复制来的程序将没有与工作站中的硬件板内的认证码相一至的匹配码。然而,这种防止复制的方法在下述情况下不适用当网中任一节点都带有可被认证的序号,网中多个节点同时运行某一计算机程序的要求超过了允许该程序运行的许可证的数目时。
虽然人们提出了这种或那种方法和系统来解决问题,文献表明在使用计算机网络时,用户仍然面临着问题,就是究竟允许在网中同时运行多个特定的计算机程序。
此发明的目的是提供方法和系统来控制计算机程序的使用。
此发明的另一个目的是在计算机联网的节点上用许可证的可能性来管理计算机程序在这些节点上的运行。
与此目的相关,本发明将使一特定计算机程序的一个副本在任何时刻,在该网络中的任何一个节点上能运行,其前提是在请求在该网络中该节点上运行该副本时,该网络中正在运行的该计算机程序的其它副本的总数,比批准在该网络中同时运行该程序的许可证的总数小。
此发明的另一目的是给网络中的一个节点一个许可证文件,该文件中包括首先,至少有一个许可证,它可以有效地批准运行一个给定计算机程序的副本;其次,一个唯一的标识,它与给定计算机程序的副本同在一处,并共同先确定前述唯一标识是有效的,然后再使用前述许可证,批准给定计算机程述的前述副本运行。
此发明的进一步目标是提供能在节点之间传送的许可证,以便在特定的节点上运行特定的程序。其中,许可证的传送受控于赋予每一个许可证的标识,并且被传送到特定节点上的许可证的标识是唯一的。
此发明更进一步的目的是为网络中每个计算机程序提供一个许可证管理设施,即如果上述至少含有一个许可证的许可证文件所具有的唯一标识码与系统记录中的标识码相匹配,就允许计算机程序在特定节点上运行,而当这个特定节点的许可证文件无效时,许可证管理设施就在其它节点的许可证文件中搜寻批准在此节点上运行计算机程序的许可证。
许可证管理设施附加的目的是把可用的许可证从远程节点传送到需要使眉扑慊绦虻谋镜亟诘悖备蒙枋└偷奖镜亟诘闵系男砜芍じ秤栊碌奈ㄒ槐晔恫⑸镜粼冻探诘闵系南嘤锹迹庋眯砜芍ぞ椭辉谒淮偷酱锏谋镜亟诘闵嫌行А 根据以上提到的这样和那样的目的,此发明提供的管理系统可控制计算机程序在由众多节点(或工作站)组成的网络中的可运行性。计算机程序的卖方可能希望在每个节点上运行单个或多个计算机程序时都要有许可证,而计算机网的所有者则可能要求在网络中运行特定计算机程序的可用许可证的数目要小于网中节点的总数,或者最多等于该网的所有用户可能会要求同时使用该计算机程序的副本的总数。本系统满足卖方和网的所有者的利益的方式如下。
为了满足联网的所有者的利益,装入网中的许可证的总数小于网中节点的总数,而且在一般情况下,通常也小于网中所有用户可能会同时使用该计算机程序副本的数目。一般而言,网中总有一个许可证文件,例如在某特定节点上。在此发明的一个具体实例中,一个许可证文件内可能只含有一个许可证,在一个或多个节点上则可能装有许多这样的许可证文件。在另一具体实例中,许可证文件含有任意数目的某一特定计算机的许可证。系统设施(如操作系统)赋予每一个许可证文件一个唯一的标识(UID),此标识与网内其它许可证文件的标识不同。当要求在选定的节点上运行某计算机程序时,就检查许可证文件以确定其是否有效。检查的方法是比较许可证文件的标识与系统设施赋予该许可证文件的标识。如果这两个标识相匹配,就进一步检查这许可证文件内诸许可证中有无一个可用于选定的节点。当在有效的许可证文件内找到了可用的许可证后,管理系统就在选定的节点上启动计算机程序。如果没有找到有效的许可证文件,或者全部有效的许可证文件内的许可证正被使用者,或这些许可证不能用,则管理系统回送给计算机程序一个状态,指示不允许它启动。
此发明的其它目的涉及到许可证管理方法,该方法用来限制在网中诸节点上同时运行某计算机程序的副本的数目(以下用S表示此数)。此限制是根据该网所具有的该计算机程序的许可证数目(以下用L表示此数)做出的。为了保护计算机程序卖方的利益,此管理方法限制S小于或等于L。在每个运行特定计算机程序节点内都有许可证存贮器(例如在磁盘上)和系统存贮器。许可证存贮器保存许可证文件,该文件里存有给定计算机程序的一个或多个许可证。许可证存贮器中还保存着目录文件。该目录文件内有许可证文件的名字以及该许可证文件的唯一标识(UID)。
该管法还包括有把给定计算机程序加载到网上至少一个节点的许可证存贮器里去的步骤。在时间方面来要求,该程序必须是有效的,还没有超过卖方授权使用的期限。下一步骤是把一个或多个许可证文件加载到网内至少一个带点的许可证存贮器里。在前面提到的第一个具体实例中,许可证文件含有一个某计算机程序的许可证,要用许可许可证文件提供L个许可证。而在第二个例子中,只需要用一个许可证文件,它应含有L个许可证。
然后,给每一个加载好的许可证文件分配一个标识,该标识在加载过程中是唯一的,不同于其它许可证文件的标识。在一个许可证还没有被用于允许运行计算机程序的副本时,它处于待用状态。我们把节点分为本地节点和远程节点。用户请求在其上运行计算机程序的节点是本地节点。网中任一其它节点是远程节点。
在前述第一个实例中,许可证文件里的许可证只能允许在该许可证文件所在的本地节点上运行一个计算机程序的副本。当需要时,可把许可证文件(从别处)传到该本地节点来。在第二个实例中,在许可证文件里的任一许可证,都可以允许在任一本地或远程节点上运行特定计算机程序的副本。
对在本地节点上运行某一计算机程序的请求的响应是在该本地节点的目录文件里寻找许可证文件。在确定(本地节点里)无有效的许可证文件,或虽然许可证文件有效,但其内无可用的许可证后,就在各远程节点的目录里寻找有效的许可证文件。
在前述第一个实例中,如发现某远程节点里的许可证文件有效,且其内的许可证应处于待用状态,就把该远程节点里正在待用的许可证传送到本地节点。然后,赋予被传送到本地节点的许可证一个唯一的标识并把该远程节点里的许可证文件删除。然后,一个状态信息被送回到计算机程序,说明该程序已获得许可证,可在本地节点上运行。
在第二个实例中,如果在某远程节点里有有效的许可证文件且该文件内有一个可用的许可证,本地节点里与该计算机程序副本有关联的许可证管理程序就批准使用该副本并修改该远程节点的许可证文件里的记录,说明该可用的许可证现已被占用,不允许其它节点使用了。
附图的简介细读下述各细节及有关图示,为更清楚地了解此发明的其它目的、特征和优点。这些图包括

图1是一个计算机网络的框图。它们显示了联网的节点;网上某计算机程序的可用许可证数目小于对这些许可证可能的需求数;
图2A,2B和2C是某节点上磁盘存贮器某区的框图。它显示了此发明第一个实例中的目录文件的内容,说明在该节点里有许可证文件和计算机程序;它们还显示了根据许可证文件是否有效和是否含有可用的许可证,计算机程序文件内的许可证管理程序管理着该计算机程序副本的使用;
图3A和3B构成一个流程图。它们显示了此发明的第一个实例中许可证管理程序所执行的功能,即无论起始在某一本地节点里是否有可用的某计算机程序的许可证,都要使该计算机程序的副本可在这个本地节点上运行;
图4是一个流程图。它显示在此发明第一个实例中,许可证起初是如何装入某节点里的许可证文件中去的,以及如何赋予该许可证文件一个唯一的标识码,并且当该许可证被传送到另一节点时,该唯一标识码如何被改变;
图5A,5B和5C是某节点上磁盘存贮器某区的框图。它们显示了此发明第二个实例中的目录文件的内容,说明在该节点里有许可证文件和计算机程序,该许可证文件里含有多个许可证;它们还显示该许可证文件和一个在计算机文件内的许可证管理程序;
图6是一个流程图。它显示了第二个实例中许可证管理程序执行的功能,即根据许可证文件的有效性和该文件内的诸许可证中有无可用的许可证,来控制该计算机程序副本的使用;
图7A是一个流程图。它显示了第二个实例中许可证文件起初是如何装入某个节点并被赋予唯一的标识符;
图7B是一个流程图。它显示了第二个实例中,一个库源文件,它被提供给客户,以供应许可证。
对所选实例的详细介绍概述请看图1。如图所示,此发明的管理系统(10)用于网络(11),网络(11)中有多个节点(12),各节点之间由网络线(13)相联。为了叙述方便,取众多节点之一做为本地节点,或称第一个节点(14)。注意任意一个节点(12)都可能或为本地节点(14)。每一个节点里(12)都有操作系统(15),系统存贮器(16),加载安装程序(17)和中央处理器-CPU(18)。各节点(12)也都具有外围存贮设备例如磁盘(19)。相对于本地节点(14)而言,其它非本地节点的节点称为远程节点(20)。
许可证文件传送的实例如图1,图2A至2C,图5A至5C所示,在磁盘(19)里有多个文件。对此发明的第一个实例(简称为许可证传送实例),这些文件包括目录文件21A(图2A),许可证文件22A(图2B)和计算机程序文件33A(图2C)。在文件23A内的计算机程序24A可能是一个标准的应用程序,例如是Auto-trol技术公司的产品-5000系列高级图形软件。计算机程序文件23A里也可能有一个许可证管理的计算机程序。对于许可证传送实例,该许可证管理的计算机程序称作许可证管理程序25A,详见图3A和3B。在目录文件21A内,有此许可证传送实例的目录26A。许可证文件23A可能在,也可能不在磁盘19里,它取决于网络(11)在工作中当时的情况。对于此许可证传送实例,许可证文件22A内有一许可证27。
许可证库实例的文件对于此发明的第二个实例(简称为许可证库实例),我们称其许可证文件为22B(图5B),22B可能含有多个许可证27,其数目可能等于允许同时运行计算机程序24B(图5C)的副本的数目。类似地,目录文件称 1B(图5A),21B含有目录26B,26B反映许可证文件22B中的许可证库28的情况。计算机程序24B放在计算机程序文件23B(图5C)里,23B里还有许可证管理程序25B。计算机程序24B可能是不同于24A的一个应用程序。
计算机程序24A和24B的控制此发明的设施和方法可有效地控制计算机程序24A和24B的运行,比在本地节点(14)上。起初,计算机程序24A和24B是分别放在本地节点(14)或任一个远程节点(20)里的计算机程序文件23A和23B中的。无论何种情况,当某用户想在本地节点(14)上运行计算机程序24A和24B的副本时,计算机程序24A,24B以及其相应许可证管理程序25A或25B将从相应的计算机程序文件23A或23B调出,写入到本地节点(14)的系统存贮器(16)里。而且,在网络(11)的所有者的控制下,存贮在网络(11)的节点(12)里的许可证数量就少于网络(11)里节点(12)的总数。同样,在网络所有者的控制下,因为允许多个计算机程序24A或24B的副本在某一节点(12)上同时运行,在诸节点(12)的许可证文件(多个22A或单个22B)内的许可证27的数目无需与节点(12)的数目相关,并可以小于该网的所有用户可能请求同时运行计算机程序24A或24B的副本的总数。因为网络的所有者必须购买计算机程序24A和24B的许可证27,计算机程序的卖方的利益就受到保护。所购的许可证27的总数就限制了可以同时运行计算机程序24A和24B的副本的总数。
操作系统(15)赋予每个许可证文件22A或22B一个标识,本地节点(14)里具有许可证27的许可证文件22A也不例外。本地节点(14)内操作系统(15)与加载安装程序(17)联合运行的结果使得在不同的时间赋予许可证文件22A的标识是不同的。为便于表达,把在特定时间赋给节点(12)上的许可证文件22A或22B的标识记做UID。
当某用户在本地节点(14)要求在该节点上运行计算机程序24A或24B时,相应的许可证管理程序25A或25B就启动,在该本地节点(14)里相应的目录26A或26B中寻找相应许可证文件22A或22B的名子,以确定该本地节点(14)里是否有许可证文件22A或22B。如果有的话,就比较此许可证文件22A或22B的实际UID和操作系统(15)赋予许可证文件22A或22B的UID。如果这两个UID相同,相应的许可证管理程序25A和25B就检查在相应的许可证文件22A或22B中有无可用的许可证27可在本地节点(14)上使用。如果有可用的许可证27,并且它还没有失效,则相应的许可证管理程序25A或25B就使在该本地节点(14)里的计算机程序24A或24B能在该本地节点(14)中运行。
当许可证文件22A或22B在本地节点(14)的磁盘(19)中时,此发明的方法可以控制计算机程序24A和24B在该节点上的运行。当提出请求在该节点上运行计算机程序24A或24B时,如该节点上没有许可证文件22A或22B,这方法仍可使用。在上述两种情况下,此方法都是管理许可证27,以限制在网络中诸节点(12)上运行计算机程序24A或24B的副本的数目。这个限制是由网络(11)中可用的许可证17的总数L决定的。
在使用此法时,在把计算机程序24A或24B加载到至少一个节点(12)之后,把需要的L个许可证27加载到需要多的节点(12)上。在许可证传送实例中,就是把L个许可证文件22A或加载到选定的诸节点(12)上,而在许可证库实例中,就是把仅仅一个许可证文件22B加载到一个节点(12)上,但此许可证文件22B内有
个许可证27构成的许可证库28。计算机程序24A或24B的许可证数L通常小于网络(11)中的节点(12)的总数。然而,当需要在某节点(12)上运行多于一个程序24A的副本时,网中许可证27的总数L会小于该网用户可能会请求同时运行程序24A的副本的总数。
每个被加载到节点(12)上的许可证文件22A或22B被赋予一个UID(即唯一标识,下同)。如要求在本地节点(14)上运行程序24A或24B的的副本,就在该节点的相应目录26A或26B寻找,在此例中,寻找的结果确定该节点的磁盘(19)里无许可证文件22A或22B。然后就逐个搜寻在远程节点(20)中的相应目录26A或26B。一旦寻找到了某些远程节点(20)中的有许可证文件22A或22B,就把该节点中相应的许可证文件22A或22B的UID,与操作系统(15)写入该远程节点(20)的相应目录26A或26B的此许可证文件22A或22B的UID相比较。如果这两个UID相同,在两个实例中同样都要再确定在所找到的许可证文件22A或22B内的许可证27是否已被占用。如果没被占用,请求在本地节点(14)上诵械募扑慊绦 4A或24B被允许运行。
在许可证传送实例中,当两个UID相同且在许可证文件22A里有可用许可证时,就修改该许可证文件22A。此修改即把该远程节点(20)里的许可证27传送到本地节点(14)的系统存贮器(16)中。然后本地节点(14)的操作系统(15)赋予传送来的许可证27一个新的UID并把此UID写入该本地节点(14)的系统存贮器(16)中。而对那个远程节点(20)里的许可证文件22A的修改则是将其中的许可证27删除,这就保证相应于原来在该远程节点(20)中的那个许可证27,网络中仍然只有一个许可证27。然后,对这种系统存贮器(16)中的被传送的许可证27的记录和为了这种被传送的许可证27的新UID被标记为正在使用(见图2B)。上述被传送来的许可证27的新UID及图2B中所示的其它许可证信息被加密,并加密存贮在本地节点(14)的系统存贮器(16)里。然后,这些关于传送来的许可证27的加密信息也写入本地节点(14)的磁盘(19)里。
在许可证库的实例中,当两个UID相同并且在许可证文件22B的许可证库28里有任意一个许可证27可用时,许可证文件22B也要被修改,此修改也就是减少可用的许可证27的数目,就是说,库中的可用许可证27的数目要减1。
许可证传送实例工作的细述请细看图1,网络(11)中的每个节点(12)都可能是一台独立的计算机-例如阿波罗DN3000计算机。该计算机具有中央处理器CPU(18),系统存贮器(16)及在该存贮器(16)内存放的操作系统(15)和加载安装程序(17)。
在对网络(11)中的每个节点(12)进行初始化时,每个将要在网中任一节点(12)上运行的计算机程序24A(该节点可是本地节点(14)或远程节点(20)照原样被加载到至少一个节点(12)里。如图2C所示,磁盘(19)里的元件23A存放着计算机程序24A及许可证管理程序25A。
许可证装入的步骤参见图4,装入诸节点(12)里的许可证27的总个数L取决于网络( )的所有者购买了多少个计算机程序24A的副本。即所有 购买了L个某计算机程序24A的许可证27,在网上同一时间里就最多允许L个该计算机程序24A的副本同时运行。例如如果在网络(11)中有10个节点(12),且如果在同一时刻在某一节点(12)上最多允许某计算机程序24A的3份副本同时运行,那么有时就可能出现同时运行30份该程序24A的副本的请求。然而,如果只有10个该程序24A的许可证27装在网络中,各节点(12)上的许可证管理程序25A(见图2C,3A和3B)就只允许前述30份程序24A的副本里的10同时运行。就这样,在网络(11)中,不论当许可证27的数目少于节点(12)(当每个节点(12)上只能运行程序24A的一份副本)总数,或者当许可证的数目少于对许可证的要求数目(当一个节点(12)上可同时运行多份计算机程序24A的副本)时,该许可证管理程序25A可以限制在同一时刻可在网络(11)中运行的该程序24A的副本的总数。
图4显示了把某许可证27装入到网络(11)的一个节点(12)上所用的步骤。一开始,先把许可证27从安装上的媒介29拷贝到磁盘(19)里的许可证文件22A内,比如说节点(14)的磁盘(19)中的22A内。如图2B所示,许可证文件22A内至少还有一个许可证27的失效日期。同时,操作系统(15)赋予许可证文件一个UID。由于在许可证文件22A内只有一个许可证27,所以这个UID也是该许可证27的UID。但此时,许可证27还不真正有效。为使其生效,安装加载程序(17)从磁盘(19)读出许可证文件22A的UID并给它加密以构成第一个授权码,称为Cl。使用者或容户然后呼叫已装入节点(12)的计算机程序24A的卖方并告诉卖方加密的授权码Cl。卖方检查Cl码以确定许可证27是否合法。如果Cl合法,卖方用另一种算法对Cl再次生成第二个授权码,称为C2。卖方把加密的C2送往客户。客户把收到的C2输入到加载安装程序(17)里,加载安装程序(17)对C2进行检查,看它是否由卖方的计算机所生成。如果是,加载安装程序把许可证文件22A的UID及其它许可证信息加密并写入本地节点(14)的磁盘(19)里的许可证文件22A中。到此,我们应当理解,在做出或可以做出任何使用计算机程序24A的请求之前,必须把UID与许可证27存在本地节点(14)上的许可证文件22A里。
然后,此许可证装入过程反复多次,直到网络(11)的诸节点(12)里获得计算机程序24A的L个许可证文件22A,这些文件中有所要求的L个许可证27。到此时,网络(11)中将已装入至少一个计算机程序24A的副本及该程序24A的符合要求的L个许可证27。网络(11)已准备好接受用户在某节点(12),例如在本地节点(14)上运行计算机程序24A的副本的请求。
请求在本地节点(14)上运行计算机程序24A此发明的许可证传送实例所用的方法和设施通过参阅图3A和3B更易被理解。在图3A和3B中,用流程图显示了许可证管理程序25A所执行的功能。首先,必须知道许可证管理程序25A(图2C)是每个存放在计算机程序文件23A中的计算机程序24A的副本的一个组成部分。在此发明选用的实例中,可使磁盘(19)中的文件23A里的计算机程序24A带有许可证管理顺序25A做到此。例如每当把计算机程序24A的一份副本写入某节点(12)的系统存贮器(16)中去时,相应的许可证管理程序25A也被写入该系统存贮器(16)。
图3A和3B显示了与每个计算机程序24A相应的许可证管理程序25A执行的功能。为叙述方便,假设客户网上的用户想在本地节点(14)上运行该计算机程序24A的副本。该本地节点(14)里的该计算机程序24A的副本就调用一子程序与该本地节点(14)里的许可证管理程序25A联系。做为响应,许可证管理程序25A就查问(步骤30)在该本地节点(14)里是否有计算机程序24A的许可证27。此查问的第一步是确定该本地节点(14)的磁盘(19)是否有许可证文件22A(即许可证27)。如果有,许可证管理程序25A走“是”路径31。然后在步骤32检测此许可证27是否已被占用或者在工作,即步骤32将检测出那时中央处理机(18)是否正在使用该许可证27,也即是否正有一个计算机程序24A的副本在许可证27的批准下在本地节点(14)上运行。如果许可证27正在工作,许可证管理程序25A就走“是”路径33,返回到步骤34。如果本地节点(14)的许可证不是正在工作,许可证管理程序25A还要检查此不在工作的许可证是否有效。查法是问操作系统(15)该许可证27的UID,此UID是从前在该本地节点(14)上由操作系统(15)存入到系统存贮器(16)的一个记录中去的。然而,许可证管理程序25A把存有该许可证27的许可证文件22A的UID解密并把它与从操作系统(15)所得到的该许可证27的UID相比较。如果两个UID不同,则该许可证无效。在无效的情况下,许可证管理程序25A就走“是”路径33返回到步骤34。如果两个UID相同,许可证管理程序25A还要比较当天的日期是否晚于该不在工作的许可证27的失效日期(见图2B)。如果晚了,就说明该许可证已经满期,许可证管理程序25A也要走路径33返回步骤34。如果还未满期,许可证管理程序25A就走路径35,这表明许可证27没被占用,没过期并且有效。顺路径35到达步骤36,在步骤36就要给许可证27做标记,说明它正在工作,已被占用。以供回答其它新的使用计算机程序24A的请求。(见图2B,文件22A的第二项)。这样就可防止正在工作中的当前有效的许可证27被分配到其它节点上去工作。许可证管理程序然后走路径37到达步骤38。在步骤38把一状态信息送回到计算机程序24A,批准它运行。即使程序24A可在本地节点(14)的中央处理机(18)上运行。
寻找在远程节点(20)上的许可证27如前所述,在本地节点(14)上,对步骤32中所提问题的回答可能是肯定的,也可能是否定。如果任意一个回答是“是”,就说明在本地节点(14)上没有对计算机程序24A可用的许可证27。在步骤34中注明,要搜寻节点(14)和诸远程节点(20)。如果搜遍了所有的节点,就回答“是”,走路径39到步骤40。例如,如果还没搜寻第一个远程节点(20),就走路径41到步骤42。步骤42检查网络(11)的下一个节点(12)-在上例中是第一个远程节点(20)上是否存在许可证27。如果在该远程节点(20)的许可证文件22A内无许可证27,走“NO”路径43,许可证管理程序25A再执行步骤34,确定是否已在所有的节点(12)里寻找过许可证 7。在上例中,因为只搜寻过本地节点(14)和第一个远程节点(20),又走路径41,许可证管理程序25 循环到步骤42。又在网络(11)的下一个,也就是第二个远程节点里寻找是否有许可证27。假设网络(11)里反时针方向的下一个节点就是下一个远程节点,并且在此远程节点(20)的磁盘(19)的许可证文件22A里有一许可证27,就走“是”路径44到步骤45。步骤45同前述步骤32一样,许可证管理程序25A要检查在第二个远程节点(20)的许可证文件22A里的许可证27是否已被占用,有效期是否未过,是否无效等等。如果是其中任一情况,就走“是”路径46到步骤34,就再次检查是否所有节点(12)已被搜寻。
把许可证27传送到本地节点(14)如果在第二个远程节点(20)的许可证文件22A里的许可证27没有满期,没被占用而且是有效的,就走“NO”路径47到步骤48。步骤48是把许可证27传送到本地节点(14)的第一步。以后我们称这样传送的许可证27为“被传送的许可证”。在步骤48,许可证管理程序25A把找到的许可证存入本地节点(14)的系统存贮器16里。然后,许可证管理程序25A走路径49到步骤50。步骤50在要运行计算机程序24A的副本的本地节点(14)里建立一个新的空的许可证文件22A,这是由该本地节点(14)的操作系统15完成的。在步骤50,该操作系统50还要赋给许可证27一个新的唯一标识码UID,并把此UID写入该本地节点(14)的系统存贮器16里。传送操作由路径51引至步骤52将把第二个远程节点(20)的许可证文件22A里已被传送的许可证27删除掉。许可证管理程序25A是在操作系统(15)的帮助下完成删除工作的,该删除工作仅当第二个远程节点(20)的许可证文件22A里“被传送的许可证27”以前未曾被删掉时才能实现。然后,经路径53到步骤54。步骤54查问删掉工作是否已完成。如果没有完成删除工作。操作系统(15)给许可证管理程序25A“否”信息并走路径55到步骤56。步骤56把本地节点(14)里新建的许可证文件22A删掉,程序又回到步骤34,再次检查“所有的节点都搜寻过吗?”。
参见图1,假定“被传送的许可证27”已从第二个远程节点(20)的许可证文件22A内删除,这就使仅仅在本地节点(14)的系统存贮器16里剩下“被传送的许可证27”,因此也就不可能再使用该远程节点(20)里的“被传送的许可证27”了。进一步考察,可发现此删除还可应付如下情况当在两个不同节点(12)上的用户都想使用计算机程序24A的副本,而该程序及其许可证都不在这两个用户各自的本地节点(14)上,而在例如某一远程节点(20B)上的情况。在这种情况下,假定第一个使用者(例如在节点(14A))完成了步骤52的删除工作(即把远程节点(20B)的许可证文件22A里的“被传送的许可证27”删除掉)将使他可以使用此“被传送的许可证”。而当在另一个本地节点(14B)上的许可证管理程序25A试图再次从远程节点(20B)的许可证文件22A里删除该“被传送的许可证27”时,步骤54得到的信息及其后的步骤56将防止完成把许可证27也传送到本地节点(14B)上。这样,从本地节点(14B)来的请求就会被进一步处理,即重新到步骤34去查问“所有的节点都搜寻过吗?”。
在完成了对远程节点(20)的删除工作后,许可证管理程序25A走路径57到步骤58。步骤58给本地节点(14)的系统存贮器16里的“被传送的许可证27”做“已被使用”的标记,以防止在不同节点(12)上的用户偶然访问该“被传送的许可证”,甚至把它从该本地节点调走。然后,许可证管理程序25A走路径59到步骤60。在步骤60,把所有的数据,即在本地节点(14)的系统存贮器16里的“被传送的许可证27”的许可证信息,包括新的许可证文件22A的UID都加密。然后,许可证管理程序25A走路径61到步骤62,并把这些加密的许可证信息写入本地节点(14)的磁盘(19)里的那个新的许可证文件22A里。再走路径62到步骤38,送回计算机程序24A,一个状态信息,说明批准程序24A运行,即使计算机程序24A可在本地节点(14)的中央处理机CPU(18)上运行。
图3A和3B的流程图也可以用指令表示。这些指令即许可证管理程序25A的指令。这些指令可以完成前述各项功能。在附录A里给出了这些建立的指令。
许可证库实例工作的细述请再细看图1,许可证库实例也利用网络(11)。网络(11)同样有中央处理机CPU(18),系统存贮器(16)及其中存放的操作系统(15)和加载安装程序(17)。
在网络(11)的各节点(12)的初始化时,要在网上任一节点(12)-如本地节点(14)或远程节点(20)-上运行的计算机程序24B,要照原样加载到至少一个节点(12)上。图5C显示的磁盘(19)里的元件23B就装上了计算机程序24B,并包括了许可证管理程序25B。
许可证装入步骤参阅图7A,装入到诸节点(12)的许可证27的总数L,取决于网络(11)的所有者购买了多少份计算机程序24B的副本。不论当加载到网络(11)中的许可证27的数目少于节点(12)的总数(当一个节点(12)上仅能运行一个计算机程序24B的副本),或者当加载到网络(11)中的许可证27的数目少于需求的许可证数(当一个节点(12)上可运行多个计算机程序24B的副本)时,各个许可证管理程序25B可以有效地限制在同一时刻允许在网络(11)上运行的计算机程序24B的副本的总数。
图7B显示了网络(11)的所有者得自卖方的置于媒介29上的库源文件64。文件64内还有下列各种信息要将存放许可证库28的许可证文件22B所在节点(12)的标识符i.d.;批准计算机程序24B运行的许可证的总数L;许可证库28的失效日期。有时也可能有几个库源文件64。这些库源文件将被装入到不同的节点(12)上。例如,当有两个库源文件64A和64B时,64A中应有数字L1,64B中应有L2,L1和L2分别表示64A和64B中的许可证数,L1+L2=L,L为总的许可证数。
图7A显示了送根库源文件64内的标识符i.d.,把多个许可证装入网络(11)的指定节点(12)的步骤。开始时,安装媒体29内的库源文件64被拷贝到一任意节点(12),例如本地节点(14)上。装配的程序17为许可证库28把库源文件64里的信息解密。然后,根据该库源文件64里指定的节点的标识符i.d.,装配的程序17在相应节点(12)的磁盘(19)里建立许可证文件22B。然后,该节点的操作系统(15)赋予该许可证文件22B一个标识UID。因为在该许可证文件22B里可能有许多许可证27,所以该标识UID是该许可证库28里所有许可证27的公共的UID。但在此时,该许可证库28还不真正有效。为使许可证库28生效,装配的程序17也从该操作系统(15里得到刚生成许可证文件22B的UID,并把此UID和库源文件64里其它(前述)许可证信息加密,再把这些加密信息注入由前述标识i.d.指定的节点(12)的磁盘(19)里的许可证文件22B内。至此,我们应当理解,在做出或可以做出任何使用计算机程序24B的请求之前,要把UID同许可证库28和在指定的节点12上的许可证文件22B里的L个许可证27一同存贮起来。
与前述许可证传送实例相比,由于网络的所有者在装配的许可证库源文件64时无须与卖方交涉,所以我们更乐意使用许可证库的工作方式。同时,举例来说,如果只使用了一个许可证库28,就只需要一次装入操作。但是要提供更多的调用许可证的机会,就必须使装有许可证库28的那个节点(12)不被使用。所以我们更倾向于至少使用两个许可证库28,它们分别装在两个节点上。如前所述它们分别装有L1和L2个许可证27。
到此时,网络(11)中将已装如至少一个计算机程序24B的副本以及所需要的L个该程序24B的许可证27。网络(11)已准备好在某节点(12),接受用户例如本地节点(14)上运行该计算机程序24B的请求。
在本地节点(14)上请求运行计算机程序24B此发明的许可证实例所用的方法和设施通过参阅图6更易被理解。在图6中,用流程图显示了许可证管理程序25B所执行的功能。首先,必须理解许可证管理程序25B(见图5C)是每个存放在系统存贮器16内的计算机程序文件23B里的计算机程序24B的副本的一个组成部分。此发明所选择的实例里使用了计算机阿波罗DN3000。分开的存放计算机程序24B的文件23B和许可证管理程序25B是在磁盘(19)内的。当把文件23B装入系统存贮器16内时,计算机程序24B和许可证管理程序25B就被接在一起。另一方面,就象每当一个计算机程序24B的副本写入某节点(12)的系统存贮器(16)时,相应的许可证管理程序25B也写入该系统存贮器(16)一样,此种连接也可用把磁盘(19)里的文件23B内的计算机程序24B接上许可证管理程序25B来实现。每一个许可证管理程序25B管理一个相应的计算机程序24B的副本。所执行的管理功能如图6所示。为叙述方便,假设客户网络的一个用户要在本地节点(14)上运行计算机程序24B的一个副本。该本地节点(14)上计算机程序24B的该副本就调用一个子程序(步骤65)与该本地节点(14)上的许可证管理程序联系。做为响应,该启动了的许可证管理程序25B就查问该本地节点(14)里是否有计算机程序24B的许可证库28。此查问的第一步确定该本地节点(14)的磁盘(19)里有无许可证文件22B(即有无许可证库28和许可证27)。如果有的话,许可证管理程序25B走“是”路径67,并在步步72确定该许可证库是否有效。这是靠查问操作系统(15)关于许可证库28的UID实现的。而该UID是由该本地节点(14)的操作系统(15)放入该系统存贮器(16)里的然后,许可证管理程序25B把许可证库28把许可证库28所在所可证文件22B的UID解密,并与前述由操作系 15)取得的许可证库28的UID相比较。如果这两个UID不同,则许可证库28及其中的许可证27无效。在许可证无效的情况下,许可证管理程序走“否”路径73到步骤70。如果两个UID相同,许可证管理程序再检查确定该有效的许可证库28是否未期满(见图5B)。如果已期满,则许可证库28终止,许可证管理程序25B也走路径73回到步骤70。如果没有期满,许可证管理程序再检查确定许可证库28内有无许可证闲着。而步骤72要确定当时是否所有的许可证27都在诸节点(12)上允许计算机程序24B的副本在运行。如果所有的许可证27都在使用中,许可证管理程序25B走“否”路径73回到步骤70。如果某许可证27闲着,许可证管理程序25B走路径74,这就表示至少有一个许可证27不在工作,没过期并有效。经路径74到步骤75后,就给刚才找到的许可证27做标记,说明它正在工作,已被占用(见图5B中文件22B的第三项)。“做标记”即修改许可证文件22B,例如把文件22B的第三项之值减小,以减少许可证库28中可用许可证27的数目。这样就可以避免把此不在工作,没过期且有效的许可证27分配给任何其它节点(12)。然后,许可证管理程序25B走路径76到步骤77。步骤77向许可证文件22B内的许可证库28写入信息,说明本地节点(14)正在使用刚刚提供来工作的许可证27。然后许可证管理程序走路径78到步骤79。在步骤79把一状态信息送回到计算机程序24B,批准它运行。即使计算机程序24B可在本地节点(14)的中央处理机(18)上运行。
寻找在远程节点(20)上的许可证27如前所述,在本地节点(14)上,对步骤66所提问题的回答可能是肯定的,也可能是否定的。如果问题是“否”,就说明在本地节点(14)上没有许可证库28,也即没有许可证27供计算机程序24B使用。在这种情况下,许可证管理程序25B就走路径80到步骤70。在步骤70,已搜寻过的节点(14)和诸远程节点(20)都被记录在案。如果所有的节点(14)和(20)都搜寻过了,就走“是”路径81到步骤82。在此例中,如果第一个远程节点(20)尚未被搜寻,就在其中寻找许可证库28-这是通过路径83到达步骤68后所做的事。步骤68确定网络(11)里下一个节点(12)-在本例中即第一个远程节点(20)-上有无许可证库28。如果在该远程节点(20)上无许可证库28,许可证管理程序25B就再次判断是否还没有在所有的节点(12)里搜寻过许可证库28。在此例中,因为只搜寻过本地节点(14)和第一个远程节点(20),许可证管理程序25B就循环执行,再在网络(11)的下一个节点,即第二个远程节点(20)上搜寻是否有许可证库28。假设网络(11)里反时针方向的下一个节点(12)就是下一个远程节点,并且在此远程节点(20)的磁盘(19)里的许可证文件22B内有许可证库28,管理程序25B就走“是”路径83到步骤68。然后,许可证管理程序25B确定在第二个远程节点(20)的许可证文件22B内的许可证库是否有效(正像在前述步骤72中所做的);如果有效,再做步骤72里的其它工作,确定许可证库28里有无任何可用的许可证27;如果有,它是否未满期。在下述情况下在有效的许可证库28里无可用的许可证27,或许可证库28已过期失效,就走“否”路径73到步骤70,再次检查确定是否所有的节点(12)都已搜寻过了。
在本地节点(14)上使用许可证27如果在第二个远程节点(20)上的许可证文件22B没有过期作废,其中的一个许可证27没被占用且许可证库28是有效的,就走路径74到步骤75。在步骤75,本地节点(14)的许可证管理程序并不把许可证库28里的可用的,未过期的许可证27传来送去,而只是把在第二个远程节点(20)上的许可证库28的内容略加改变,例如把该节点(20)上的许可证文件22B的第三项减1。因此,使用许可证27需在步骤75计算一下,而不像在许可证传送实例要经过步骤50,52,54和60那么多。在步骤79,一个状态信息被送回计算机程序24B,批准它运行。即使计算机程序24B可在本地节点(14)的中央处理机CPUCPU(18)上运行。
释放许可证27当用户结束使用由许可证27批准运行的计算机程序24A或24B的副本时,该副本就调用相应的许可证管理程序25A或25B。
如果调用的是许可证传送实例中的许可证管理程序25A,则它在本地节点(14)上。该许可证管理程序25A就把该本地接点(14)的许可证文件22A的第二项改成非正在使用(见图2B)。
如果调用的是许可证库实例中的许可证管理程序25B,在所举例中它就在第二个远程节点(20)上。该计算机程序24B的副本调用该许可证管理程序25B并要求释放所占用的许可证27。通过与许可证库28有关的许可证文件22B的第4项,可知第二个远程节点(20)的i.d.,这样就确定了相应的许可证库28的处所(见图5B)。然后,远程节点(20)上的许可证文件22B(见图5B)的第3项被加1,且从第4项中删除说明该许可证27正在使用的标记。
然后,该许可证管理程序25B返回本地节点(14)上的计算机程序24B的副本,使该副本以人所共知的方式,例如执行“EXIT”命令停止运行。
从以上说明中,可知此发明的两个实例都不使用在网络(11)的单个结点(12)上的文件服务器。尽管如此,在网络中节点上的许可证文件22A或22B必须是有效的,否则许可证27就不能被用来批准计算机程序24A或24B的副本运行,虽然这些副本是可以在任何节点(12)上工作的。由于许可证文件22A和22B可在网络中诸节点(12)中的任何一个节点(12)上,所以即使当网络链路(13)或另一节点(12)停止工作时,仍然可以访问本地节点(14)上的许可证文件22A或22B以寻找可用的许可证27。
在叙述了选择的实例以说明此发明的基本关系的同时,还应明白无需脱离此发明的理论和概念,可对这些实例做大量变更和修正。同样,必须清楚地理解以上对此发明的叙述方式以及所附的图示,仅仅是表达示意,而不意味着限制此发明的作用范围,影响下述权利要求。
附录A许可证管理系统程序2.5A指令IF(licenseexistsonlocalnodeANDlicenseisnotinuseANDlicenseisvalidANDlicensehasnotlapsed)THENMarkthelicenseinuseTellcomputerprogramitcanrunELSE10WHILE(notallnodesinnetworkhavebeensearchedANDalicensehasnotbeenfound)DOIF(licenseexistsonnextremotenodeANDlicenseisnotinuseANDexpirationdatehasnotlapsedANDlicenseisvalidonnextremotenode)THENSavethelicenseinformationinmemoryCreatenewlicensefileonlocalnodeDeleteoldlicensefilefromsecondremotenodeIF(oldlicensefiledeleted)THEN20MarklicensefileinformationasbeinginuseEncryptUIDofnewlicenseandlicenseinformationWriteencryptedUIDandinformationintonewlicensefileTellcomputerprogramitcan、runELSEdeletenewlicensefileENDIFENDIF
ENDWHILEIF(licensewasnotfound)THENTellcomputerprogramthatitcannotrunENDIFENDIF
附录B许可证管理系统程序25B指令found=FALSEIF(licensepoolexistsonlocalnodeANDlicensepoolisvalidANDalicenseisavailableinlicensepool)THENfound=TRUEENDIFWHILE(found紽ALSEAND10notallnodessearched)DOIF(license、poolisvalidANDalicenseisavailableinlicensepool)THENfound=TRUEENDIFENDWHILEIF(found=TRUE)THENDecrementnumberofavailablelicensesinpoolWriteinformationrelatedtoComputerProgramintolicensepool20Setstatusto“authorizedtorun”ELSESetstatusto“notauthorizedtorun”ENDIFRETURN(status)10255oreign.AT权利要求
1.许可证管理系统,该系统用于限制允许在一个网络的一个或多个节点上同时运行一指定计算机程序的副本的个数,在网络中,上述节点相连,上述限制是指批准在上述网络中运行上述指定计算机程序的许可证个数,该系统其特征为,包括许可证文件方法,它在至少一个上述节点上存贮至少一个上述许可证;程序库方法,它在上述每一个节点上存贮上述指定计算机程序的一个副本,在上述节点上,要求运行上述指定计算机程序的一个副本;许可证管理方法,它有效地把许可证连接到上述每一个副本,上述许可证管理方法响应副本的请求,在上述节点上寻找确定一个上述的许可证文件方法,被确定的许可证文件内有在上述发出请求的本地节点上可用的许可证,上述寻找首先在上述本地节点上进行,如果没有找到这样的许可证文件方法,则上述本地节点上没有可用的许可证,上述寻找继续逐个地在上述节点上进行,最终找到了这样的许可证文件方法即找到一个可用许可证,或最终寻找过了所有的上述节点也没找到这样的许可证文件方法即无可用许可证;上述许可证管理方法在寻找过了所有的上述节点而没有找到这样的许可证文件方法,即无可用许可证之后,还回答给上述本地节点上的上述副本一个信息,以防止应上述请求在上述本地节点上运行上述副本。
2.根据权利要求1,许可证管理系统还包括赋予上述每一个许可证文件方法一个唯一的标识的方法,而这又意味着;上述许可证管理方法,在找到任意一个上述许可证文件方法后,就把上述所找到的许可证文件方法的唯一标识主上述由许可证管理赋予该许可证文件方法的唯一标识相比较,以确定上述许可证文件方法是否有效,如果上述许可证文件方法是有效的,上述许可证管理就确定上述许可证文件内的许可证是否正被占用。上述许可证管理还负责如果上述许可证文件管理中的上述唯一标识无效,或者上述许可证被占用,就使上述许可证不能批准上述计算机程序的上述副本运行。
3.管理系统,它用于控制在任何一个由多个工作站连接在一起的网络中的计算机程序的可操作性,在此网络中,要在上述一个工作站上运行一个上述计算机程序的副本,必须为上述工作站提供一个可用的许可证,网络中,批准在该网运行特定计算机程序的许可证的数目小于或等于能够在该网中同时运行的上述特定计算机的副本的数目,上述系统其特征为,包括许可证文件方法,该方法即在至少选一个在前述工作站上,存贮至少一个前述许可证;系统方法,该方法为上述许可证文件方法赋予并存贮一个标识(UID),该标识不同于其它许可证文件方法的标识,因而是唯一的,以及响应在前述选定工作站上运行前述指定计算机程序的一个副本的请求,在该工作站上搜寻,以找到一个在该工作站上的前述许可证文件方法的方法;上述搜寻方法即比较上述的许可证文件方法的UID,与前述系统方法为上述许可证文件方法保存的UID的方法,以及如果上述被比较的两个UID相同,且如果在上述找到的许可证文件中的前述许可证不是正在使用中,就使该计算机程序能在该选定工作站上运行。
4.带有专门程序,可执行专门功能的计算机,这些专门程序的专门功能是控制在任何由多个工作站连接在一起的复杂网络中计算机程序的可运行性,在这个网络中,要在上述诸工作站中一特殊的工作站上运行上述计算机程序的一个副本,必须有一个可用的许可证,且在上述网络中,给予上述网络的上述许可证的数目小于能够在上述网络中同时运行特定上述计算机程序的副本的数目,其特征为专门的功能包括至少在上述工作站之一上存贮一个许可证文件,上述许可证文件内至少有一个上述许可证,存贮的上述许可证的数目小于能够在上述诸工作站上同时运行上述特定计算机程序的副本的数目;赋予每个上述存贮的许可证文件一个标识(UID),该UID不同于所有其它上述许可证文件的UID;响应在上述诸如工作站中之一特殊工作站上运行上述程序的一个副本的要求,在上述特殊工作上寻找确定该特殊工作站上有无上述许可证文件;作为对上述特殊工作站上找到了上述许可证文件的响应,比较该找到的许可证文件的UID和系统记录的该许可证文件的UID;上述两个被比较的UID如果相同,就确定在上述许可证文件中有无一个上述的许可证对上述特殊的工作站可用;如果有这样一个可用的许可证,就批准在上述特殊的工作站上运行上述计算机程序。
5.许可证管理系统,该系统用于控制在网络中诸相连之节点上特定计算机程序的可运行性,在网络中,同时运行的上述计算机程序的每一个副本都有一个许可证,给予该网络和该特定计算机程序的许可证之总数小于能够在该网上同时运行的上述特定计算机程序的副本之总数。在上述每一个节点上都有一个目录,用于指示某一特定节点上有哪些许可证(如果有的话),这样,当在某第一个上述节点上没有可用许可证,而在下一个节点上有可用许可证时,用户可以要求在该第一个节点上运行上述计算机程序的一个副本,上述系统其特征为包括许可证文件方法,该方法在每一个节点上都有,用来存贮至少一个上述许可证;系统方法,该方法赋予在上述诸节点上的每一个许可证文件方法一个唯一的标识,该方法还有效地为上述每一个唯一标识存贮一个记录;初始管理方法,该方法与前述第一个节点上的上述计算机程序相连;的上述计算机程序相连接,以便接收上述请求和在上述下一个节点上寻找上述许可证文件方法并确定上述许可证文件方法在上述下一个节点上;上述初始管理方法通过比较在上述下一个节点上的上述UID,与前述系统存入前述记录的前述UID之异同,有效地做出判断,以确定在上述下一个节点上的上述许可证文件方法是有效的,然后还要判断在该许可证文件方法内至少有一个许可证非正在使用;上述初始管理方法在做出上述两个判断之后,还有效地向上述任意一个节点上的上述特定计算程序的上述副本送回一个状态信息,说明该副本被批准运行。
6.管理系统,该管理系统用于控制在任何多个工作站相连而成的网络中,特定计算机程序的多个副本的可运行性。在该网络中,允许一个以上的该特定计算机程序的副本在上述工作站中之一的特定工作站上同时运行,上述每一个运行的副本都必须有一个可用的许可证,给予该网络中该特定计算机程序的可用许可证之总数,小于能够在该网中诸工作站上同时运行该特定程序的副本之总数;该管理系统其特征为包括许可证文件,它存于上述诸工作站中之一选定的工作站上,用户希望在该工作站上运行一个以上的该特定计算机程序的副本,因此该许可证文件内至少有两个上述许可证;系统分配指定该许可证文件的方法,即存贮该许可证的唯一标识的方法;响应在上述选定的工作站上运行至少两个上述计算机程序的要求的方法,为找到上述选定的工作站而寻找上述许可证文件的方法;以及为此而比较该许可证文件的标识和前述由系统方法存贮的该许可证文件的标识的方法;和如果该比较的结果是两个标识相同,确定有两个许可证(在许可证文件内)非正在使用的方法,和批准该两个相应的上述特定的计算机程序的副本在选定的工作站上运行的方法。
7.一种用于控制计算机程序的多个副本在任何一个由多个工作站相联而成的复杂网络的可运行性的方法,在该网络中,要运行上述程序的一个副本,必须有一个可用的许可证,给予该网络的上述计算机程序的许可证的数目是有限的,上述方法其特征为包括下列步骤在上述诸工作站中选定至少一个工作站的一个许可证文件内 存放至少一个上述许可证;分配给每个上述许可证文件一个标识(UID),该UID必须不同于其它许可证文件的UID;响应在上述选定的工作站上运行上述计算机程序的副本的请求,搜寻并确定在该选定的工作站上有无上述许可证文件;在选定工作站上找到该许可证文件后,比较所找到的该许可证文件的UID,和前述分配给该许可证文件的UID;以及如果上述比较说明两个UID相同,并且如果在该许可证文件内的上述许可证非被占用,就批准在上述选定的工作站上运行计算机程序的一个上述副本。
8.管理许可证的方法,该方法用来限制在网络中诸节点上同时运行一特定计算机程序的副本的数目(S),限制使S小于或等于数目L,L是给予上述网络和上述计算机程序的许可证的数目,每个上述节点上有系统存贮器,最多能存贮L个上述许可证的许可证存贮器以及用于识别在上述许可证存贮器内的上述许可证的目录,该方法其特征为包括的步骤有向每一个希望运行上述特定程序的副本的上述节点上,装入一个该副本,该副本都是当前可用的,即日期或时间没有满期、失效;向上述许可证存贮器里装入L个许可证,意味着在上述网络的上述各节点上共有L个许可证,这样的该网络中最多可以同时运行L个上述特定计算机程序的副本;在上述各节点上,装入许可证的同时,分配给上述各许可证存贮器一个唯一的标识,使其不同于在上述各节点上的其它许可证存贮器;响应在上述各节点中某第一个节点上运行上述计算机程序的一个副本的请求,在该第一个节点上的前述目录里寻找许可证存贮器;如果确定了该节点上无许可证存贮器,或上述许可证存贮器内的全部许可证正被占用着,或上述许可证存贮器的唯一标识是无效的,则顺序在上述其它节点上的前述目录里寻找许可证存贮器;以及如果在另一个节点上找到一个许可证存贮器,并且它有有效的唯一标识,并且它带有没被占用,没过期失效的许可证,就给在前述第一个节点上的上述特定计算机程序的上述副本一个回答运行信息,批准该程述的该副本在该第一个节点上运行。
9.许可证管理系统,该系统用于限制允许在一个网络的一个或多个节点上同时运行一指定计算机程序的副本的个数,在网络中,上述各节点相连,上述限制是指批准在上述网络中运行上述指定计算机程序的许可证的个数,上述许可证装在一个或多个上述节点上;上述许可证管理系其特征为包括在希望运行上述指定计算机程序的副本的每一个上述节点上,存贮该副本的方法;许可证管理,它有效地把许可证与上述每一个副本相连系,上述许可证管理响应各个副本的请求,在上述各节点上寻找一个上述许可证,该许可证可用于发生上述请求的本地节点上;上述寻找首先在上述本地节点上进行;如果在该本地节点上找不到可用的许可证,就逐个地在上述各节点上寻找,直到找到一个可用的许可,或者找过了所有上述各节点也找不到一个可用的许可证;对于后一种情况,该许可证管理向上述本地节点上的上述副本返回一个信息,阻应上述请求在该本地节点上运行该副本。
10.管理系统,该管理系统用于控制在任何一由多个工作站相连而成的网络中计算机程序的可运行性,在该网络中,要在上述工作站之一上运行上述计算机程序的一个副本,必须有一个在该工作站上可用的许可证,给予该网络的某一特定计算机程序的许可证的数目,小于能够在该网络上同时运行的该特定计算机程序的副本的数目,上述管理系统其特征为包括把上述许可证之一存贮在至少一个从上述工作站中选定的工作站上的方法,存贮上述许可证的上述工作站的数目,小于能够在上述工作站上同时运行的上述特定计算机程序的副本的数目;系统分配指定每一上述被存贮的许可证的方法,即存贮与其它所有上述许可证的UID不同的标识(UID)的方法;响应在上述选定的工作站上运行上述特定计算机程序的一个副本的请求的方法,即在该选定的工作站上寻找以判断有无上述许可证可用于该选定的工作站的方法;以及该选定的工作站确定上述可用许可证的方法,即比较上述正被寻找的,存贮着的许可证的UID,与前述由系统分配给该许可证并存贮的UID的方法;如果比较的结果是两个UID相同,使上述计算机程序在上述所选定的工作站上能运行的方法。
11.带有专门程序,可执行专门功能的计算机,这些专门程序的专门功能是控制在任何由多个工作站连接在一起的网络中计算机程序的可运行性,在此网络中,要求上述一个工作站上运行上述计算机程序的一个副本,在上述那个工作站上必须有一个许可证,给予上述网络的上述许可证的数目,小于能够在该网中同时运行的上述该计算机程序的副本的数目;其特征为专门的功能包括在上述工作站中,至少选定一个工作站存贮一个上述许可证,存贮着上述许可证的上述工作站的数目,小于能够在上述诸工作站中同时运行的上述该计算机程序的副本的数目;分配给上述存贮好的每个许可证一个标识(UID),该UID不同于所有其它上述许可证的UID;响应在前述选定的工作站上运行上述计算机程序的一个副本的请求,搜寻该选定的工作站,以确定该工作站上有无上述许可证可用;为在该工作站上找到上述可用的许可证,比较上述正被寻找的,存贮着的许可证的UID,与前述由系统记录存贮的该许可证的UID;以及当被比较的两个UID相同时,使上述计算机程序能在上述选定的工作站上运行。
12.许可证管理系统,该系统用于控制在连接在一个网络中的诸节点上,一个给定计算机程序的多个副本的可运行性,在该网中,要在每一个节点上运行上述计算机程序的一个副本,在该节点上必须有一个许可证,给予该网络和该给定计算机程序的许可证的数目,小于或等于能够在该网中同时运行的该给定计算机程序的副本的数目,在那里,对每一个上述结点提供一个许可证文件用于指出上述那个许可证是在上述结点上,在上述每一个节点上的目录,表明有哪些许可证(如果有的话)在指定节点上,在该网络中,当在某第一个节点上没有可用的许可证,而在某第二个节点上有该许可证时,可以要求在该第一个节点上运行该计算机程序的一个副本,该网络具有系统方法,给上述诸节点上的每个许可证分配指定一个唯一的标识;该系统方法能有效地把上述唯一标识存入一个记录;该系统其特征为,包括初始管理方法,它与上述第一个节点的上述计算机程序相连,以便接收请求和在上述第二个节点上寻找许可证文件以确定前述可用许可证在该第二个节点上;该初始管理方法还能有效地响应上述确定,即如果在上述第二个节点上的许可证有效,没有过期时,把该许可证从该第二个节点传送到该第一个节点;以及该初始管理方法还能有效地请求前述系统方法分配给传送到该第一个节点的许可证一个唯一的标识。
13.管理系统,该管理系统用于控制在任何一个由多个工作站相连而成的网络中,以给定计算机程序的多个副本的可运行性,在该网中,允许一个以上的该计算机程序的副本在上述诸工作站中之一的特定工作站上同时运行,上述每一个运行的副本都必须有一个可用的许可证,给予该网络的该特定计算机程序的可用许可证的总数,小于能够在该网络中同时运行的该特定计算机程序的副本的数目;该管理系统其特征为包括完成下述各种工作的方法或手段在上述诸工作站中选定的一个工作站上,存贮至少两个上述许可证;在该站上,用户希望运行一个以上的上述给定计算机程序的副本;分配或指定每一个上述被存贮的许可证的系统方法,即存贮标识。在该网中,每个许可证的标识都是互不相同的;响应在上述选定的工作站上运行至少两个上述计算机程序的要求,而在该工作站上检查以确定该工作站上是否有一个或多个上述许可证可用;以及在该选定的工作站上,每一个上述存贮着的许可证的标识与前述由系统方法分配给该许可给该许可证并存贮起来的标志相比较,且如果其中有两个相应的标识是相同的,且相应许可证非正在占用,就使上述给定计算机程序的相应副本能在上述选定的工作站上运行。
14.一个许可证管理系统,它限制了一个网络结点上可同时运行一个给予的计算机程序的副本的数量(S)要小于或等于上述网络充许上述给予的计算机程序的副本的数量(L),每一个上述结点都有一个存贮器,许可证存贮器方法用于指出上述许可证的性质,一个目录用于识别在许可证存贮器方法中贮存的许可证,上述许可证管理系统其特征为包括装入上述给予的计算机程序的副本到每一个上述的结点上的方法,而在该结点上希望运行上述给予的计算机程序,当每一个副本的认可使用项还没有过期,每一个这样的副本就时间而论是当前的;把L个许可证装入上述许可证存贮器的方法,这种方法在上述网络的上述结点上使得不多于L个上述给予的计算机程序的副本可被同时运行,上述装入方法对每一个上述许可证分配一个标识,这种标识对上述结点的上述许可证在这样分配的时刻不是唯一的;许可证管理方法用于识别上述选择的一个结点上的一个不起作用的上述许可证,而在这个结点上希望使用上述计算机程序,上述不起作用的许可证是指在上述的一个结点上,上述计算机程序的一个副本没在使用,上述许可证管理方法包括对每一个上述结点一个单独的许可证操作管理器与上述结点的上述计算机程序的副本相联,也就是在第一个上述结点有一个第一个许可证管理器和一个第一个计算机程序,在第二个这样的结点有一个第二个许可证管理器和一个第二个计算机程序;上述第一个计算机程序对应从上述第一个许可证管理器的申请,在上述第一个结点执行上述第一个计算机程序;上述第一个许可证管理器响应上述要求,在上述第一个结点的上述目录寻找一个上述的许可证,在确定上述第一个结点没有可用的上述许可证时,上述许可证管理器就执行在第二个结点的目录中寻找一个许可证;上述第一个许可证管理器在上述第二个结点上相对于确定一个不起作用的当前许可证把上述许可证转移到上述第一个结点的系统存贮器中,上述第一个许可证管理器在上述转移生效后使得上述被转移到上述第一个结点上的许可证分配一个唯一的标识;把上述许可证转移到上述系统存贮器的有效方法是把上述被转移的许可证从上述第二个结点的许可证存贮器中清除;上述第一个许可证管理器可有效地把唯一的标识和许可证写入到上述第一个结点的上述许可证存贮器中的方法;上述第一个结点的上述许可证管理器可有效地比较在上述许可证中的唯一标识的方法,上述系统存贮器中的上述唯一标识万一匹配,上述第一个许可证管理器就有效地返回一个信息,以使得上述第一个计算机程序能在上述第一个结点上执行的方法。
15.一种方法,该方法用于控制在任何一个由多个工作站相连而成的复杂网络中,计算机程序的多个副本的可运行性,在该网络中,要在其中一个工作站上运行一个或多个上述计算机程序的副本,则在该站上必须有一个可用的许可证,给予该网络的上述特定计算机程序的许可证数目是有限的;上述方法其特征为包括如下步骤在上述诸工作站中至少选定一个工作站,存贮一个上述许可证;赋予每一个被存贮的许可证一个标识(UID),该UID不同于所有其它上述许可证的UID;响应在上述选定的工作站上运行上述计算机程序的一个副本的要求,搜寻该选定的工作站以确定在该工作站上是否有可用的许可证;在该站上发现可用的许可证之后,使该许可证存贮的UID与前述赋予该许可证,并存在一记录中的UID相比较;以及如果被比较的两个UID相同,使上述计算机程序的一个副本能够在该选定的工作站上运行。
16.管理许可证的方法,该方法用来限制在网络中诸节点上同时运行一特定计算机程序的副本的数目(S),限制S小于或等于L。L是给予该网络和该特定计算机程序的许可证的数目,每个上述节点上都有一个系统存贮器,许可证存贮器和一个目录,许可证存贮器用来说明上述许可证的性质特征,目录用来标识存在上述许可证存贮器里的上述许可证,此管理方法其特征为包括如下步骤对每一个希望在其上运行上述给定计算机程序的副本的节点,向该节点的上述许可证存贮器里装入该给定计算机程序的一个副本,这些副本在日期和时间上都是有效的,没有过期;向上述网络中上述诸节点上的上述许可证存贮器里装入L个许可证,这样,最多有L个上述特定计算机程序的副本可在该网络上同时运行;赋予每一个存入的许可证一个标识,该标识对加载的当时,在上述节点内的上述许可证是唯一的;在上述已加入许可证的诸节点中选定的一个节点上,找出一个许可证,验明它是没被占用的,当上述计算机程序没在该选定的节点上工作时,该许可证就是没被占用的;响应在上述诸节中某第一节点上运行上述计算机程序的一个副本的请求,在该第一个节点的上述目录中搜寻许可证;当确定了在该节点上无许可证,或该节点上所有的许可证都正在工作时,就在上述其它节点上顺序搜寻非正在工作,没有过期的许可证;把在其它节点上找到的非正在工作,没有过期的许可证传送到上述第一个节点上去;赋予被传送到该第一节点上的许可证一个唯一标识;在上述那个其它节点上删去被传送的许可证的唯一标识;以及返回一个运行信息,使上述计算机程序的上述到本能在上述第一个节点上运行。
17.在权利要求10的管理系统的基础上的下列方法或手段当在前述选定的工作站寻找不到一个前述可用的许可证时,就在其它的工作站上的那些许可证中寻找一个许可证的方法;确定此在上述其它工作站上的许可证在该工作站上可用之后,能够有效地把该许可证从该其它工作站传送到该选定的工作站的方法;上述传送完成之后,使前述该系统赋予传送到选定的工作站上的许可证一个新的不同的UID的方法。
18.在权利要求17的管理系统的基础上上述在选定的工作站上赋予被传送的许可证(新的)UID完成之后,前述的比较将针对该新赋予的UID,和前述由系统方法存贮的该被传送的许可证的UID;如果这两个UID相同,该比较就使前述计算机程序能在该选定的工作站上运行。
19.在权利要求10的管理系统中所谓比较方法也包括确定的工作站上可用的许可证是否过期失效,如果没有过期失效,且被比较的UID相同,上述比较方法使该计算机程序能在该选定的工作站上运行。
20.在权利要求10的管理系统中所谓存贮方法也包括把前述UID加密的方法;以及所谓比较方法也包括先把前述UID解密,然后再执行前述比较。
21.在权利要求10的管理系统中所谓存贮方法也包括存贮表明该许可证是否有效,是否被占用的数据资料。
22.在权利要求17的管理系统中所提供的下述方法加密传送到选定工作站上的前述许可证;在前述其它工作站上删去前述被传送的许可证,以便使该被传送的许可证只在该选定的工作站上可被执行,使用。
23.在权利要求22的管理系统中提及的许可证原来是存在前述其它工作站的一个许可证文件内的;所谓确定的方法包括把该许可证文件拷贝到该选定工作站的方法,以及所谓删除的方法在上述拷贝的方法运行之后才生效。
24.在权利要求11定义的计算机中,专门的功能还包括为了在其它工作站,而不是该选定的工作站上搜寻一个可用的许可证,确定在其它工作站上的许可证是有效的和没有过期失效的;把上述可用的,没有过期失效并有效的许可证从上述其它工作站传送到该选定的工作站上;以及在上述传送完成之后,赋予被传送到该选定的工作站上的该许可证一个新的,不同的UID。
25.在权利要求24定义的计算机中,专门的功能还包括存贮上述赋予被传送的许可证的UID;上述传送完成之后,提及的比较功能将比较新赋予被传送的许可证的UID,与由前述系统存贮的该许可证的UID;以及如果上述被比较的UID相同时,使上述计算机程序能够在该选定的工作站上运行。
26.在权利要求11定义的计算机中,专门的功能还包括加密提到的UID;存贮被加密的UID;以及在执行提到的比较之前,把被存贮的UID解密。
27.在权利要求11定义的计算机中,专门的功能还包括在该选定的工作站中找不到可用的许可证之后,在其它诸工作站中寻找一个可用的许可证;如果在任何其它诸工作站中都找不到一个可用的许可证,阻止应该请求在选定的工作站上运行该计算机程序的副本。
28.在权利要求11定义的计算机的基础上,网络中别的工作站上有一个目录(该目录不在选定的工作站上),专门的功能还包括响应前述请求并确定在该选定的工作站上没有可用的许可证之后,搜寻该目录以找到一个前述的许可证,并在该时该处确定在该目录中的该许可证是可用的;执行前述比较功能以确定该可用的许可证是有效的;以及如果在该目录中该可用的许可证是有效的,就把它传送到前述选定的工作站上。
29.在权利要求12定义的系统还包括提及的初始管理方法还包括确定前述第二节点的UID的有效性的方法,即能有效地比较该第二个节点上的许可证的唯一标识,与由前述系统方法赋予并记录的该许可证的唯一标识。
30.在权利要求29定义的系统中提及的确定方法要防止前述的初始管理方法中提及的传送操作,除非上述有效性被证实,即所比较的两个唯一标识被发现是相同的。
31.在权利要求12定义的系统中提及的初始管理方法,还包括下述确定所谓有效性的方法对赋予前述第二个节点上的可用许可证的唯一标识加密或解密;在完成上述对第二个节点上可用许可证唯一标识的解密之后,接收前述由系统方法存贮的该节点上的该许可证的唯一标识的方法;以及比较上述两个唯一标识的方法;以及在确定上述两个唯一标识相同之后,提供把上述可用许可证从该第二节点传送到前述第一个节点上使用的方法。
32.在权利要求12的系统中,当被传送的许可证仍然在前述第一个节点上时,也可以要求在前述第二个节点上运行前述计算机程序的一个副本,因此该系统还包括第二种管理方法,此方法与在前述第二个节点上的该计算机程序的一个副本相联,此方法接收上述在第二个结点上的请求,在该第二个节点的目录中搜寻,确定在该第二个节点上无上述许可证;该第二种管理方法能有效地在上述第一个节点的目录中寻找,确定在该第一个节点上有可用的许可证;如果上述在第一个节点上的许可证被确定是有效的,非被占用的,也没有过期作废的,该第二种管理方法要有效地把它从该第一个节点传送到该第二个节点上使用;该第二种管理方法在上述传送完成之后,还得有效地要求前述系统方法,赋予该许可证一个唯一的标识。
33.在权利要求14的许可证管理系统中当已经有L个特定计算机程序正在运行时,初始管理方法和后续管理方法都得有效地拒绝运行该特定计算机程序的一个副本的请求,阻止任何一个该特定计算机程序的副本运行,直到该L个许可证中的一个又变成非被占用的之后。
34.在权利要求33的许可证管理系统中提及的初始许可证管理方法给赋予上述被传送的许可证的唯一标识加密,并把该被加密的唯一标识存贮到该第一个节点上的许可证存贮器里。
35.在权利要求15的方法中还包括下述步骤在选定的工作站中找不到可用的许可证之后,继续在该网的另一个工作站上搜寻;在另一个工作站上找到前述许可证并确定此许可证在此工作站上可用之后,执行下列比较步骤把该许可证从该工作站传送到前述选定的工作站上;以及完成上述传送之后,使一个新的唯一标识赋给在选定的工作站上的这个被传送的许可证。
36.在权利要求35的方法中在完成了赋予被传送到选定工作站上的上述许可证一个上述UID之后,执行前述的比较步骤,即比较该新赋予的UID,与记录中的该被传送的许可证的UID;以及当所比较的两个UID相同时,使前述计算机程序能在该选定的工作站上运行。
37.在权利要求15的方法中还包括下列步骤把前述赋予一个存贮着的许可证的UID如密;以及在执行前述比较步骤之前,把上述UID解密。
38.在权利要求35的方法中,还包括下列步骤与上述许可证一起存贮数据资料,说明该许可证是否有效,是否被占用;以及如果上述数据说明在上述选定的工作站上的上述许可证是非正被占用的,就执行前述比较步骤。
39.在权利要求16的方法中,还包括下列步骤把传送到前述选定的工作站上的许可证的UID加密;以及从前述其它工作站上删去被传送走的许可证的UID,这样,被传送的许可证就只在前述选定的工作站上有效。
40.在权利要求16的许可证管理方法中还包括下列步骤把赋予每一个前述许可证唯一标识加密;以及把在第二个节点上的前述许可证的唯一标识解密,就可以在把该许可证传送到前述第一节点之前,确定该许可证是没有过期失效,没被占用的。
41.在权利要求12的许可证管理系统中提及的初始管理方法还搜寻前述第二个节点以外的诸节点,直到找到一个前述的可用许可证,或者所有诸节点都搜寻过而找不到一个可用的许可证;在所有的诸节点都搜寻过而找不到一个可用的许可证之后,该初始管理方法给在前述第一个节点上的上述计算机程序一个信息,以阻止该程序在该节点上运行,这样,在该网中同时运行的该计算机程序的副本的数目就被限制在批准的数目之内。
42.在权利要求2的许可证管理系统中提及的许可证文件方法包括一个许可证库,该库能存贮全部批准给与该网络的许可证;以及提及的许可证管理方法还负责在确定前述找到的许可证文件方法是有效的,并确定在该许可证文件方法里的一个许可证是可用的之后,在该许可证文件方法里减少许可证的数目。
43.在权利要求42的许可证管理系统中提及的许可证管理方法还向许可证库写入数据资料,以说明在前述许可证的批准下,前述指定计算机程序哪一个的副本正在运行。
44.在权利要求2的许可证管理系统中提及的许可证管理方法包括把赋予前述许可证文件方法的前述唯一标识加密的方法,和在比较该唯一标识之前,把该唯一标识解密的方法。
45.在权利要求3的管理系统中提及的许可证文件方法包括一个许可证库,该库能够存贮全部批准给与该网络的许可证;以及提及的许可证管理方法还负责在确定前述找到的许可证文件方法是有效的,并确定在该许可证文件方法里的一个许可证是可用的之后,在该许可证方法里减少许可证的数目。
46.在权利要求45的管理系统中提及的许可证管理方法还向许可证库写入数据资料,以说明在前述许可证的批准下,前述指定计算机程序的哪一个副本正在运行。
47.在权利要求4的计算机中,当有多个许可证在前述许可证文件中时,该计算机要被编程执行以下附加功能在确定了前述诸许可证中有一个是可用的之后,修改上述许可证文件,以说明能够批准使用前述指定计算机程序的一个副本的可用许可证减少了一个。
48.在权利要求47的计算机,还要编程执行下述附加功能进一步修改前述许可证文件,以说明在前述原来可用的许可证的认可下,前述计算机程序的一个副本正在前述特殊工作站上运行。
49.在权利要求5的许可证管理系统中在前述诸节点上的每一个前述许可证文件方法内有一个以上的前述许可证;只有当在前述第一个节点上的许可证文件方法是无效的,或者在该第一个节点上的所有前述许可证都被占用着时,前述初始管理方法才在前述下一个节点上寻找许可证文件;以及上述初始管理方法还负责在修改该下一个节点上的许可证文件方法之后,送回一个前述状态信息,这样,在该下一个节点上的许可证文件方法里就增加了一个使用着的许可证。
50.在权利要求7的方法(该方法用于控制计算机程序的多个副本的可运行性)中提及的存贮步骤把批准的许可证的总数存入前述选定的工作站上的前述许可证文件里;每次使一个前述计算机程序的副本能运行时,就更新该许可证文件,减小其内未在工作的许可证的数字。
51.在权利要求50的方法(该方法用于控制计算机程序的多个副本的可运行性)中每次更新前述许可证文件时,数据资料也同时被输入,这些数据资料说明哪一个前述计算机程序的副本被批准运行了,还说明批准在哪一个工作站上运行该副本。
52.在权利要求8的方法中,前述加载步骤只向前述第一个节点的许可证存贮器内装入前述L个许可证,上述方法还包括下列步骤确定了在前述任何一个节点上都没有可用许可证之后,返回一个状态信息给在前述第一节点上的前述计算机程序的前述副本,说明不批准该副本运行。
全文摘要
许可证管理方法和系统使计算机程序的许可证能够用在每一个由多个节点形成的网络上。如果在本地节点上的一个有效的许可证文件内有一个没过期的,可以使用的许可证,在该本地节点上的一个许可证管理就允许该计算机程序在该有要求的本地节点上运行。如果在这本地节点的有效许可证文件里没有可用的许可证,该许可证管理器就搜寻其它的节点,以找到一个有效的,含有没过期的,可用的许可证。
文档编号G06F12/14GK1035192SQ8810773
公开日1989年8月30日 申请日期1988年11月9日 优先权日1987年11月10日
发明者乔恩H·巴伯, 罗纳德A·伍德沃德, 理查德M·勃克利, 伊文L·莱姆, 马休W·杰克逊, 道格拉斯M·扬格 申请人:奥托·特罗技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1