一种进程唤醒方法、装置、计算设备及可读存储介质制造方法及图纸

技术编号:34694983 阅读:8 留言:0更新日期:2022-08-27 16:30
本发明专利技术公开了一种进程唤醒方法、装置、计算设备及可读存储介质。本发明专利技术的进程唤醒方法在计算设备中执行,计算设备的操作系统中运行有至少一个进程,该方法包括:在至少一个进程中的目标进程向目标管道中写入数据或从目标管道中读取数据后,判断目标管道的相应等待队列中是否存在待唤醒进程。如果存在,则执行唤醒函数以唤醒至少一个待唤醒进程。如果不存在,则不执行唤醒函数。可见,本发明专利技术在任一进程向任一管道中写入数据或从任一管道中读取数据后,不会立即去执行唤醒函数,只有确认该管道的相应等待队列中存在待唤醒进程时,才会执行唤醒函数,从而可以提升管道进程的读写性能。能。能。

【技术实现步骤摘要】
一种进程唤醒方法、装置、计算设备及可读存储介质


[0001]本专利技术涉及计算机领域,尤其涉及一种进程唤醒方法、装置、计算设备及可读存储介质。

技术介绍

[0002]管道PIPE是一种使用非常频繁的半双工进程通信机制,常用于进程之间,一端作读端,一端作写端。PIPE是文件的一种,但不同于文件的是其不能无限制的写入,PIPE的缓存区(buffer)大小固定。因此,当任一进程向管道中写入数据时,如果缓存区已被写满,则该进程会进入阻塞状态(即,被阻塞),等待被唤醒。同理,当任一进程从管道中读取数据时,如果缓存区已为空(即,缓存区中的数据已全部被读取完),则该进程也会进入阻塞状态,等待被唤醒。
[0003]为此,需要一种高效的进程唤醒机制来将阻塞的进程唤醒。

技术实现思路

