CN101133396A - 用于在多处理器环境中管理对共享资源的存取的方法 - Google Patents
用于在多处理器环境中管理对共享资源的存取的方法 Download PDFInfo
- Publication number
- CN101133396A CN101133396A CNA2006800023651A CN200680002365A CN101133396A CN 101133396 A CN101133396 A CN 101133396A CN A2006800023651 A CNA2006800023651 A CN A2006800023651A CN 200680002365 A CN200680002365 A CN 200680002365A CN 101133396 A CN101133396 A CN 101133396A
- Authority
- CN
- China
- Prior art keywords
- task
- access
- data
- target resource
- resource
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
本发明涉及用于在多处理器或者多计算机环境内,包括当这些处理器正工作在物理并行状态时,管理对共享资源的存取的方法。为了在采用这种并行环境的多任务应用程序内使进程的运行可靠化或者优化,这种存取管理对于完成对这些资源(例如共享内存)的存取控制特别有用。特别地,该方法包括在称为存取任务的第一任务(TA)的至少一个激活周期(SchA)期间,响应于对所述目标资源的存取请求(InstrA),该第一任务分配对所述目标资源的称为“连续”的存取,即以便在所述存取请求后,立即在该存取任务的整个激活周期(SchA)期间排斥由至少一个第二任务(TB)对所述目标资源(ShMPi)的任何存取。
Description
技术领域
本发明涉及一种用于在多处理器或者多计算机环境内,甚至在这些处理器正工作在物理并行状态时,管理对共享资源的存取的方法。为了在采用这种并行环境的多任务应用程序内使进程的运行可靠化或者优化,这种存取管理对于执行对这种资源(例如共享内存)的存取控制特别有用。
背景技术
通常,设计和使用并行环境是为了利用现有的硬件单元获得更加强大的计算能力。这多半应用于完成主要为此目的所设计的技术或者科学应用中的繁重且复杂的计算。
这种环境可以通过将多个处理器集成在单个计算机中来产生,该计算机将它所需要的计算工作分配给这些处理器。有时候也将几个计算机组合在网络中并且加以管理,以便在它们之间共享一定的工作量,而几乎没有或者完全没有用户的干预。
当这些不同的具体的单元、处理器或者计算机能够同时从事随后将被重新排序的不同任务时,就使用物理并行这一术语,例如,它与通过在几个虚拟工作区中共享单个单元的工作时间所模拟的并行是相反的。
包括多处理器或者多个计算机的具备物理并行能力的现有环境,多半是为了获得最大的整体计算能力而设计和优化的。为此,不同单元尽可能地分离工作,并且它们之间几乎不存在协调。
例如,出于成本或者灵活性的原因,常常要探寻以单独的或者编组的微型计算机或者工作站来取代大型中央计算机。这种机器存在于为了获取更大能力而并行工作的微处理器方案中,或者可以为了并行工作在网络内而编组,该网络自身相对于外部而言构成了单个并行工作环境,即相对于外部而言相当于单个响应者。
因此,使用这种并行环境来执行不同于完全繁重的计算应用程序或者与之相比更加多样化的应用程序,特别是在公司管理域内或者工作站网络中亦或在通信网络中的公共的事务型多任务应用程序,可能会让人很感兴趣。
然而,由于这些操作系统或者这些应用程序都是为了单处理器机器设计的,它们往往并非为了管理实际上同时执行的两个任务之间的接口而设计,对于物理并行而言通常就是这样。因此,当同时执行的几个任务必须存取单个数据时(“竞争状态”),由一个任务所读取的结果可能会随着在该次读取之前或之后是否由另一个任务进行了修改而大不相同。
此外,大部分多任务操作系统都不是为了管理工作在实际并行状态的环境而设计的,更不必说管理直接存取的共享资源了。在共享存取的类型之中,那些通过程序指令寻址的可存取的类型,诸如最初由“映射(map)”类指令定义的共享内存区,可以取得直接存取的资格。
通常,几个并行任务通过直接存取对这类共享资源的存取一般不大需要或者根本不需要系统软件来管理,这和需要系统调用的其他共享资源,诸如利用“打开(open)”、“读取(read)”或者“写入(write)”这一类的系统调用来传递“管道(pipe)”或者“套接字(socket)”类消息的资源是相反的。所以,在多数情况下,管理通过直接存取对共享资源的存取多半甚至几乎完全是并行环境中应用程序的任务。
在这类环境中,现有应用程序的用途并非为此设计,所以为此目的即使只对这些应用程序略做修改或者根本不做修改(“传统应用程序”),就常常会造成许多问题。有时候,例如由于在单个应用程序中不同任务之间存在不受管理的接口,执行就可能是随机的乃至是不可能的。
发明内容
本发明的一个目的在于允许在并行环境内管理或控制对共享资源的多任务存取,其是更加广泛、或者更加灵活或者更好执行的。
即使应用程序的运行是可能的,其执行往往包括可能给实现该应用程序的运行管理造成问题的非确定性方面。可以寻求这样的运行管理以便能够在一个或多个计算机内可靠化(reliabilize)、跟踪或者调试或分配(“负载均衡”)这种应用程序的执行,不管这些计算机是孤立的还是以例如“簇(clusters)”的方式组网的。
然而,为了能够随后以类似乃至相同的方式对一个或多个任务的运行进行重放,这类运行管理往往包括记录这些任务的运行。为了执行记录或者重放操作同时限制这样所带来的性能损失,有利的是该运行尽可能地包括与被管理的任务或者被管理的应用程序相比具有确定性的操作,特别是在这些操作返回的结果中。
因此,为了使得在包括并行结构的一个或多个硬件环境中能够以这种方式管理这种应用程序,能够获得在该应用程序中执行的尽可能多的操作的确定性的工作状态是非常重要的。
本发明的一个目的还在于获得并行环境中存取共享资源的所有操作或某些操作的确定性的工作状态。
为此,本发明提出了一种方法,其能够管理或者控制对共享资源的存取,特别是利用直接存取对共享资源进行存取,以便每个任务在由系统所激活的整个周期中都可以获得对共享资源的排它性存取。
特别地,该方法在一个系统软件中实现,该系统软件通过相继激活来管理在并行计算机系统中执行的至少一个计算机应用程序内的多个程序任务,该并行计算机系统包括能够在至少两个运算单元中同时执行几个任务的多个计算装置。在本环境中,该方法管理对所述任务可存取的至少一个共享资源的存取,该共享资源称为目标资源。
因此,该管理包括称为存取任务的第一任务,在其至少一个激活周期期间并且响应于对所述目标资源的存取请求,该第一任务接收对所述目标资源的排它性的(或者“连续的”)存取,即在该方式中,在所述存取请求后,立即在该存取任务激活周期的整个剩余期间排斥由至少一个第二任务对所述目标资源的任何存取。
在至少一个运算单元包括中断机制的并行计算机系统中可以方便地实现该方法,该中断机制能够根据存储在所述计算机系统的内存空间内的称为“存在数据(presence datum)”的至少一个数据的值,中断请求存取指定资源的程序指令的执行,从而触发对故障处理软件代理的调用。
该方法还包括以下步骤:
-在存取任务的激活周期期间,中断请求存取目标资源的第一指令的执行;
-由故障管理器测试存储在所述内存空间中称为“存取数据(accessdatum)”的至少一个数据,并指示所述目标资源目前是否被分配给另一个任务进行排斥所述存取任务的排它性存取;
-在存在这种排它性存取已经分配给另一个任务的情况下,挂起该存取任务的执行或者终止其激活周期;
-在相反的情况下,在所述内存空间中存储至少一个存取数据,该存取数据表示将应用于所述目标资源的排它性存取分配给该存取任务;
-在该存取任务的激活周期的最后一个指令的执行期间或者在该最后一个指令之后,修改表示其获得的对目标资源的排它性存取的存取数据,从而释放目标资源。
有利地,该方法的特征在于:当测试目标资源的存取数据这一步骤指示资源对于存取任务空闲时,跟在所述测试步骤之后的存储排它性存取的步骤就与该测试步骤一起组成并行计算机系统运行中的单个原子(atomic)操作。
更加特别地,该方法还包括以下步骤中的一个或多个:
-在称为调度程序的软件代理挂起任务后或挂起任务时,关闭步骤包括对对应于该挂起任务的所有存在数据进行测试,以便标识并释放所述挂起任务对其占据排它性存取的所有共享资源。
-在称为调度程序的启动所述任务的激活周期的软件代理进行释放任务前或释放任务时,对相应于可由所述任务存取的所有共享资源的所述任务的所有存在数据进行初始化步骤,以便在所述激活周期期间,由该任务对这些共享资源之一的第一存取请求触发这种中断步骤。
根据一个特征,存在数据初始化步骤服从对称为“管理数据”的数据的值的测试结果,该管理数据对应于释放任务并且指示所述任务是否应该被监控,即是否应该将存取管理方法应用于所述任务。
根据本发明,包括至少一个被监控任务的至少一个应用程序的执行由称为“启动程序(launcher)”的软件代理来启动,该启动程序存储用于指示所述任务必须被监控的至少一个管理数据。
根据本发明,特别地,建立用于执行存取管理的软件结构包括:由至少一个创建软件代理从现有任务开始创建或者示例至少一个新任务。于是该任务创建包括从对应于所述现有任务并指向共享资源的存在数据开始,创建对应于所述新任务并与所述共享资源相关的至少一个存在数据。
此外,根据对与所述存在数据相关的共享资源的映射或者分配所做的修改,由分配软件代理(例如映射代理)更新对应于新任务的至少一个存在数据。
本发明还提出由系统内尤其是系统软件内的纯软件单元的修改或者监测(instrumentation)来执行这种建立和/或其更新。
特别地,对于至少一个系统调用,这种修改或者监测可以由采用预加载了修改后例程的库的动态内插技术来完成。
根据本发明,特别地,该方法可以在Unix或者Linux类操作系统中实现,并且于是包括对“创建(create)”或“复制(clone)”或“映射(map)”类系统调用、或者调度程序软件代理、或者环境变化管理器的释放和挂起例程、或者页面故障处理程序软件代理、亦或是核心内存结构数据表的修改或监测。
因此,在例如由一个或多个中间件类运行管理应用程序管理的簇组成的网络这类的计算机网络的至少一个节点内实现可能是有利的。所以,特别是当记录和重放指令序列时,该方法可能能够扩展或优化该运行管理的性能和功能性。
在同样的环境中,本发明还提出了一种包括该方法的实现的系统,其应用于一个或多个并行类或组成并行系统的计算机系统,并可能用于网络。
附图说明
通过对实施例的方法的详细描述,本发明的其他特性和优点将变得明显,该实施例绝非限制性的,且在附图中:
图1说明了根据现有技术对由单一环境的两个不同处理器并行执行的两个任务之间共享的内存进行存取的运行;
图2说明了根据本发明能够对单一环境的几个不同处理器上并行执行的多个任务之间共享的内存页面进行存取控制的结构的任务内部的创建和维护;
图3说明了根据本发明对在单一环境的两个不同处理器上并行执行的两个任务所共享的内存页面进行存取控制的运行。
具体实施方式
图1说明了并行多处理器环境的运行的实例,在多处理器环境(例如Linux类系统)中包括第一处理器uProX和第二处理器uProY。这两个处理器在单个工作内存空间RAM中并行地分别执行各自的任务TA和TB,并且由调度程序来协调。在每个任务TA和TB的激活周期期间,将在处理器uProX和uProY中执行来自其程序EXEA、EXEB的指令序列SchA和SchB。在执行该序列的指令InstrA和InstrB的过程中,处理器将能够使用其内部的资源,诸如寄存器RegA、RegB以及堆栈PilA、PilB等。
在工作内存RAM中,例如通过“映射(map)”类指令定义几个共享内存区ShMPi-ShMPk,并且这些共享内存区可以直接通过它们的物理地址由不同的任务TA和TB进行存取。
图1说明了现有技术中的一种情况,其中在公共周期内并行执行任务TA和TB,且TA和TB均包括请求存取单个共享内存区ShMPi的指令InstrA和InstrB。这两个存取请求将由每个处理器的内存管理器单元MMU采用独立的方式进行处理11、13,并且将相互独立地到达12、14该共享内存区。
对于仅仅可由某些系统调用类指令存取的资源,有可能对完成这些指令的系统例程进行监测,即修改这些例程或者将单元插入对这些系统调用进行拦截或做出反应的系统。特别地,在以记录和重放的方式进行运行管理的环境下,该监测可能允许记录它们的工作状态以便能够在随后完全一致地重放它们的工作状态,或者修改该工作状态使得其变为确定性的而不需要重新记录。
反之,对于无需系统调用因此可能由任何程序指令直接存取的资源,大多数操作系统,特别是那些Unix或者Linux类型的操作系统,不允许对这些在该共享内存区ShMPi级别的存取的到达进行控制。
如图2和图3所示,为了解决这一问题,本发明提出修改某些系统软件单元的代码,或者添加某些其他系统软件单元的代码,以便修改或扩展某些目前用于其他功能的现有硬件功能。
特别地,有可能通过修改Unix或者Linux类系统软件的少数单元来解决这一问题,而不必修改当前处理器的硬件特性。因此,为了通过只对现有的系统软件做少许修改来执行和管理只略作修改或者没有修改的多任务应用程序,有可能采用经济的并得到全面验证的普通类型的机器,这在不损害其向上兼容性的前提下增加了功能性。
本发明用于存在于诸如PC型体系结构中所采用的处理器(例如Intel公司的Pentium处理器或者AMD公司的Athlon处理器)之类的许多新近的微处理器中的这种确定的机制。这些处理器,特别是Pentium 2以后的处理器,在它们的内存管理单元中集成了虚拟内存管理机制。采用这一机制的目的在于当不使用定义在工作内存中的某些页面时,将这些页面“卸载”至硬盘上,并且为了释放物理内存中的相应空间而将这些页面储存在硬盘上。对于当前正在运行的应用程序,仍然在工作内存中列出这些页面,但是为了使任务能够真正存取这些页面,必须将它们再次从硬盘“加载”物理内存中。
如图3所示,为了管理该虚拟内存,系统软件包括虚拟内存管理器VMM,它在每个不同的应用程序进程内为可虚拟化内存的每个页面创建页表项(“P.T.E”)。因此,对于每个都以进程形式执行的即带有其专有的执行环境的两个任务TA和TB,ShMPi-ShMPk中的每个页面均将获得任务TA的进程中的页表项PTEiA-PTEkA以及任务TB的进程中的页表项PTEiB-PTEkB。
虚拟内存管理器VMM包括页面加载器软件PL,其将内存页面加载进硬盘上的“交换(Swap)”文件,以及从该文件中卸载内存页面,该“交换”文件例如是微软公司的Windows系统中扩展名为“.swp”的文件。在每次加载或者卸载ShMPi页面期间,由VMM管理器在与ShMPi页面对应的每个页表项PTEiA和PTEiB中存储并维护30该页面存在或不存在于物理内存中的状态。在这些表PTEiA和PTEiB内,分别以数据位PriA和PriB的形式存储这种存在状态,其中数值1表示存在,而数值0表示不存在。
在每个处理器uProX和uProY内,内存管理器MMUX或者MMUY包括页面故障中断机制PFIntX或者PFIntY,通过该机制来传递源于被执行的程序指令InstrA或者InstrB的任何存取请求。如果来自由处理器uProX执行的任务TA的指令InstrA请求33与内存页面ShMPi有关的存取,则处理器的中断机制PFIntX通过读取其相应表项PTEiA中存在位PriA的值来验证该页面是否存在于物理内存RAM中。
如果该位PriA指示页面存在,则中断机制PFIntX授权该存取。否则,该中断机制PFIntX就中断任务TA的执行并将错误参数发送至包含在系统软件的虚拟内存管理器VMM中的“页面故障处理程序(PageFault Handler)”软件代理PFH。然后执行该故障处理程序PFH,并管理该错误在系统软件以及有关的应用程序内造成的后果。
图2说明了根据本发明为了管理对共享资源的存取,如何对这些现有机制进行修改或转换(adapt)。
如图2所示,为了管理这些来自在这种并行环境中执行的应用程序APP的存取,例如在Unix或者Linux类系统中采用启动程序软件LCH来启动该应用程序的执行。在其启动时,以包括执行“线程(thread)”ThrA1并采用形成任务描述符TDA的数据表的进程的形式来创建带有第一任务TA的应用程序APP。
在该任务描述符TDA内,启动程序通过将正常情况下不使用的数据位(此处称为管理位MmA)的状态修改为1来存储21必须管理或者“监控”任务TA这一事实。
在形成页面内存结构PMStrA的数据表中的任务TA内列出工作内存中的不同的共享内存区,此处规定为共享内存页面ShMPi、ShMPj和ShMPk。在该结构PMStrA中,以页表项PTEiA1-PTEkA1的形式描述并更新共享页面,如前所述,每个页表项都包括由虚拟内存管理器VMM所使用的数据位PriA1-PrKA1。典型地,该页面结构PMStrA与任务TA同时创建,并由诸如“映射(map)”类例程等确保共享内存中的任何变化的不同系统例程对该结构连同这些变化一起进行更新20。
在被管理的应用程序APP的执行期间,可以从第一任务TA或者从以同样方式所创建的其他任务通过“创建(create)”类指令CRE来创建其他任务。任何新创建的任务TB也包括线程ThrB1和任务描述符TB以及页面内存结构PMStrB。通过来自其父任务的继承关系INH,该新的页面内存结构PMStrB也包括带有以相同方式保持为最新的存在位PriB1-PrkB1的不同页表项PTEiB1-PTEkB1。
从被监控的任务TA创建CRE新任务TB时,新任务描述符TDB也包括管理位MmB,它的值继承INH来自父任务的管理位MmA的值。
在被管理的应用程序APP的执行过程中,可以在最初以具有单线程ThrB1进程的形式运行的任务B内创建其他线程。
在现有的被监控的任务TB内,可以通过诸如“复制(clone)”指令等系统调用来创建任何新线程ThrB2。典型地,多线程进程形式的任务在其页面结构PMStrB内只包括一组表项PTEiB1-PTEkB1。根据本发明,例如,通过在能够创建新线程的任何系统例程的运行(诸如“复制”系统调用)中集成辅助部分CSUP来对其进行修改。对该修改进行设计,使得现有任务TB中对新线程ThrB2的任何创建都包括:读取22现有的一组表项PTEiB1-PTEkB1,以及创建23对应于相同共享页面ShMP1-ShMPk并具体利用新线程ThrB2运行的一组新的页表项PTEiB2-PTEkB2。如相同申请人的专利FR 2 820 221中所述,例如可以通过在系统中加载共享库,利用动态内插技术,借助于对这些例程CLONE的监测来完成该修改。
这种创建以下述方式来完成:确保新表PTEiB2-PTEkB2也以类似于其父表项PTEiB1-PTEkB1的方式保持最新24、25,或者通过对它们进行注册以更新进管理该更新的系统例程MAP内,又或者通过对这些系统例程MAP进行监测,例如通过在它们中集成辅助部分MSUP。
图3说明了采用应用于包括在两个处理器uProX和uProY中并行执行的两个单线程任务TA和TB的实例的结构的存取管理的运行。需要注意的是,页表项PTE到每个任务内复制的每个线程ThrB2的结构扩展也允许以同样的方式管理来自属于被监控任务的所有线程的任何存取,无论它们是单线程还是多线程。
在此处所描述的实施例中,根据本发明设置存取管理,以便在进程TA或者TB的意义上以及在每个线程ThrB1或者ThrB2的意义上向每个任务保障对共享内存页面的存取,在整个激活周期的持续时间上该存取是排它性的,在激活周期的过程中,它们的相干性(或一致性)由系统软件来保证。这里将这种周期描述为激活周期,该周期由系统软件的调度程序SCH分配和管理。很清楚可以根据同样的精神选择其他类型的相干周期。
此外,此处以共享内存的形式来描述对其的存取是受管理或受控制的共享资源,定义为具体内存区或者内存页面。通过对相应于其他类型资源的系统例程进行类似的监测,还可以将相同的概念应用于这些其他类型的资源。
本发明的实现可以包括对系统软件某些单元的修改,使得它们能够如下面所描述的那样运行。依赖于系统软件的类型或者版本,必要的修改等级可能必定会发生变化。在Linux类系统的情况下,这些修改通常包括如前面所述的“复制(clone)”和“映射(map)”类例程的监测,以及产生调度程序SCH、页面故障处理程序PHF和页面加载器PL的代理内部的修改和代码添加。与标准系统的功能性相比,需要修改以产生这里所描述的存取控制类型的系统功能性可以方便地建立完全的扩展,即无需移除功能性或者至少无需损害与为标准系统版本而开发的应用程序的向上兼容性。
此外,尽管使用了在用于虚拟内存管理的处理器中所设想的硬件机制,所描述的存取控制可能不必需要对该虚拟内存去激活并且可能与之相兼容。例如,如果另一任务TA已经使用了虚拟页面ShMPi,则可以对页面加载器PL进行监测或者修改,使得该页面到物理内存RAM的加载并非由被监控的任务TB反映在该页面的存在位PriB上。
如图3所示,在任务TA的一个激活周期SchA开始时,由调度程序SCH在时刻SCHAL释放任务TA。在释放该任务之前,调度程序SCH对该任务TA的管理位MmA进行测试31以确定是否必须将存取控制应用于它。如果是,则调度程序SCH将对应于该存取控制所涉及的所有共享页面的页表项PTEiA-PTEkA的所有存在位PriA-PrkA都置(32)为0,以便该任务TA所请求的任何存取在该任务TA能够在其中执行的所有处理器uProX的中断机制PFIntX中默认产生页面错误。
在处理器uProX中该激活周期SchA的期间,指令InstrA请求33存取共享内存页面ShMPi。由于相应的存在位PriA为0,处理器uProX的中断机制PFIntX挂起该存取请求的执行并调用系统软件的页面错误处理程序PFH,同时将所述页面和任务的标识发送给它。
当处理该错误时,页面错误处理程序PFH的辅助功能性PFHSUP因此在形成系统软件的虚拟内存管理器VMM中的核心内存结构KMStr(“Kernel Memory Structure”)代理的数据表中完成测试和/或修改。
典型地,该核心内存结构KMStr针对所有的工作环境或者所有的工作内存,以单一的方式存储表示内存资源的结构及其发展的数据。根据本发明,该核心内存结构KMStr也包括一组数据位,此处称为存取位KSi、KSj和KSk,对于所述每个共享页面ShMPi-ShMPk,这些存取位表示目前准予(存取位为1)或不准予(存取位为0)任务对该页面存取这一事实。
当页面故障处理程序PFH处理由处理器uProX发送的错误时,它参考34对应于所述ShMPi页面的存取位KSi。如果该存取位不指示任何当前存取,则它修改34该存取位KSi以便存储它准予对该页面的存取,还修改35对应于请求任务TA的存在位PriA(该位变为1),以便存储该任务TA现在对所述页面ShMPi有排它性存取这一事实。
需要注意的是,这些对于核心内存结构KMStr的存取位KSi的测试和修改操作组成了34以原子方式实现的操作,即确保它即使在多处理器环境中也会彻底完成或者丝毫不完成。
一旦页面故障处理程序PFInt在请求的页面ShMPi上标志排它性,它就会重新启动指令InstrA的执行,使得它能够真正存取36该页面的内容。
其后,如果来自任何另外的被监控任务TB的、由另一个处理器uProY并行执行的指令InstrB请求37存取这个已经标志属性的页面ShMPi,该处理器的中断机制PFIntY也将为请求任务TB参考该页面的存在位PriB。由于任务TB是被监控任务,所参考的存在位PriB处于不存在状态(值为0)。因此,中断机制PFIntY将挂起请求指令InstrB并向页面故障处理程序PFH发送38错误。
这时,该页面故障处理程序PFH注意到该页面的存取位KSi的值为1,表示已经将页面ShMPi的排它性授予另一个任务。所以页面故障处理程序PFH通过例如将请求任务TB的激活时间结束在系统软件环境变化管理器中来发起39对整个请求任务TB的挂起。因此,在其下一个激活周期的期间,该任务TB将准确地将其执行重复至它被中断的点上,并且能够再次尝试存取该同一页面ShMPi。
在请求任务为属于多线程进程的线程ThrB2(图2)的情况下,专用于该单线程ThrB2的一组页表项PTEiB2的存在允许只挂起那个请求存取已经在排它性存取中分配的页面的线程,而不必挂起不会与该排它性发生冲突的其他线程ThrB1。
当每个任务的激活周期SchA完成时SCHAS,调度程序挂起该任务的执行并且备份其执行环境。
当执行该挂起SCHAS或者挂起39已经分配的页面请求时,本发明还设想一个释放阶段,其用于释放该任务对其进行排他性存取的所有共享内存页面。因此如果调度程序SCH通过管理位MmA注意到301任务TA在挂起的过程中被监控,它就会通过参考各个存在位PriA-PrkA的状态来扫描该任务所有页表项PTEiA-PTEkA,以确定它可以对哪些页面进行排他性存取。以该信息为基础,于是它会通过将核心内存结构KMStr中这些页面ShMPi的存取位KSi置0来释放所有这些页面。
在其他非代表性的变型中,也有可能通过例如在单个任务描述符中设想几个管理位的方式将管理或者监控的概念分离为几类管理。因此,关于某些任务种类,可能对任务进行监控以便从排它性存取中受益。类似地,可以仅仅通过某些任务种类将一个任务排除在外。
因此,通过挂起设法存取已分配页面的所有任务,可以使请求该页面的第一任务获取对该页面的排它性,而不会干扰为此挂起的其他任务执行的相干性。
通过避免对同时执行的两个任务所共享的单个内存区做任何修改,因此可以避免该内存区内容变化过程中它们之间的任何干扰。由于在存取该内存区的任务的每个激活周期开始时该内存区的初始状态是指定的,因此其内容变化仅仅依赖于该任务在该激活周期内的行为。对于由该任务执行的指定的指令序列,例如被调度的激活周期,并且通过从已知的初始状态开始,因此有可能获得与该任务相比具有确定性和可重复性的该序列的执行。
特别地,因为在被存取内存区上使用了用于存储排它性分配的原子操作,所以该方法能够避免或者减少在设法竞争存取单个共享资源的多个任务之间共享该单个资源发生死锁的风险。
此外,由于本发明多半通过纯软件实现,所以有可能使用标准硬件,这样可以获得很多优点。
需要注意的是,此处描述的存取控制的运行使用的软件部分完全脱离了硬件部分,其中系统软件和应用程序都不需要知道或者固定处理器的选择,在该处理器中,每个任务都将在其释放期间执行。于是可以获得关于该硬件的良好独立性,特别地,这使得实现更加简单且更加可靠,并且当允许体系结构自身对作为处理器或计算机的不同计算单元的并行性进行最佳管理时,保持好的性能。
特别地,本发明能够扩展到为在单个计算单元上共享时间内运行的多任务应用程序所开发的并行环境操作管理技术。因此,特别地,本发明将这种并行环境集成到网络或者簇中,在网络或者簇中,例如为了管理分布式的应用程序或者管理提供“按需”服务的可变部署应用程序,在中间件型的应用程序内执行该操作管理。
显然,本发明并不限于前面已经描述的实例,并且可以对本发明进行大量修改而不脱离本发明的范围。
Claims (13)
1.一种用于存取管理的方法,其由系统软件实现,所述系统软件通过顺序激活来管理在并行计算机系统中执行的至少一个计算机应用程序(APP)内的多个程序任务(TA,TB),所述并行计算机系统包括能够在至少两个运算单元(uProX,uProY)中同时执行几个任务的多个计算装置,所述方法对可由所述任务(TA,TB)存取的、称为目标资源(ShMPi)的至少一个共享资源的存取进行管理,所述方法的特征在于:
在称为存取任务的第一任务(TA)的至少一个激活周期(SchA)期间,响应于对所述目标资源的存取请求(InstrA),所述第一任务接收对所述目标资源的称为排它性的存取,即以某种方式在所述存取请求后,立即在所述存取任务的激活周期(SchA)的整个剩余期间排斥由至少一个第二任务(TB)对所述目标资源(ShMPi)的任何存取。
2.根据权利要求1所述的方法,其特征在于:至少一个所述运算单元(uProX)包括中断机制(PFIntX),所述中断机制能够根据存储在所述并行计算机系统的内存空间(RAM)内的称为“存在数据(PriA)”的至少一个数据的值,中断请求存取指定资源的程序指令的执行,因此触发对故障处理软件代理的调用,所述方法还包括以下步骤:
-在所述存取任务(TA,TB)的激活周期(SchA,SchB)期间,中断(PFIntX,PFIntY)请求(33,37)存取所述目标资源的第一指令(InstrA,InstrB)的执行;
-由故障处理程序(PFH)测试(34)存储在所述内存空间中称为“存取数据(KSi)”的至少一个数据,并指示所述目标资源目前是否被分配给另一个任务进行排斥所述存取任务(TA,TB)的排它性存取;
-在存在这种排它性存取已经分配给另一个任务(TA)的情况下,挂起(39)所述存取任务(TB)的执行或者终止其激活周期;
-在相反的情况下,在所述内存空间中存储(34)至少一个存取数据(KSi),所述存取数据表示将应用于所述目标资源(ShMPi)的排它性存取分配给所述存取任务(TA);
-在所述存取任务(TA)的激活周期(SchA)的最后一个指令的执行过程中或者在所述最后一个指令之后,修改(303)表示其获得的对所述目标资源的排它性存取的存取数据(KSi),以便释放所述目标资源(ShMPi)。
3.根据权利要求2所述的方法,其特征在于:当所述测试所述目标资源的存取数据的步骤指示所述资源对于所述存取任务空闲时,跟在所述测试步骤之后的存储排它性存取的步骤就与该测试步骤一起组成所述并行计算机系统运行中的单个原子操作(34)。
4.根据权利要求2或3之一所述的方法,其特征在于所述方法还包括:在称为调度程序(SCH)的软件代理挂起(SCHAL)任务(TA)后或挂起任务(TA)时,关闭步骤包括对对应于所述挂起任务(TA)的所有存在数据(PriA-PrkA)进行测试(302),从而标识并释放所述挂起任务对其占据排它性存取的所有共享资源。
5.根据权利要求2到4之一所述的方法,其特征在于所述方法还包括:在称为调度程序(SCH)的启动所述任务的激活周期(SchA)的软件代理释放(SCHAL)任务(TA)前或释放任务(TA)时,对相应于可由所述任务(TA)存取的所有共享资源(ShMPi-ShMPk)的所述任务的所有存在数据进行初始化步骤(33),以便在所述激活周期期间,由该任务对这些共享资源之一的每个第一存取请求触发中断步骤(PFIntX)。
6.根据权利要求5所述的方法,其特征在于:所述存在数据初始化步骤(33)服从对称为“管理数据(MmA)”的数据的值的测试(31)结果,所述管理数据对应于所述释放任务(TA)并且指示所述任务是否应该被监控,即是否应该将所述存取管理方法应用于所述任务。
7.根据权利要求1到6之一所述的方法,其特征在于:由至少一个创建软件代理(复制,CSUP)从现有任务(ThrB1)示例或创建至少一个新任务(ThrB2),该创建包括从对应于所述现有任务(ThrB1)并与共享资源(ShMPi)相关的存在数据(PriB1)开始,创建(22,23)至少一个对应于所述新任务(ThrB2)并与所述共享资源相关的存在数据(PriB2)。
8.根据权利要求7所述的方法,其特征在于:根据对与所述存在数据相关的所述共享资源(ShMPi)的分配所做的修改,由分配软件代理(MAP,MSUP)更新对应于所述新任务(ThrB2)的至少一个存在数据(PriB2)。
9.根据权利要求6到8之一所述的方法,其特征在于:包括至少一个被监控任务(TA)的至少一个应用程序(APP)的执行由称为“启动程序(LCH)”的软件代理来启动,所述启动程序存储用于指示所述任务(TA)必须被监控的至少一个管理数据(MmA)。
10.根据权利要求1到9之一所述的方法,其特征在于:所述方法在Unix或者Linux类操作系统中实现,并且包括对“创建”或“复制”或“映射”类系统调用、或者所述调度程序软件代理(SCH)、或者所述环境变化管理器的释放和挂起例程、或者所述页面故障处理程序软件代理(PFH)、亦或是所述核心内存结构数据表(KMStr)的修改或测试。
11.根据权利要求10所述的方法,其特征在于:通过采用预加载了修改后例程的库的动态内插技术来监测至少一个系统调用。
12.根据权利要求1到11之一所述的方法,其特征在于:在计算机网络的至少一个节点内实现所述方法。
13.一种系统,其实现根据权利要求1到12之一所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0500720 | 2005-01-24 | ||
FR0500720A FR2881239B1 (fr) | 2005-01-24 | 2005-01-24 | Procede de gestion d'acces a des ressources partagees dans un environnement multi-processeurs |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101133396A true CN101133396A (zh) | 2008-02-27 |
CN100533393C CN100533393C (zh) | 2009-08-26 |
Family
ID=34954503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006800023651A Expired - Fee Related CN100533393C (zh) | 2005-01-24 | 2006-01-24 | 用于在多处理器环境中管理对共享资源的存取的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20080109812A1 (zh) |
EP (1) | EP1842130A2 (zh) |
JP (1) | JP4866864B2 (zh) |
CN (1) | CN100533393C (zh) |
FR (1) | FR2881239B1 (zh) |
WO (1) | WO2006077261A2 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276294B (zh) * | 2008-05-16 | 2010-10-13 | 杭州华三通信技术有限公司 | 异态性数据的并行处理方法和处理装置 |
CN102209955A (zh) * | 2008-11-07 | 2011-10-05 | 松下电器产业株式会社 | 多处理器下资源的排他控制方法、排他控制系统及其相关技术 |
WO2014067423A1 (en) * | 2012-10-30 | 2014-05-08 | Tencent Technology (Shenzhen) Company Limited | Method and device for handling optimization processes |
CN105159766A (zh) * | 2015-08-31 | 2015-12-16 | 安一恒通(北京)科技有限公司 | 数据的同步访问方法和同步访问装置 |
CN107533439A (zh) * | 2015-07-30 | 2018-01-02 | 慧与发展有限责任合伙企业 | 存储器存取控制方法和系统 |
CN109471734A (zh) * | 2018-10-27 | 2019-03-15 | 哈尔滨工业大学(威海) | 一种新型缓存优化多线程确定性方法 |
CN114020470A (zh) * | 2021-11-09 | 2022-02-08 | 北京字节跳动网络技术有限公司 | 资源分配方法、装置、可读介质及电子设备 |
CN116049812A (zh) * | 2022-06-28 | 2023-05-02 | 荣耀终端有限公司 | 访问硬件资源的方法和电子设备 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1936498A1 (en) | 2006-12-21 | 2008-06-25 | International Business Machines Corporation | A method and system to manage memory accesses from multithread programs on multiprocessor systems |
US8055855B2 (en) | 2007-10-05 | 2011-11-08 | International Business Machines Corporation | Varying access parameters for processes to access memory addresses in response to detecting a condition related to a pattern of processes access to memory addresses |
US7921272B2 (en) | 2007-10-05 | 2011-04-05 | International Business Machines Corporation | Monitoring patterns of processes accessing addresses in a storage device to determine access parameters to apply |
US7856536B2 (en) | 2007-10-05 | 2010-12-21 | International Business Machines Corporation | Providing a process exclusive access to a page including a memory address to which a lock is granted to the process |
US7770064B2 (en) | 2007-10-05 | 2010-08-03 | International Business Machines Corporation | Recovery of application faults in a mirrored application environment |
US8490181B2 (en) | 2009-04-22 | 2013-07-16 | International Business Machines Corporation | Deterministic serialization of access to shared resource in a multi-processor system for code instructions accessing resources in a non-deterministic order |
US9164812B2 (en) | 2009-06-16 | 2015-10-20 | International Business Machines Corporation | Method and system to manage memory accesses from multithread programs on multiprocessor systems |
KR20110095050A (ko) * | 2010-02-18 | 2011-08-24 | 삼성전자주식회사 | 공유 라이브러리 디버깅 장치 |
US8397217B2 (en) * | 2010-02-22 | 2013-03-12 | International Business Machines Corporation | Integrating templates into tests |
US9069893B2 (en) * | 2011-03-23 | 2015-06-30 | International Business Machines Corporation | Automatic verification of determinism for parallel programs |
CN103049420A (zh) * | 2011-10-17 | 2013-04-17 | 联想(北京)有限公司 | 内存复用方法及便携终端 |
US20130262814A1 (en) * | 2012-03-29 | 2013-10-03 | Advanced Micro Devices, Inc. | Mapping Memory Instructions into a Shared Memory Address Place |
CN104461730B (zh) * | 2013-09-22 | 2017-11-07 | 华为技术有限公司 | 一种虚拟资源分配方法及装置 |
CN105843690A (zh) * | 2016-03-14 | 2016-08-10 | 乐视移动智能信息技术(北京)有限公司 | 一种进行调试信息传输的方法及移动终端 |
US10402218B2 (en) | 2016-08-30 | 2019-09-03 | Intel Corporation | Detecting bus locking conditions and avoiding bus locks |
JP2020160483A (ja) * | 2019-03-25 | 2020-10-01 | 株式会社東芝 | 評価装置、システムlsi及びシステムlsiのための評価プログラム |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02195453A (ja) * | 1989-01-25 | 1990-08-02 | Toshiba Corp | ファイルアクセス制御方式 |
US5175837A (en) * | 1989-02-03 | 1992-12-29 | Digital Equipment Corporation | Synchronizing and processing of memory access operations in multiprocessor systems using a directory of lock bits |
US5016166A (en) * | 1989-04-12 | 1991-05-14 | Sun Microsystems, Inc. | Method and apparatus for the synchronization of devices |
JPH04314151A (ja) * | 1991-04-12 | 1992-11-05 | Nec Corp | 共用データ域破壊防止方式 |
US5245702A (en) * | 1991-07-05 | 1993-09-14 | Sun Microsystems, Inc. | Method and apparatus for providing shared off-screen memory |
US5774731A (en) * | 1995-03-22 | 1998-06-30 | Hitachi, Ltd. | Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage |
JP2924786B2 (ja) * | 1996-04-26 | 1999-07-26 | 日本電気株式会社 | 疎結合多重計算機システムにおける共有ファイルの排他制御システム、排他制御方法、および排他制御プログラムを記憶する媒体 |
US7424712B1 (en) * | 1999-04-30 | 2008-09-09 | Sun Microsystems Inc | System and method for controlling co-scheduling of processes of parallel program |
US6587964B1 (en) * | 2000-02-18 | 2003-07-01 | Hewlett-Packard Development Company, L.P. | Transparent software emulation as an alternative to hardware bus lock |
FR2820221B1 (fr) * | 2001-02-01 | 2004-08-20 | Cimai Technology | Procede et systeme pour gerer des executables a bibliotheques partagees |
-
2005
- 2005-01-24 FR FR0500720A patent/FR2881239B1/fr not_active Expired - Fee Related
-
2006
- 2006-01-24 EP EP06707819A patent/EP1842130A2/en not_active Withdrawn
- 2006-01-24 JP JP2007551686A patent/JP4866864B2/ja not_active Expired - Fee Related
- 2006-01-24 US US11/814,490 patent/US20080109812A1/en not_active Abandoned
- 2006-01-24 CN CNB2006800023651A patent/CN100533393C/zh not_active Expired - Fee Related
- 2006-01-24 WO PCT/EP2006/050405 patent/WO2006077261A2/en active Application Filing
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101276294B (zh) * | 2008-05-16 | 2010-10-13 | 杭州华三通信技术有限公司 | 异态性数据的并行处理方法和处理装置 |
CN102209955A (zh) * | 2008-11-07 | 2011-10-05 | 松下电器产业株式会社 | 多处理器下资源的排他控制方法、排他控制系统及其相关技术 |
US9606830B2 (en) | 2012-10-30 | 2017-03-28 | Tencent Technology (Shenzhen) Company Limited | Method and device for handling optimization processes based on Euclidean distance |
WO2014067423A1 (en) * | 2012-10-30 | 2014-05-08 | Tencent Technology (Shenzhen) Company Limited | Method and device for handling optimization processes |
CN107533439A (zh) * | 2015-07-30 | 2018-01-02 | 慧与发展有限责任合伙企业 | 存储器存取控制方法和系统 |
CN105159766A (zh) * | 2015-08-31 | 2015-12-16 | 安一恒通(北京)科技有限公司 | 数据的同步访问方法和同步访问装置 |
WO2017036041A1 (zh) * | 2015-08-31 | 2017-03-09 | 安一恒通(北京)科技有限公司 | 数据的同步访问方法和同步访问装置 |
CN105159766B (zh) * | 2015-08-31 | 2018-05-25 | 安一恒通(北京)科技有限公司 | 数据的同步访问方法和同步访问装置 |
CN109471734A (zh) * | 2018-10-27 | 2019-03-15 | 哈尔滨工业大学(威海) | 一种新型缓存优化多线程确定性方法 |
CN114020470A (zh) * | 2021-11-09 | 2022-02-08 | 北京字节跳动网络技术有限公司 | 资源分配方法、装置、可读介质及电子设备 |
CN114020470B (zh) * | 2021-11-09 | 2024-04-26 | 抖音视界有限公司 | 资源分配方法、装置、可读介质及电子设备 |
CN116049812A (zh) * | 2022-06-28 | 2023-05-02 | 荣耀终端有限公司 | 访问硬件资源的方法和电子设备 |
CN116049812B (zh) * | 2022-06-28 | 2023-10-20 | 荣耀终端有限公司 | 访问硬件资源的方法和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2006077261A2 (en) | 2006-07-27 |
JP4866864B2 (ja) | 2012-02-01 |
FR2881239B1 (fr) | 2007-03-23 |
WO2006077261A3 (en) | 2007-10-25 |
FR2881239A1 (fr) | 2006-07-28 |
JP2008529115A (ja) | 2008-07-31 |
EP1842130A2 (en) | 2007-10-10 |
US20080109812A1 (en) | 2008-05-08 |
CN100533393C (zh) | 2009-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100533393C (zh) | 用于在多处理器环境中管理对共享资源的存取的方法 | |
CN101103338B (zh) | 对用于录入和重放确定性事件序列的指令进行计数的方法 | |
JP5547373B2 (ja) | 単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法 | |
US7788314B2 (en) | Multi-computer distributed processing with replicated local memory exclusive read and write and network value update propagation | |
US7689989B2 (en) | Thread monitoring using shared memory | |
US5301337A (en) | Distributed resource management system using hashing operation to direct resource request from different processors to the processor controlling the requested resource | |
Contreras et al. | Characterizing and improving the performance of intel threading building blocks | |
CN101233489B (zh) | 自适应进程分派的方法和系统 | |
JP4056471B2 (ja) | プロセッサに譲渡するためのシステム | |
CN100392598C (zh) | 操作系统 | |
CN100489778C (zh) | Java程序可动态更新化实现方法 | |
US7971205B2 (en) | Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status | |
CN101322106B (zh) | 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置 | |
US10942824B2 (en) | Programming model and framework for providing resilient parallel tasks | |
CN1983192A (zh) | 用于在逻辑分区之间共享操作系统内核的方法和系统 | |
CN103530170A (zh) | 在虚拟机环境中提供硬件虚拟化的系统和方法 | |
US20080141213A1 (en) | Flexible interconnection system | |
Bausch et al. | Bioopera: Cluster-aware computing | |
CN103970608A (zh) | 用于借助至少两个虚拟机来管理计算机资源的方法及虚拟化控制器 | |
JP2571260B2 (ja) | 論理時計による動作環境選択処理方式 | |
Kuganesan | Distributed resource management for yarn | |
Pirklbauer et al. | Object-oriented and conventional process automation systems | |
Jensen | Fine-Grained Object Based Load Distribution | |
Sudhakar et al. | An Improved Lazy Release Consistency Model | |
Trivedi et al. | An approach to automatic layout of dynamic windows |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090826 Termination date: 20190124 |
|
CF01 | Termination of patent right due to non-payment of annual fee |