[发明专利]高效利用空间的对象加锁的系统和方法无效
申请号: | 96121333.7 | 申请日: | 1996-12-08 |
公开(公告)号: | CN1096642C | 公开(公告)日: | 2002-12-18 |
发明(设计)人: | 威廉·N·乔伊;阿瑟·A·冯霍夫 | 申请(专利权)人: | 太阳微系统有限公司 |
主分类号: | G06F15/00 | 分类号: | G06F15/00 |
代理公司: | 北京市柳沈律师事务所 | 代理人: | 马莹 |
地址: | 美国加利*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 高效 利用 空间 对象 加锁 系统 方法 | ||
本申请为在1995年12月8日递交的美国申请08/569753的后继申请。
技术领域
本发明一般是关于面向对象的计算机系统,其中两个或多个执行线程能相对于对象同步,更具体是关于在一个系统中有效分配锁数据结构的系统和方法,在该系统中,尽管大多数或所有的对象是能够锁定的,但事实上只有少数对象曾被锁定。
背景技术
在多处理器计算机系统中,软件程序可以通过在构成多处理器计算机系统的处理器上并行运行的线程来执行,故而,由于同时运行的线程能同时地执行程序,一个程序可以在不同的处理器上并行地运行。进而,如果程序可以分为分过程,这种计算机系统就可以非常快地运行该程序,原因是同时运行的线程可以并行地执行分过程。单个处理器、多任务计算机系统通过使用各种资源调度机构也可以虚拟同时执行多线程,这对于多任务操作系统设计领域的技术人员是熟知的。
在这样计算机系统上运行的程序经常是面向对象的,换言之,执行程序的线程可以调用执行特定功能的对象方法。然而,由于计算机系统硬件或软件的制约,一些对象的一些方法在某一时间上仅能执行一个。例如,一个对象可以要求访问共享的计算机资源,例如I/D设备,该资源在某一时间上仅能处理一个线程的一次访问。这样,由于同时运行多个线程会同时地寻求调用这样一个对象,该对象在某一时间上必须仅和一个线程同步,以使得只有那个线程唯一地使用该对象(即,在某一时间上只有一个线程能够拥有该对象的锁)。
在过去,已经有各种方法被用来将一对象和一线程同步。这些方法包括使用象互斥(mutexe)、条件变量和监视器等同步结构。当使用监视器时,每一个监视器鉴别当前拥有该对象的线程和等待拥有该对象的那些线程。然而,在使用这些监视器的计算机系统中经常存在用于每一个可同步对象的监视器,所以,这种途径具有需要多个存储器的明显缺点。
减少这些监视器所需存储器的简单途径是给这些监视器分配高速缓冲存储器并对每一个监视器操作在该高速缓冲存储器中查阅一散列表。该途径其实增加了监视器操作的总开销,并且此种解决方案速度低,所以提出了本发明。
发明内容
本发明的目的是提供一对象加锁系统,其中存储空间按需要分配给锁数据以避免将存储器资源分配给虽可锁定但在事实上从未被锁定的对象的锁数据结构。
本发明的另一个目的是提供锁数据分配系统和方法,该系统和方法计算效率高并且基本上没有增加用于常用对象的计算总开销,该系统和方法使用的存储器资源量和锁定对象的数目成正比。
总之,本发明是具有存储多个对象和多个过程的存储器的多线程计算机系统,每一个对象具有锁定或非锁定的锁状态。这里有两种表示对象的方式,一种是由数据结构的数据指针和方法阵列的方法指针组成的句柄,另一种作为指向对象数据结构的直接指针,该指针的第一个元素是方法阵列的方法指针。对于本发明而言,这两种表示没有显著差别。
在任一情况下,方法阵列包括用于该对象的加锁和非加锁过程,每一个对象还可以是一些类的实例,并且具有与该类相关的类数据结构的数据基准,该基准和该对象的方法阵列一起存储。作为同类实例的两个对象则需共享此类数据结构,并且具有该类数据结构的相同基准。该类数据结构包括永久分配的与该类相关的类锁数据结构,该类锁数据结构能用于对不然就没有相关锁数据结构的诸对象的同步修改。
该系统使用单一全局对象加锁过程作为加锁过程以服务于还没有分配锁数据子阵列的诸对象(从未被锁住的对象和近来没被锁住的对象)的锁请求,并且使用局部特定对象加锁过程作为加锁过程以服务于已经分配锁数据子阵列的诸对象(即被锁定的对象和近来已经被锁定的对象)的锁请求。
全局对象加锁过程具有产生特别用于待加锁对象的局部对象加锁过程的指令。局部特定对象加锁过程包括作为私用数据的用于存储锁数据的锁数据子阵列。局部特定对象加锁过程具有更新该对象的存储的锁数据的诸指令。如果该对象近来没有被锁定的话,当系统的无用数据收集过程执行时执行的锁数据清除过程释放局部特定对象加锁过程使用的存储器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于太阳微系统有限公司,未经太阳微系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/96121333.7/2.html,转载请声明来源钻瓜专利网。