[0004]为此,本专利技术提供了一种进程唤醒方法、装置、计算设备及可读存储介质,以力图解决或者至少缓解上面存在的问题。
[0005]根据本专利技术的一个方面,提供一种进程唤醒方法,在计算设备中执行,计算设备的操作系统中运行有至少一个进程,该方法包括:在至少一个进程中的目标进程向目标管道中写入数据或从目标管道中读取数据后,判断目标管道的相应等待队列中是否存在待唤醒进程;如果存在,则执行唤醒函数以唤醒至少一个待唤醒进程;如果不存在,则不执行唤醒函数。
[0006]可选地,在根据本专利技术的进程唤醒方法中,如果在目标进程向目标管道中写入数据后,目标管道的读取等待队列中存在待唤醒进程,则执行唤醒函数以唤醒读取等待队列中的至少一个待唤醒进程。
[0007]可选地,在根据本专利技术的进程唤醒方法中,如果在目标进程从目标管道中读取数据后,目标管道的写入等待队列中存在待唤醒进程,则执行唤醒函数以唤醒写入等待队列中的至少一个待唤醒进程。
[0008]可选地,在根据本专利技术的进程唤醒方法中,还包括:接收目标进程对目标管道的数据处理请求,并确定数据处理请求为数据读取请求或数据写入请求;如果数据处理请求为数据读取请求,则判断目标管道的缓存区是否为空;如果缓存区不为空,则通知目标进程从目标管道中读取数据。
[0009]可选地,在根据本专利技术的进程唤醒方法中,还包括:如果数据处理请求为数据写入请求,则判断目标管道的缓存区是否已满;如果缓存区未满,则通知目标进程向目标管道中写入数据。
[0010]可选地,在根据本专利技术的进程唤醒方法中,在执行唤醒函数的步骤之前,还包括:获取相应等待队列的锁,并保持中断状态。
[0011]根据本专利技术的又一个方面,提供一种进程唤醒装置,驻留在计算设备中,计算设备的操作系统中运行有至少一个进程,该装置包括:判断单元,适于在至少一个进程中的目标进程向目标管道中写入数据或从目标管道中读取数据后,判断目标管道的相应等待队列中是否存在待唤醒进程;唤醒单元,适于如果存在,则执行唤醒函数以唤醒至少一个待唤醒进程;终止单元,适于如果不存在,则不执行唤醒函数。
[0012]可选地,在根据本专利技术的进程唤醒装置中,唤醒单元,适于如果在目标进程向目标管道中写入数据后,目标管道的读取等待队列中存在待唤醒进程,则执行唤醒函数以唤醒读取等待队列中的至少一个待唤醒进程,还适于如果在目标进程从目标管道中读取数据后,目标管道的写入等待队列中存在待唤醒进程,则执行唤醒函数以唤醒写入等待队列中的至少一个待唤醒进程。
[0013]根据本专利技术的又一个方面,提供一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行根据本专利技术的进程唤醒方法的指令。
[0014]根据本专利技术的又一个方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行根据本专利技术的进程唤醒方法。
[0015]根据本专利技术的进程唤醒方法,在目标进程向目标管道中写入数据或从目标管道中读取数据后,首先判断目标管道的相应等待队列中是否存在待唤醒进程。如果存在,则执行唤醒函数以唤醒至少一个待唤醒进程。如果不存在,则不执行唤醒函数。可见,本专利技术在任一进程向任一管道中写入数据或从任一管道中读取数据后,不会立即去执行唤醒函数,只有确认该管道的相应等待队列中存在待唤醒进程时,才会执行唤醒函数。如此,则可避免在管道的读取等待队列中没有待唤醒进程或者管道的写入等待队列中没有待唤醒进程时,仍执行唤醒函数情况的发生,从而可以有效避免因执行多余的唤醒函数而损失的性能,提升了管道进程的读写性能。
附图说明
[0016]为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
[0017]图1示出了根据本专利技术一个实施例的写入数据应用场景下基于无条件执行唤醒函数机制唤醒进程的示意图;
[0018]图2示出了根据本专利技术一个实施例的读取数据应用场景下基于无条件执行唤醒函数机制唤醒进程的示意图;
[0019]图3示出了根据本专利技术一个实施例的无条件执行唤醒函数机制下执行唤醒函数的流程的示意图;
[0020]图4示出了根据本专利技术一个实施例的计算设备400的结构框图;
[0021]图5示出了根据本专利技术一个实施例的进程唤醒方法500的流程图;
[0022]图6示出了根据本专利技术又一个实施例的写入数据应用场景下的进程唤醒方法600
的流程图的示意图;
[0023]图7示出了根据本专利技术又一个实施例的读取数据应用场景下的进程唤醒方法700的流程图的示意图;
[0024]图8示出了根据本专利技术一个实施例的进程唤醒装置800的结构框图。
具体实施方式
[0025]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0026]为了清楚展示本专利技术实施例的方案和有益效果,在具体展开说明本专利技术实施例之前,首先对进程阻塞、进程唤醒和管道PIPE进行一下说明。
[0027]进程阻塞:正在运行的进程由于提出系统服务请求(如I/O操作),但因为某种原因未得到操作系统的立即响应,或者需要从其他合作进程获得的数据尚未到达等原因,该进程只能调用阻塞原语把自己阻塞以等待相应事件的出现。
[0028]进程唤醒:当阻塞的进程所期待的事件出现时,如I/O完成或者其所期待的数据已经到达,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语来将等待该事件的进程唤醒以使其进入就绪状态。
[0029]管道PIPE:进程间的一种通信方式,可以实现双向的数据传输,但同本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种进程唤醒方法,适于在计算设备中执行,所述计算设备的操作系统中运行有至少一个进程,所述方法包括:在所述至少一个进程中的目标进程向目标管道中写入数据或从目标管道中读取数据后,判断所述目标管道的相应等待队列中是否存在待唤醒进程;如果存在,则执行唤醒函数以唤醒至少一个所述待唤醒进程;如果不存在,则不执行唤醒函数。2.如权利要求1所述的方法,其中:如果在所述目标进程向所述目标管道中写入数据后,所述目标管道的读取等待队列中存在待唤醒进程,则执行唤醒函数以唤醒所述读取等待队列中的至少一个待唤醒进程。3.如权利要求1或2所述的方法,其中:如果在所述目标进程从所述目标管道中读取数据后,所述目标管道的写入等待队列中存在待唤醒进程,则执行唤醒函数以唤醒所述写入等待队列中的至少一个待唤醒进程。4.如权利要求1

3中任一项所述的方法,还包括:接收所述目标进程对所述目标管道的数据处理请求,并确定所述数据处理请求为数据读取请求或数据写入请求;如果所述数据处理请求为数据读取请求,则判断所述目标管道的缓存区是否为空;如果所述缓存区不为空,则通知所述目标进程从所述目标管道中读取数据。5.如权利要求4所述的方法,还包括:如果所述数据处理请求为数据写入请求,则判断所述目标管道的缓存区是否已满;如果所述缓存区未满,则通知所述目标进程向所述目标管道中写入数据。6.如权利要求1

...

【专利技术属性】
技术研发人员:余昇锦周鹏胡翔叶中玉
申请(专利权)人:统信软件技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1