CN105760216A - 一种多进程同步控制方法 - Google Patents
一种多进程同步控制方法 Download PDFInfo
- Publication number
- CN105760216A CN105760216A CN201610113440.7A CN201610113440A CN105760216A CN 105760216 A CN105760216 A CN 105760216A CN 201610113440 A CN201610113440 A CN 201610113440A CN 105760216 A CN105760216 A CN 105760216A
- Authority
- CN
- China
- Prior art keywords
- shared resource
- described shared
- resource
- variable
- shared
- 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.)
- Pending
Links
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/468—Specific access rights for resources, e.g. using capability register
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种多进程同步控制方法,包括:构建共享资源对应的共享变量,并对所述共享变量赋初值;当一进程需要访问共享资源,根据所述共享变量判断所述共享资源是否可以被立即访问,并对所述共享变量执行减一操作;若所述共享资源可以被立即访问,则由进程访问所述共享资源,否则,调用操作系统同步控制接口,使进程进入等待队列;当一进程需要结束对共享资源的访问,根据所述共享变量判断所述共享资源是否有其它等待访问的进程,并对所述共享变量执行加一操作;若不存在其它等待访问的进程,则直接释放所述共享资源,否则,调用操作系统同步控制接口,唤醒等待队列中最优先的进程访问所述共享资源。本发明技术方案,能够避免CPU性能浪费。
Description
技术领域
本发明涉及多进程嵌入式系统技术领域,特别是涉及一种多进程同步控制方法。
背景技术
当前,在车载嵌入式系统,如汽车音响导航设备中,已采用多进程设计来增强处理的实时性,从而提高系统的工作效率。在多程程系统中,被加载到内存中执行的程序实例,称之为进程(process)。一个进程从建立到终止,全由操作系统的核心掌握。操作系统的内部有一个进程队列,针对进程的状态和需求,根据不同的算法安排执行的顺序。每个进程会分配一小段CPU时间,该时间结束后CPU马上切换到其它进程执行,这种在各种进程之间切换执行,在计算机术语上称为上下文切换(contextswitch)。
在多进程嵌入式系统中,多进程之间竞争访问共享资源(各个进程都可以使用的资源,例如存储于内存单元中的某一数据)有时会造成数据不一致,从而导致系统崩溃,因此在多进程系统中都需要实现进程的同步控制,防止各个进程对共享资源的不安全访问。
传统技术中,多进程系统采用信号量机制来同步控制各个线程对共享资源的访问。进程在访问共享资源时,都需要通过操作系统接口来调用信号量机制相关的函数,例如当有一个进程试图获得一个已经被持有的信号量时,基于信号量机制,操作系统会将该进城放入等待队列(例如通过调用wait函数),然后让其睡眠,而当持有信号量的进程释放共享资源后,将等待队列中的进程唤醒(如wake-up函数),从而使该进程能够访问共享资源。传统技术中,同步控制都需要调用操作系统接口来完成,比较消耗CPU资源,然后实际中各个进程对共享资源访问的频率和占用时间都不尽相同,频繁的调用来申请信号量和释放信号量,会导致系统的性能浪费,降低效率。
发明内容
基于此,有必要提供一种多进程同步控制方法,针对多进程系统中不同进程对共享资源访问和占用时间不同的情况,能够避免频繁地调用信号量机制的相关函数,避免CPU性能浪费。
一种多进程同步控制方法,包括:
构建共享资源对应的共享变量,并对所述共享变量赋初值;所述共享变量为非负数时,标识所述共享资源当前可以被对应数目的进程访问,所述共享变量为负数时,标识当前正在等待访问所述共享资源的进程数目;
当一进程需要访问共享资源,根据所述共享变量判断所述共享资源是否可以被立即访问,并对所述共享变量执行减一操作;若所述共享资源可以被立即访问,则由进程访问所述共享资源,否则,调用操作系统同步控制接口,使进程进入等待队列;
当一进程需要结束对共享资源的访问,根据所述共享变量判断所述共享资源是否有其它等待访问的进程,并对所述共享变量执行加一操作;若不存在其它等待访问的进程,则直接释放所述共享资源,否则,调用操作系统同步控制接口,唤醒等待队列中最优先的进程访问所述共享资源。
在一个实施例中,所述减一操作和所述加一操作均为原子操作。
在一个实施例中,在进程访问所述共享资源之后,所述方法还包括进程之间进行上下文切换的过程。
在一个实施例中,所述调用操作系统同步控制接口,使进程进入等待队列的步骤,包括:
调用wait函数,使进程进入等待队列。
在一个实施例中,所述调用操作系统同步控制接口,唤醒等待队列中最优先的进程访问所述共享资源的包括:
调用wake-up函数,使等待队列中最优先的进程访问所述共享资源。
在一个实施例中,所述共享变量的初值为1。
上述多进程同步控制方法,针对不同进程对共享资源访问和占用时间不同的情况下来利用共享变量来标识共享资源的状态,避免频繁地调用操作系统接口函数,减少进程进入传统的信号量机制处理的几率,从而避免CPU资源的浪费。
附图说明
图1为一个实施例中的多进程同步控制方法的流程示意图;
图2为又一个实施例中的多进程同步控制方法的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参见图1,在一个实施例中,提供了一种多进程同步控制方法,该方法包括:
一种多进程同步控制方法,包括:
步骤101,构建共享资源对应的共享变量,并对共享变量赋初值。
具体的,共享变量为非负数时,标识共享资源当前可以被对应数目的进程访问,共享变量为负数时,标识当前正在等待访问所述共享资源的进程数目。共享变量的初值一般赋值为正整数,例如为1,标识该共享资源在某个时刻最多被一个进程所访问。
步骤102,当一进程需要访问共享资源,根据共享变量判断共享资源是否可以被立即访问,并对共享变量执行减一操作;若共享资源可以被立即访问,则由进程访问所述共享资源,否则,调用操作系统同步控制接口,使进程进入等待队列。
步骤103,当一进程需要结束对共享资源的访问,根据共享变量判断共享资源是否有其它等待访问的进程,并对共享变量执行加一操作;若不存在其它等待访问的进程,则直接释放共享资源,否则,调用操作系统同步控制接口,唤醒等待队列中最优先的进程访问所述共享资源。
具体的,上述减一操作和所述加一操作均为原子操作,即具有不可分割性,在执行减一操作或加一操作时,不会发生进程间的上下文切换。而在某个进程访问共享资源后,在进程之间可以有进行上下文切换的过程。上述调用操作系统同步控制接口,可以参照传统技术,例如包括调用wait函数,使进程进入等待队列,或者调用wake-up函数,使等待队列中最优先的进程访问所述共享资源。调用操作系统同步控制接口,涉及到信号量的申请和释放,需要耗费一定的CPU计算资源。
上述实施例中的多进程同步控制方法,针对不同进程对共享资源访问和占用时间不同的情况下来利用共享变量来标识共享资源的状态,避免频繁地调用操作系统接口函数,减少进程进入传统的信号量机制处理的几率,从而避免CPU资源的浪费。
参见图2,提供了一个多进程同步控制方法的具体应用场景。本例中首先初始化共享资源对应的共享变量app_fast_semaphore,并赋值为1。本例中涉及到三个进程A、B、C,A的频率为1S,B为4ms,C为随机性访问。
本例中以A先访问共享资源为例,首先判断共享资源是否可以被立即访问,根据共享变量初值为1,标识该共享资源可以被立即访问,则A进程执行原子性的减一操作atomic_dec_test(app_fast_semaphore)后,即将共享变量置为0,执行对共享资源的访问。
假设A在访问共享资源的过程中,没有发生进程间的切换,则A在访问完共享资源后,根据共享变量为0,判定出当前没有等待访问共享资源的其它进程,则对共享变量执行原子性的加一操作atomic_inc_test(app_fast_semaphore),即将共享变量置为1后,直接释放共享资源。由此可见,在这一场景下,A进程都没有调用操作系统同步控制接口的情况,从而避免了CPU资源的浪费。
在另一种情况下,假设A在访问共享资源的过程中,发生了进程切换,例如CPU切换执行进程B或C进程。这里仅以B为例,若B需要访问共享资源,B根据共享变量当前值为0,判定共享资源无法立即被访问,并对共享变量执行原子性的减一操作(值置为-1),调用操作系统同步控制接口,具体调用wait函数使得B进程进入等待队列。
B进入等待队列后,会发生进程间切换,例如,若切换回A进程,A在访问共享资源之后,根据共享变量值为-1,判定等待队列中有一等待访问共享资源的进程,则对共享变量执行加一操作(置为0),并调用wake-up函数使得B进程访问共享资源。又例如,若切换为C进程,则依次类推,C进程会将共享变量置为-2,并进入等待队列……直至切换为A进程,在A访问完成后,根据等待队列中的优先顺序,唤醒等待中的进程。
由此可见,采用上述多进程同步控制方法,系统的多进程在执行中并不会总是调用操作系统同步控制接口,避免了CPU资源的浪费。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种多进程同步控制方法,其特征在于,包括:
构建共享资源对应的共享变量,并对所述共享变量赋初值;所述共享变量为非负数时,标识所述共享资源当前可以被对应数目的进程访问,所述共享变量为负数时,标识当前正在等待访问所述共享资源的进程数目;
当一进程需要访问共享资源,根据所述共享变量判断所述共享资源是否可以被立即访问,并对所述共享变量执行减一操作;若所述共享资源可以被立即访问,则由进程访问所述共享资源,否则,调用操作系统同步控制接口,使进程进入等待队列;
当一进程需要结束对共享资源的访问,根据所述共享变量判断所述共享资源是否有其它等待访问的进程,并对所述共享变量执行加一操作;若不存在其它等待访问的进程,则直接释放所述共享资源,否则,调用操作系统同步控制接口,唤醒等待队列中最优先的进程访问所述共享资源。
2.根据权利要求1所述的方法,其特征在于,所述减一操作和所述加一操作均为原子操作。
3.根据权利要求1所述的方法,其特征在于,在进程访问所述共享资源之后,所述方法还包括进程之间进行上下文切换的过程。
4.根据权利要求1所述的方法,其特征在于,所述调用操作系统同步控制接口,使进程进入等待队列的步骤,包括:
调用wait函数,使进程进入等待队列。
5.根据权利要求1所述的方法,其特征在于,所述调用操作系统同步控制接口,唤醒等待队列中最优先的进程访问所述共享资源的包括:
调用wake-up函数,使等待队列中最优先的进程访问所述共享资源。
6.根据权利要求1所述的方法,其特征在于,所述共享变量的初值为1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610113440.7A CN105760216A (zh) | 2016-02-29 | 2016-02-29 | 一种多进程同步控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610113440.7A CN105760216A (zh) | 2016-02-29 | 2016-02-29 | 一种多进程同步控制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105760216A true CN105760216A (zh) | 2016-07-13 |
Family
ID=56330471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610113440.7A Pending CN105760216A (zh) | 2016-02-29 | 2016-02-29 | 一种多进程同步控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105760216A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106413133A (zh) * | 2016-10-31 | 2017-02-15 | 努比亚技术有限公司 | 一种信息处理方法及电子设备 |
CN108171862A (zh) * | 2018-01-08 | 2018-06-15 | 北京值得买科技股份有限公司 | 一种发号方法及发号器 |
CN108460047A (zh) * | 2017-02-21 | 2018-08-28 | 阿里巴巴集团控股有限公司 | 数据同步方法及设备 |
CN109144685A (zh) * | 2017-06-16 | 2019-01-04 | 通用汽车环球科技运作有限责任公司 | 支持多处理系统中的可重新配置同步的架构和服务 |
CN110837422A (zh) * | 2019-10-12 | 2020-02-25 | 上海眼控科技股份有限公司 | 多线程访问方法、系统、电子终端以及储存介质 |
CN110968418A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | 基于信号-槽的大规模有约束并发任务的调度方法与装置 |
CN111858074A (zh) * | 2020-06-24 | 2020-10-30 | 深圳英飞拓智能技术有限公司 | 一种资源访问的方法、装置及设备 |
CN112765088A (zh) * | 2019-11-04 | 2021-05-07 | 罗习五 | 利用数据标签提高多计算单元平台上数据共享的方法 |
CN114942791A (zh) * | 2022-05-26 | 2022-08-26 | 统信软件技术有限公司 | 一种进程唤醒方法、装置、计算设备及可读存储介质 |
CN118349319A (zh) * | 2024-06-18 | 2024-07-16 | 华能信息技术有限公司 | 一种分布式事务的管理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090083455A1 (en) * | 2007-09-21 | 2009-03-26 | Mitel Networks Corporation | Centralized polling service |
CN101470636A (zh) * | 2007-12-27 | 2009-07-01 | 北京东方通科技发展有限责任公司 | 一种消息的读写方法和装置 |
CN101631328A (zh) * | 2009-08-14 | 2010-01-20 | 北京星网锐捷网络技术有限公司 | 一种对共享资源互斥访问的同步方法、装置和网络设备 |
CN104346317A (zh) * | 2013-07-23 | 2015-02-11 | 中兴通讯股份有限公司 | 共享资源访问方法和装置 |
CN104951299A (zh) * | 2015-06-04 | 2015-09-30 | 长沙新弘软件有限公司 | 一种基于原子操作的信号量链表式堆栈方法 |
-
2016
- 2016-02-29 CN CN201610113440.7A patent/CN105760216A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090083455A1 (en) * | 2007-09-21 | 2009-03-26 | Mitel Networks Corporation | Centralized polling service |
CN101470636A (zh) * | 2007-12-27 | 2009-07-01 | 北京东方通科技发展有限责任公司 | 一种消息的读写方法和装置 |
CN101631328A (zh) * | 2009-08-14 | 2010-01-20 | 北京星网锐捷网络技术有限公司 | 一种对共享资源互斥访问的同步方法、装置和网络设备 |
CN104346317A (zh) * | 2013-07-23 | 2015-02-11 | 中兴通讯股份有限公司 | 共享资源访问方法和装置 |
CN104951299A (zh) * | 2015-06-04 | 2015-09-30 | 长沙新弘软件有限公司 | 一种基于原子操作的信号量链表式堆栈方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106413133A (zh) * | 2016-10-31 | 2017-02-15 | 努比亚技术有限公司 | 一种信息处理方法及电子设备 |
CN106413133B (zh) * | 2016-10-31 | 2019-07-30 | 努比亚技术有限公司 | 一种信息处理方法及电子设备 |
CN108460047A (zh) * | 2017-02-21 | 2018-08-28 | 阿里巴巴集团控股有限公司 | 数据同步方法及设备 |
CN109144685A (zh) * | 2017-06-16 | 2019-01-04 | 通用汽车环球科技运作有限责任公司 | 支持多处理系统中的可重新配置同步的架构和服务 |
CN109144685B (zh) * | 2017-06-16 | 2022-04-26 | 通用汽车环球科技运作有限责任公司 | 支持多处理系统中的可重新配置同步的架构和服务 |
CN108171862A (zh) * | 2018-01-08 | 2018-06-15 | 北京值得买科技股份有限公司 | 一种发号方法及发号器 |
CN110968418A (zh) * | 2018-09-30 | 2020-04-07 | 北京忆恒创源科技有限公司 | 基于信号-槽的大规模有约束并发任务的调度方法与装置 |
CN110837422A (zh) * | 2019-10-12 | 2020-02-25 | 上海眼控科技股份有限公司 | 多线程访问方法、系统、电子终端以及储存介质 |
CN112765088A (zh) * | 2019-11-04 | 2021-05-07 | 罗习五 | 利用数据标签提高多计算单元平台上数据共享的方法 |
CN111858074A (zh) * | 2020-06-24 | 2020-10-30 | 深圳英飞拓智能技术有限公司 | 一种资源访问的方法、装置及设备 |
CN114942791A (zh) * | 2022-05-26 | 2022-08-26 | 统信软件技术有限公司 | 一种进程唤醒方法、装置、计算设备及可读存储介质 |
CN118349319A (zh) * | 2024-06-18 | 2024-07-16 | 华能信息技术有限公司 | 一种分布式事务的管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105760216A (zh) | 一种多进程同步控制方法 | |
CN107885666B (zh) | 一种内存管理方法和装置 | |
JP6009529B2 (ja) | マルチスレッドシステムの中でイベントを設定するための技術 | |
KR102472775B1 (ko) | 페이징 중첩을 완화시키기 위한 장치 및 방법 | |
CN104142858B (zh) | 阻塞任务调度方法及装置 | |
CN101887383B (zh) | 一种进程实时调度方法 | |
US20090024985A1 (en) | Task control method and semiconductor integrated circuit | |
CN101169737A (zh) | 任务切换控制方法以及计算机系统 | |
US20090292846A1 (en) | Method of interrupt scheduling | |
WO2022095862A1 (zh) | 调整线程优先级的方法、终端及计算机可读存储介质 | |
WO2014117682A1 (en) | Method, apparatus and terminal for releasing memory | |
CN107544847A (zh) | 终端自动释放后台进程占用资源的方法、存储介质及终端 | |
CN106325996A (zh) | 一种gpu资源的分配方法及系统 | |
CN102754080B (zh) | 多核处理器系统、中断程序、以及中断方法 | |
JPH02300939A (ja) | セマフォオペレーション方式 | |
CN104702534A (zh) | 一种实现多进程共享端口的数据处理的方法及装置 | |
CN102117261B (zh) | 一种芯片内部处理器之间的通信方法 | |
CN114218126A (zh) | 内存回收方法和装置 | |
CN101976206B (zh) | 一种中断处理方法和装置 | |
CN103257894A (zh) | 一种管理程序的方法及电子终端 | |
CN104008062A (zh) | 内存管理方法及内存管理装置 | |
EP4435599A1 (en) | Task processing method and apparatus | |
CN105843735B (zh) | 一种终端内存的消耗方法及装置 | |
US10949367B2 (en) | Method for handling kernel service request for interrupt routines in multi-core environment and electronic device thereof | |
CN105183668A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160713 |