CN1152306C - 防止多处理器计算机中各处理器间进程发生冲突的方法 - Google Patents
防止多处理器计算机中各处理器间进程发生冲突的方法 Download PDFInfo
- Publication number
- CN1152306C CN1152306C CNB011015888A CN01101588A CN1152306C CN 1152306 C CN1152306 C CN 1152306C CN B011015888 A CNB011015888 A CN B011015888A CN 01101588 A CN01101588 A CN 01101588A CN 1152306 C CN1152306 C CN 1152306C
- Authority
- CN
- China
- Prior art keywords
- processor
- interrupt
- auxilliary
- lock flag
- routine
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明以整数变量作为锁定标志,设置于一多处理器计算机中各处理器所属的进程控制表的代码段内,以标识出目前是否已有处理器正在占用系统资源,若无,即可在将该锁定标志置入后,令一处理器执行其中断处理程序,在执行完毕后,再释放该锁定标志,使其他处理器能够使用系统资源,依序于接收到中断信号时,正常执行其中断处理程序,使在对一多处理器计算机中各处理器数目进行量测时,可有效防止各处理器间进程发生冲突。
Description
按,在现有电脑作业系统(Operating System)的技术中,DOS作业系统是属一种单进程且独占资源的单工系统,该系统在其运行上只能有一个进程(process),故在单一处理器的环境下,DOS作业系统中不可能有一个以上的进程同时执行。若有多个进程提交该系统进行处理,即需依靠排班队列(Scheduling Queues)的方式,依序执行各进程。
传统上,在对一台具有多处理器计算机中的处理器数目进行测量时,一般是令每个处理器均执行一进程(process),同时分别在存储器中写入一个标记,以表示该处理器的存在。但在此种传统量测过程中,如何能令该等处理器均能正确地执行每个进程,令其在分别执行所属进程时,不致发生冲突,且在所有进程被执行完毕后,仍能保证DOS作业系统的正常运行,则是目前在DOS作业系统下,对多处理器计算机中的处理器数目进行测量时,尚无法有效解决的问题。
有鉴于传统上对多处理器计算机中多处理器数目进行量测时,易发生多处理器进程冲突的诸多缺点,发明人乃进一步研究改良,研发出本发明,本发明主要是藉由一整数变量(semaphore),以其作为锁定标志,标识出目前是否有处理器正在占用系统资源,若无处理器占用系统资源,即可将该锁定标志置入后,再令一处理器执行其中断服务例程;在执行完毕后,再释放该锁定标志,使其他处理器能够依序使用系统资源,执行其中断服务例程。
本发明的主要目的,是透过设置一整数变量,作为锁定标志,以保证一电脑中的多个处理器,可依序执行其所属进程,令各该进程间不致发生冲突,当一处理器进程结束后,即释放该锁定标志,并回复到中断前的状态,使其他处理器能够依序使用系统资源,执行其中断服务例程,并确保多处理器模块执行完毕后,DOS作业系统仍能维持正常运行。
本发明的另一目的,是将该整数变量标志设置于各该多处理器所属的进程控制表的代码段内,因各该代码段是不随进程的执行而改变,故各该处理器在执行该中断服务例程前,可将其数据段和堆栈段内的数据先予以保存,并将保存的地址储存在该代码段内,以确保各该处理器在完成中断处理后,能正确地查找到该等数据,并回复到中断前的状态。
为了实现上述目的,本发明提供一种防止多处理器计算机中各处理器间进程发生冲突的方法,该方法是以一整数变量作为锁定标志,设置于一多处理器计算机中各处理器所属的进程控制表的代码段内,以标识出目前是否已有处理器正在占用系统资源,若无处理器占用系统资源,即可在将该锁定标志置入后,令一处理器执行其中断处理程序,在执行完毕后,再释放该锁定标志,使其他处理器能够使用系统资源,依序于接收到中断信号时,正常执行其中断处理程序。
图1所示乃本发明的整体流程示意图;
图2所示乃本发明中主处理器的处理流程示意图;
图3所示乃本发明中各辅处理器的处理流程示意图;
图4所示乃本发明中各辅处理器对其中断服务例程的入口进行设定的处理流程示意图。
在符合Intel架构的多处理器主机板上,一般均安装有一个含有局部高级可编程中断控制器(local APIC)的主处理器,该主处理器主要是于该多处理器系统间负责传递通信讯息及命令,当该主处理器接收到由其他处理器透过系统总线所发出的中断信号时,会将该中断信号传递至所指定的辅处理器,使各该辅处理器对中断进行处理。当该种多处理器主机板上的DOS作业系统接收到一特殊的中断启始(start-up)信号时,其上的该主处理器将会触发该特殊的中断,令各该辅处理器能依序执行一中断服务例程(serviceroutine),使该服务例程去检查该中断信号,并呼叫特定的中断处理程序,对该中断进行处理,且将其目前的状态储存至一存储器中。由于在DOS作业系统下,同一时刻仅允许一处理器执行该服务例程,本发明即藉由设置一整数变量,作为一锁定标志的方法,利用该锁定标志标识出目前是否已有处理器正在占用系统资源,执行该中断处理程序,若无处理器占用系统资源,即可将该锁定标志置入后,令一处理器执行该中断服务例程;在执行完毕后,再释放该锁定标志,使其他处理器能够依序使用系统资源,执行其中断服务例程。
在本发明中,由于该多处理器主机板上的各处理器,均有其各别应执行的进程(process),各该进程于存储器中,均对应者一进程控制表(processcontrol block),各该进程控制表的数据段及堆栈(Stack)段互不相同,故若该整数变量标志是被设计置放于该数据段内,由于该数据段内的数据,将因进程的执行而改变,令其它处理器找不到该标志,而导致系统崩溃。因此,本发明是将该整数变量标志设计置放于各该进程控制表的代码段内,该代码段是不随进程的执行而改变。如此,各该处理器在执行该中断服务例程前,可将该数据段和堆栈段内的数据先予以保存,并将保存的地址储存在该代码段内,以确保各该处理器在完成中断处理后,能正确地查找到该等数据,并回复到中断前的状态。
本发明中,当该多处理器主机板被开机,并完成DOS作业系统的启始(boot-up)程序后,参阅第1图所示,系统是先对主处理器完成初始化状态设定(101);并由该主处理器设定各该辅处理器进行中断的入口地址(102);然后,再对各该辅处理器依序发出中断信号(103);各该辅处理器在接收到一中断信号时,将调用存储器中(位于40:67)的一中断向量(interrupt vector),以依据该中断向量内所提供的中断服务例程(Service Routine)的地址,执行相应的中断程序(104),故,各辅处理器所执行的对应中断服务例程的地址,必须置放于位于存储器中40:67地址的该中断向量(interrupt vector)内,使各该辅处理器均能透过该中断向量,找到对应的中断服务例程,并予执行,以完成对该中断的处理;各该辅处理器是利用本发明所设计的锁定标志,标识出目前已占用系统资源,处于正在执行该中断处理程序的状态,在执行完毕后,再释放该锁定标志(105),并等待下一次的中断请求(106),如此,即可令其他辅处理器依序使用系统资源,执行该中断服务例程。
在本发明中,复参阅第1图所示,在各该辅处理器接收到一中断信号时,需将其目前的状态储存至一暂存存储器中(107),使在各该处理器完成对该中断的处理,并释放该锁定标志后,该主处理器可根据保存于该暂存存储器中的数据(108),正确地查找到各该辅处理器中断前的状态数据,以确保各该辅处理器在完成中断处理后,仍能回复到中断前的状态(109)。
在本发明的前述处理程序中,参见第2图所示,该主处理器是依下列步骤,进行处理:
首先,判断该主处理器当前的模式,是否属实模式(real mode)(201),若当前模式为保护模式(protection mode),结束处理;否则,判断该主处理器的识别号(ID),是否为Pentium以上的处理器(202),若否,则结束处理;
若为Pentium以上的处理器,则将当前的操作模式切换到保护模式(203),并搜索浮点指针(float pointer),找到本地的高级可编程中断控制器(local APIC)的基地址(base address)(204);
然后,再于该地址处分别设置任务优先级寄存器(register)、伪向量寄存器、目的寄存器及目的格式寄存器(205);并为每个待处理的辅处理器设定一对应的变量,并将该变量值设为0,同时保存其数据段(206);
再为每个处理器申请数据使用空间及4K页空间,其中的4K页空间是支持每个处理器运行时所需的存储器空间(207);
然后再判断是否申请成功(208)?若否,结束处理,否则,设定中断服务例程的入口地址模块(209),发出中断启始(start up)信号,令各该辅处理器开始执行中断服务例程(211);
在中断服务例程被执行完毕,再恢复中断前的系统环境,并释放存储器空间,且切换回实模式(212),等待下一次被调用。
在本发明中,参见第3图所示,各该辅处理器在利用本发明所设计的锁定标志,标识出目前占用系统资源的状态时,主要是依下列步骤,进行处理:
首先,侦测锁定标志值(301),并判断该标志是否已经被锁定(302),若已被锁定,则返回(301),继续侦测锁定标志值;否则,对该标志值进行锁定(303);
将数据段及堆栈段改为申请的段空间(304)后,再向暂存存储器中写入对应段空间的存在标志(305),使该主处理器可自该暂存存储器中,正确地读取各该辅处理器中断前的状态数据;在完成执行该中断处理程序,再释放该标志值的锁定(306),且将该标志设定为空闲状态(307),令其他辅处理器能够使用系统资源,依序执行该中断服务例程。
在本发明中,参见第4图所示,该中断服务例程的入口地址模块主要是依下列步骤,进行设定:
首先,判断0X70的入口是否为可写状态(401)?若否,则结束处理;否则,向0X70的入口写入0X7F值(402);
判断0X71的入口是否为可写状态(403)?若是,向0X70的入口写入0X0A值(402),并将中断服务例程的地址写入存储器地址40:67中(405)。
本发明在该代码段中,是藉设定一整数变量(semaphore),以作为是否锁定的标志,使各该处理器在执行中断服务程序的过程中,可先循环检测该整数变量的锁定标志是否被锁定,若是,则令其处于等待状态,并继续循环检查该锁定标志,否则,锁定该标志,并执行中断服务程序,在中断服务例程被执行完毕,即释放该锁定标志,以令其他处理器可依序执行其中断服务程序。
如此,在对一台具有多处理器计算机中的处理器数目进行测量时,各该处理器在依序接收到中断信号时,均能正常执行其中断处理程序,并可有效防止各处理器间进程发生冲突的情事,确保多处理器模块执行完毕后,DOS作业系统仍能维持正常运行。
以上所述,仅是本发明的较佳实施例,惟,本发明所主张的权利范围,并不局限于此,按凡熟悉该项技艺人士,依据本发明所揭露的技术内容,可轻易思及的等效变化,均应属不脱离本发明的保护范畴。
Claims (8)
1.一种防止多处理器系统中DOS系统下各处理器之间进程发生冲突的方法,所述多处理器系统包括一个主处理器和多个辅处理器,所述方法包括:
设置步骤,用于在多处理器系统中各辅处理器所属的进程控制表的代码段中设置一个整数标量作为锁定标志;
判断步骤,用于根据所述锁定标志判断当前是否已经有任何辅处理器正在占用系统资源;
置入步骤,用于当所述判断步骤判断出没有任何辅处理器正在占用系统资源时,向一个辅处理器置入所述锁定标志
执行步骤,用于由被置入所述锁定标志的所述辅处理器执行与其相关的一个中断程序;
释放步骤,用于当所述辅处理器执行完所述中断程序之后释放所述锁定标志,并允许其它辅处理器使用所述系统资源。
2.根据权利要求1所述的方法,其中,还包括:
初始化步骤,用于对所述主处理器进行初始化;和
设定步骤,用于由所述主处理器设定所述辅处理器的中断入口地址。
3.根据权利要求1所述的方法,其中所述执行步骤包括:
调用步骤,用于当所述辅处理器接收到一个中断信号时调用存储器中的一个中断向量,以便根据该中断向量内所提供的中断例程的地址,执行相应的中断程序。
4.根据权利要求3所述的方法,其中,还包括:
标识步骤,用于使各辅处理器利用所述锁定标志标识目前已被占用的系统资源正在执行该中断处理程序中的状态;和
释放步骤,用于在所述中断处理程序执行完毕之后,释放所述锁定标志,并等待下一次中断请求。
5.根据权利要求3所述的方法,其中还包括:
暂存步骤,用于当所述辅处理器接收到一个中断信号时将该辅处理器的当前状态暂存在一个存储器中,和
恢复步骤,用于当所述辅处理器执行完所述中断处理之后恢复到中断前的状态。
6.根据权利要求2所述的方法,其中,还包括:
识别号判断步骤,用于当所述主处理器的当前模式是实模式时,判断所述主处理器的识别号是否符合规定,即、判断所述处理器是否为Pentium以上的处理器;
切换步骤,如果所述主处理器的识别号符合规定,则将当前的操作模式切换为保护模式;和
搜索步骤,用于在所述保护模式下搜索浮点指针,以便获得所述主处理器的基地址;
寄存器设置步骤,用于在所述基地址处分别设置任务优先级寄存器、伪向量寄存器、目的寄存器和目的格式寄存器;
变量设定步骤,用于为每个待处理的辅处理器设定一个对应的变量;
申请步骤,用于为每个辅处理器申请使用空间和运行空间;和
判断步骤,用于判断所述申请是否成功,若是,则设定所述服务程序的入口地址并发出中断开始信号。
7.根据权利要求6所述的方法,其中,还包括:
恢复步骤,用于在所述中断程序执行完毕之后将所述系统恢复到中断之前的系统环境,并释放所述存储器的空间;和
切换步骤,将所述系统切换回实模式,并等待下一次被调用。
8.根据权利要求4所述的方法,其中,所述标识步骤包括:
检测步骤,用于检测所述锁定标志的值;
判断步骤,用于判断所述锁定标志是否已经被锁定;
锁定步骤,如果所述锁定标志已经被锁定,则重复所述检测步骤,否则锁定该锁定标志;
存储步骤,用于在将数据段和堆栈段改为中请的段空间后,将对应段空间的存在标志存储到缓存器中,以便使所述主处理器能够从该缓存器中读出各辅处理器被中断前的状态数据;和
释放步骤,用于在所述中断程序执行完毕之后释放所述标志值,并将该锁定标志设置为空闲状态,以便使其它辅处理器能够使用系统资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011015888A CN1152306C (zh) | 2001-01-23 | 2001-01-23 | 防止多处理器计算机中各处理器间进程发生冲突的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011015888A CN1152306C (zh) | 2001-01-23 | 2001-01-23 | 防止多处理器计算机中各处理器间进程发生冲突的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1367432A CN1367432A (zh) | 2002-09-04 |
CN1152306C true CN1152306C (zh) | 2004-06-02 |
Family
ID=4652148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011015888A Expired - Fee Related CN1152306C (zh) | 2001-01-23 | 2001-01-23 | 防止多处理器计算机中各处理器间进程发生冲突的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1152306C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100437495C (zh) * | 2004-12-21 | 2008-11-26 | 鸿富锦精密工业(深圳)有限公司 | 解决资源重复锁定冲突系统及方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1867018B (zh) * | 2005-05-18 | 2010-04-28 | 北京信威通信技术股份有限公司 | 数字移动终端话费即时提示的方法 |
JP4963018B2 (ja) * | 2005-08-15 | 2012-06-27 | 株式会社ソニー・コンピュータエンタテインメント | スケジューリング方法およびスケジューリング装置 |
TW200810523A (en) * | 2005-12-23 | 2008-02-16 | Nxp Bv | An AV renderer peripheral with dual interrupt lines for staggered interrupts |
EP1988461B1 (en) * | 2007-04-30 | 2016-04-20 | Accenture Global Services Limited | Alternating processing method, system, and computer program product |
CN101640853B (zh) | 2008-07-30 | 2015-11-25 | 中兴通讯股份有限公司 | 彩信通知消息的处理方法和装置、彩信接收系统 |
CN104540110B (zh) * | 2008-07-30 | 2019-02-01 | 中兴通讯股份有限公司 | 彩信通知消息的处理方法和装置、彩信接收系统 |
CN101694634B (zh) * | 2009-10-30 | 2013-06-26 | 迈普通信技术股份有限公司 | 自动化测试系统中设备分配方法 |
US20120185688A1 (en) * | 2011-01-13 | 2012-07-19 | Google Inc. | Processor mode locking |
WO2012119395A1 (zh) | 2011-08-17 | 2012-09-13 | 华为技术有限公司 | 处理器的管理方法、锁竞争管理装置和计算机系统 |
CN102693193B (zh) * | 2012-04-26 | 2015-05-27 | 重庆重邮信科通信技术有限公司 | 中断辅助处理装置、实时系统及中断处理方法 |
CN103368724A (zh) * | 2013-07-30 | 2013-10-23 | 东莞宇龙通信科技有限公司 | 终端和数据处理方法 |
CN104111870B (zh) * | 2014-07-08 | 2017-05-24 | 福建星网锐捷网络有限公司 | 一种中断处理装置及中断处理方法 |
CN107329810B (zh) * | 2016-04-28 | 2023-09-08 | 恩智浦美国有限公司 | 用于多核处理器的信号机 |
CN117331676B (zh) * | 2023-11-30 | 2024-03-19 | 上海兆芯集成电路股份有限公司 | 系统管理模式进入方法、处理器和计算机系统 |
-
2001
- 2001-01-23 CN CNB011015888A patent/CN1152306C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100437495C (zh) * | 2004-12-21 | 2008-11-26 | 鸿富锦精密工业(深圳)有限公司 | 解决资源重复锁定冲突系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1367432A (zh) | 2002-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1152306C (zh) | 防止多处理器计算机中各处理器间进程发生冲突的方法 | |
EP0064142B1 (en) | Multiprocessor system comprising a task handling arrangement | |
CN1011357B (zh) | 多重处理的方法和设备 | |
CA1216072A (en) | Deadlock detection and prevention mechanism for a computer system | |
US4887202A (en) | Input-output control method in a virtual machine system | |
US5095427A (en) | Dispatch control of virtual machine | |
US4429360A (en) | Process and apparatus for interrupting and restarting sequential list-processing operations | |
EP1010062B1 (en) | Bootstrap processor selection in a multiprocessor system | |
EP0063186A1 (en) | Improvements to digital data processing apparatus | |
US6697834B1 (en) | Mutual exculsion system and method for restarting critical sections of code when preempted during a critical section | |
EP2431876A1 (en) | Method and device for exception handling in embedded system | |
US4725946A (en) | P and V instructions for semaphore architecture in a multiprogramming/multiprocessing environment | |
US5257375A (en) | Method and apparatus for dispatching tasks requiring short-duration processor affinity | |
EP0283193A2 (en) | Method of spare capacity use for fault detection in a multiprocessor system | |
JPS58142458A (ja) | 共通母線利用検出制御回路及び共通母線利用検出制御方法 | |
EP0532334A2 (en) | Error recovery in an information processing system | |
US5193159A (en) | Microprocessor system | |
US20020099893A1 (en) | System and method for the handling of system management interrupts in a multiprocessor computer system | |
CN1811719A (zh) | 一种单线程微处理器的死锁检测与干预方法 | |
KR100495240B1 (ko) | 프로세서 시스템 | |
US5745757A (en) | Multiprocessor system with microprogrammed means for dispatching processes to processors | |
EP0258650B1 (en) | Parallel computer system capable of asynchronous data transmission | |
US6026504A (en) | Multiprocessor system and method for error tracking | |
JPH01286029A (ja) | マイクロプログラムのパッチ方式 | |
US20030005195A1 (en) | Semaphore management subsystem for use with multi-thread processor systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040602 Termination date: 20110123 |