基于异步并行I/O请求的进程同步调度方法、装置以及设备
文献发布时间:2023-06-19 19:35:22
技术领域
本发明涉及进程调度领域,尤其涉及一种基于异步并行I/O请求的进程同步调度方法、装置以及设备。
背景技术
随着计算机计算性能的提升,应用程序的计算规模也随之水涨船高,然而计算机I/O(数据从文件的输入/数据向文件的输出)性能的提升速度远远跟不上计算性能的提升速度,I/O过程成为了不少应用程序的性能瓶颈,为了尽可能地提升I/O性能,现代高性能计算机在硬件层面使用了可进行并行存取的磁盘阵列,在系统层面引入了并行文件系统来尽可能提升计算机层面I/O性能的上限,为了让应用程序充分利用现代高性能计算机的I/O性能,并行I/O系统应运而生;而为了进一步减少I/O开销对程序性能的影响,又出现了异步I/O系统,使I/O操作和应用程序的计算过程能够在时间上重叠,此外,当前还出现了并行I/O系统和异步I/O系统的合体,即异步并行I/O系统,I/O请求的异步并行处理需要使用由一组专用的进程或线程组成的I/O进程组(当采用一组专用的I/O线程时,各I/O线程通常由应用程序的计算进程创建,因此各I/O线程属于不同的计算进程,包含I/O线程的所有进程也会组成一个I/O进程组),并使用I/O请求队列,其中,当应用程序进行I/O操作时,I/O请求会被先放入I/O请求队列中,I/O进程组则会从I/O请求队列中取出并完成各I/O请求,从队列中取出I/O请求的过程被称为I/O请求调度,有多种调度方式,在异步并行I/O场景的情况下,I/O进程组中的每个进程都会有I/O请求队列的一个副本,各进程基于队列副本进行I/O请求的调度。
目前,I/O进程组通常以集合I/O访问的方式来完成各I/O请求,以缓解多个进程之间因竞争文件锁而导致I/O性能下降的现象,在集合I/O访问模式下,整个I/O进程组的所有I/O进程都需要同时参与到同一个集合I/O请求中,这就要求I/O进程组中的各进程在I/O请求调度上的结果保持完全相同;如果不能保证完全相同,则可能导致数据读/写出错,或导致程序的死锁;在正常情况下,应用程序的不同进程之间在I/O请求提交上的顺序可保持完全相同,例如,当采用最为普通的先入先出(FIFO)调度方式时,无需额外处理就能保证I/O进程组中的各进程在I/O请求调度结果上的完全相同(先进先出调度方式的调度结果与应用程序发起I/O请求的顺序相同);但是,当采用支持优先级动态调整的调度方式时,则可能出现进程间调度结果不一致的情况,例如,一开始I/O进程组中各进程的I/O请求队列中均有A、B、C三个请求;随后,部分进程在收到优先级最高的请求D之后进行调度,确定D为要处理的下一个I/O请求;剩余进程在收到优先级最高的请求D之前进行调度,确定A为要处理的下一个I/O请求;最终出现部分进程要处理请求D、部分进程要处理请求A的情况,当前,已有技术提出了异步I/O请求的优先级调度方法,但如何实现异步并行I/O请求在进程间一致的调度,是实现优先级调度的一项关键技术难点。因此,亟待一种解决方案可以实现异步并行I/O请求在进程间一致的调度。
发明内容
为了解决上述问题,本发明提供了一种基于异步并行I/O请求的进程同步调度方法、装置以及设备,可以实现异步并行I/O请求在进程间一致的调度。
第一方面,本发明提供了一种基于异步并行I/O请求的进程同步调度方法,包括:
响应于请求调度命令,获取I/O进程组,将所述I/O进程组中的一个进程划分为主进程,将所述I/O进程组中的剩余进程划分为从进程;
在所述主进程中确定所述请求调度命令的I/O请求调度方式,根据所述I/O请求调度方式,确定所述主进程的第一待调度请求,基于所述第一待调度请求,在所述主进程处确定调度信息;
在各所述从进程处从所述主进程获取到所述调度信息,并在本从进程内确定所述调度信息对应的第二待调度请求;
在所述主进程中把所述第一待调度请求作为I/O请求调度结果,并在各所述从进程处把所述第二待调度请求作为I/O请求调度结果时,完成所述I/O进程组的异步并行I/O请求调度。
在第一方面的一种可能实现方式中,所述I/O请求调度方式,包括:
所述I/O请求调度方式包括先进先出调度方式与优先级调度方式中的一种或多种。
在第一方面的一种可能实现方式中,所述根据所述I/O请求调度方式,确定所述主进程的第一待调度请求,包括:
提取所述主进程的I/O请求队列;
在所述主进程的I/O请求队列中查找符合所述I/O请求调度方式的I/O请求,得到所述第一待调度请求。
在第一方面的一种可能实现方式中,所述基于所述第一待调度请求,在所述主进程处确定调度信息,包括:
提取所述第一待调度请求的请求关键字与I/O请求调度方式;
在所述主进程处组合所述请求关键字与所述I/O请求调度方式,得到所述调度信息。
在第一方面的一种可能实现方式中,所述在各所述从进程处从所述主进程获取到所述调度信息,包括:
在所述主进程处确定第一待调度请求和调度信息后,向各所述从进程发起发送所述调度信息的进程间通信命令;
各所述从进程在利用所述发送所述调度信息的进程间通信命令确定可以接收所述调度信息后,向所述主进程发起接收所述调度信息的进程间通信命令;
利用所述接收所述调度信息的进程间通信命令获取到所述调度信息。
在第一方面的一种可能实现方式中,所述在所述主进程处确定第一待调度请求和调度信息后,之后还包括:
在所述主进程处查看本进程的I/O请求队列是否存在满足所述I/O请求调度方式的第一待调度请求I/O请求;
当存在所述第一待调度请求I/O请求时,确定可以向各所述从进程发送所述调度信息;
当不存在所述第一待调度请求I/O请求时,进行等待,在收到应用程序发起的新I/O命令后,返回上述在所述主进程处查看本进程的I/O请求队列是否存在满足所述I/O请求调度方式的第一待调度请求I/O请求的步骤。
在第一方面的一种可能实现方式中,所述各所述从进程在利用所述发送所述调度信息的进程间通信命令确定可以接收所述调度信息后,之前还包括:
在各所述从进程处查看本从进程的I/O请求队列是否存在满足所述本从进程当前I/O请求调度方式的预调度I/O请求;
当不存在所述预调度I/O请求时,进行等待,在收到应用程序发起的新I/O命令后,返回上述在各所述从进程处查看本从进程的I/O请求队列是否存在满足所述本从进程当前I/O请求调度方式的预调度I/O请求的步骤;
当存在所述预调度I/O请求时,确定可以接收所述调度信息。
在第一方面的一种可能实现方式中,所述在本从进程内确定所述调度信息对应的第二待调度请求,包括:
在所述从进程处提取并保存所述调度信息中的I/O请求调度方式;
根据所述调度信息中的请求关键字,在所述从进程的I/O请求队列查找符合所述I/O请求调度方式的第二待调度I/O请求;
当不存在所述第二待调度I/O请求时,进行等待,在收到应用程序发起的新I/O命令后,返回上述根据所述调度信息中的请求关键字,在所述从进程的I/O请求队列查找符合所述I/O请求调度方式的第二待调度I/O请求的步骤。
在第一方面的一种可能实现方式中,所述进行等待,包括:
所述进行等待的当前进程进入休眠状态,以释放处理器资源;在收到应用程序发起的新I/O命令时,结束所述休眠状态。
在第一方面的一种可能实现方式中,所述完成所述I/O进程组的异步并行I/O请求调度,包括:
获取所述I/O进程组的主进程与从进程;
在利用所述从进程向所述主进程发起进程握手时,确认所有I/O进程是否正确得到所述I/O请求调度结果;
在所有I/O进程正确得到所述I/O请求调度结果时,所述I/O进程组的异步并行I/O请求调度为完成状态。
第二方面,本发明提供了一种基于异步并行I/O请求的进程同步调度装置,所述装置包括:
进程划分模块,用于获取I/O进程组,响应于请求调度命令,将所述I/O进程组中的一个进程划分为主进程,将所述I/O进程组中的剩余进程划分为从进程;
信息构建模块,用于在所述主进程中确定所述请求调度命令的I/O请求调度方式,根据所述I/O请求调度方式,确定所述主进程的第一待调度请求,基于所述第一待调度请求,在所述主进程处确定调度信息;
请求确定模块,用于在各所述从进程处从所述主进程获取到所述调度信息,并在本从进程内确定所述调度信息对应的第二待调度请求;
调度完成模块,用于在所述主进程中把所述第一待调度请求作为I/O请求调度结果,在各所述从进程处把所述第二待调度请求作为I/O请求调度结果,完成所述I/O进程组的异步并行I/O请求调度。
第三方面,本发明提供一种电子设备,包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,以使所述至少一个处理器能够执行如上述第一方面中任意一项所述的基于异步并行I/O请求的进程同步调度方法。
第四方面,本发明提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面中任意一项所述的基于异步并行I/O请求的进程同步调度方法。
与现有技术相比,本方案的技术原理及有益效果在于:
本发明实施例通过响应于请求调度命令,将所述I/O进程组中的一个进程划分为主进程,将所述I/O进程组中的剩余进程划分为从进程,以用于利用所述主进程控制其他从进程,保证其他从进程所调度的I/O请求与所述主进程所要求的一样,从而能确保异步并行I/O请求进程间的调度保持一致;其次,本发明实施例通过在所述主进程中确定所述请求调度命令的I/O请求调度方式,以用于在主进程的I/O请求队列中确定一条被调度的I/O请求之前,首先确认当前的调度方式,即需要根据调度方式确定被调度的I/O请求,进一步地,本发明实施例通过利用所述I/O请求调度方式查询所述主进程的第一待调度请求,以用于利用所述主进程确定好待调度的I/O请求,并控制其他从进程也对此I/O请求进行调度,进一步地,本发明实施例通过基于所述第一待调度请求,在所述主进程处确定调度信息,以用于将调度信息通知到其他从进程,控制其他从进程按照所述调度信息的内容对I/O请求进行调度,保证了其他从进程所调度的I/O请求保持一致;进一步地,本发明实施例通过在各所述从进程处从所述主进程获取到所述调度信息,以用于在接收到所述主进程发来的调度信息之后,所述从进程按照所述调度信息的内容同步调度同一个I/O请求。因此,本发明实施例提出的一种基于异步并行I/O请求的进程同步调度方法、装置以及设备,可以实现异步并行I/O请求在进程间一致的调度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种基于异步并行I/O请求的进程同步调度方法的流程示意图;
图2为本发明一实施例中图1提供的一种基于异步并行I/O请求的进程同步调度方法的其中一个步骤的流程示意图;
图3为本发明一实施例中图1提供的一种基于异步并行I/O请求的进程同步调度方法的另外一个步骤的流程示意图;
图4为本发明一实施例提供的一种基于异步并行I/O请求的进程同步调度装置的模块示意图;
图5为本发明一实施例提供的实现基于异步并行I/O请求的进程同步调度方法的电子设备的内部结构示意图。
具体实施方式
应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供一种基于异步并行I/O请求的进程同步调度方法,所述基于异步并行I/O请求的进程同步调度方法的执行主体包括但不限于服务端、终端等能够被配置为执行本发明实施例提供的该方法的电子设备中的至少一种。换言之,所述基于异步并行I/O请求的进程同步调度方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。所述服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
参阅图1所示,是本发明一实施例提供的基于异步并行I/O请求的进程同步调度方法的流程示意图。其中,图1中描述的基于异步并行I/O请求的进程同步调度方法包括:
S1、响应于请求调度命令,获取I/O进程组,将所述I/O进程组中的一个进程划分为主进程,将所述I/O进程组中的剩余进程划分为从进程。
本发明实施例中,所述请求调度命令是指操作系统向进程组发来的让进程组调度I/O请求队列中的I/O请求的命令;所述I/O进程组是指I/O请求的异步并行处理时所需要使用的由一组专用的进程或线程组成的I/O进程组(当采用一组专用的I/O线程时,各I/O线程通常由应用程序的计算进程创建,因此各I/O线程属于不同的计算进程,包含I/O线程的所有进程也会组成一个I/O进程组),其中,当应用程序进行I/O操作时,I/O请求会被先放入I/O请求队列中,I/O进程组则会从I/O请求队列中取出并完成各I/O请求,从队列中取出I/O请求的过程被称为I/O请求调度,有多种调度方式,在异步并行I/O场景的情况下,I/O进程组中的每个进程都会有I/O请求队列的一个副本,各进程基于队列副本进行I/O请求的调度,即所述I/O进程组中包含多个I/O进程,每个I/O进程又都配置对应的I/O请求队列,方便每个I/O进程从其对应的I/O请求队列中调取I/O请求;I/O进程组中的任意一个进程都可以被确定为主进程,在确定主进程后,其他进程都是从进程,I/O进程组通信域中的0号进程通常被确定主进程,在特殊的通信域场景下,每个进程都有其对应的进程号,进程号从零开始,例如一个四进程的进程组中,进程号为0、1、2、3。
本发明实施例通过将所述I/O进程组中的一个进程划分为主进程,将所述I/O进程组中的剩余进程划分为从进程,以用于利用所述主进程控制其他从进程,保证其他从进程所调度的I/O请求与所述主进程所要求的一样,从而能确保异步并行I/O请求进程间的调度保持一致。
S2、在所述主进程中确定所述请求调度命令的I/O请求调度方式,根据所述I/O请求调度方式,确定所述主进程的第一待调度请求,基于所述第一待调度请求,在所述主进程处确定调度信息。
本发明实施例通过在所述主进程中确定所述请求调度命令的I/O请求调度方式,以用于在主进程的I/O请求队列中确定一条被调度的I/O请求之前,首先确认当前的调度方式,即需要根据调度方式确定被调度的I/O请求。
其中,所述I/O请求调度方式包括先进先出调度方式与优先级调度的方式,所述先进先出调度方式最为简单的调度方式,即先进入队列的I/O请求会先被调度;所述优先级调度的方式通过根据能容忍的延迟执行的时间大小、I/O请求读/写数据量的大小等确定I/O请求的优先级,按照优先级的顺序对I/O请求进行调度。
本发明的一实施例中,所述I/O请求调度方式,包括:所述I/O请求调度方式包括先进先出调度方式与优先级调度方式中的一种或多种。
进一步地,本发明实施例通过利用所述I/O请求调度方式查询所述主进程的第一待调度请求,以用于利用所述主进程确定好待调度的I/O请求,并控制其他从进程也对此I/O请求进行调度。
本发明的一实施例中,参阅图2所示,所述根据所述I/O请求调度方式,确定所述主进程的第一待调度请求,包括:
S201、提取所述主进程的I/O请求队列;
S202、在所述主进程的I/O请求队列中查找符合所述I/O请求调度方式的I/O请求,得到所述第一待调度请求。
进一步地,本发明实施例通过基于所述第一待调度请求,在所述主进程处确定调度信息,以用于将调度信息通知到其他从进程,控制其他从进程按照所述调度信息的内容对I/O请求进行调度,保证了其他从进程所调度的I/O请求保持一致。
其中,所述调度信息包括所述第一待调度请求的信息与所述I/O请求调度方式的信息,所述第一待调度请求的信息由被调度I/O请求的关键字表征,在应用程序发起一个I/O请求时,异步I/O系统会为该I/O请求在所有I/O进程间建立同一个关键字,以便于区别不同的I/O请求,在具体实现中,关键字可以是I/O请求的唯一编号,即可通过该编号区分不同的I/O请求,且同一个I/O请求的编号在I/O进程组中的所有进程中都相同,唯一编号的一个典型的实现方法是:在往I/O请求队列中添加一个请求时,把一个自增的计数器的计数值作为I/O请求的唯一编号;所述I/O请求调度方式的信息是指在从进程在接收到调度信息后,会更新该进程的任务调度方式,以供从进程在进行下一次预调度的时候使用。
本发明的一实施例中,参阅图3所示,所述基于所述第一待调度请求,在所述主进程处确定调度信息,包括:
S301、提取所述第一待调度请求的请求关键字与I/O请求调度方式;
S302、在所述主进程处组合所述请求关键字与所述I/O请求调度方式,得到所述调度信息。
S3、在各所述从进程处从所述主进程获取到所述调度信息,并在本从进程内确定所述调度信息对应的第二待调度请求。
本发明实施例通过在各所述从进程处从所述主进程获取到所述调度信息,以用于在接收到所述主进程发来的调度信息之后,所述从进程按照所述调度信息的内容同步调度同一个I/O请求。
本发明的一实施例中,所述在各所述从进程处从所述主进程获取到所述调度信息,包括:在所述主进程处确定第一待调度请求和调度信息后,向各所述从进程发起发送所述调度信息的进程间通信命令;各所述从进程在利用所述发送所述调度信息的进程间通信命令确定可以接收所述调度信息后,向所述主进程发起接收所述调度信息的进程间通信命令;利用所述接收所述调度信息的进程间通信命令获取到所述调度信息。
本发明的又一实施例中,所述在所述主进程处确定第一待调度请求和调度信息后,之后还包括:在所述主进程处查看本进程的I/O请求队列是否存在满足所述I/O请求调度方式的第一待调度请求I/O请求;当存在所述第一待调度请求I/O请求时,确定可以向各所述从进程发送所述调度信息;当不存在所述第一待调度请求I/O请求时,进行等待,在收到应用程序发起的新I/O命令后,返回上述在所述主进程处查看本进程的I/O请求队列是否存在满足所述I/O请求调度方式的第一待调度请求I/O请求的步骤。
其中,所述新I/O命令包括读写请求、改变调度方式的命令、等待I/O请求完成的命令等。
本发明的又一实施例中,所述各所述从进程在利用所述发送所述调度信息的进程间通信命令确定可以接收所述调度信息后,之前还包括:在各所述从进程处查看本从进程的I/O请求队列是否存在满足所述本从进程当前I/O请求调度方式的预调度I/O请求;当不存在所述预调度I/O请求时,进行等待,在收到应用程序发起的新I/O命令后,返回上述在各所述从进程处查看本从进程的I/O请求队列是否存在满足所述本从进程当前I/O请求调度方式的预调度I/O请求的步骤;当存在所述预调度I/O请求时,确定可以接收所述调度信息。
其中,所述预调度I/O请求用于减少处理器资源的占用的情况,避免带来明显的额外开销,各从进程在一轮I/O请求调度的一开始就启动接收主进程所发过来调度信息的操作(类似于MPI_bcast操作),而主进程只能在其队列中有能被调度的请求并确定被调度的请求后,才能向所有从进程发起广播,当主进程的当前队列中没有能被调度的请求时,从进程所发起的MPI_bcast操作会一直保持等待状态;在采用忙等的方式时,MPI_bcast操作的等待状态会一直占用处理器资源;即使是采用非忙等方式时,MPI_bcast操作的等待状态也会有一定开销,因为非忙等方式的实现通常是基于不断休眠和轮询的方法,会导致频繁的线程切换,也会占用处理器资源,当I/O进程使用的是额外计算资源时(即I/O进程不与应用程序的计算进程竞争使用处理器资源),这种简单实现方法可能不会带来额外影响,但是,当前已有基于I/O线程的技术,而I/O线程与应用程序的计算线程之间通常会竞争使用处理器资源,则这种简单实现方法会带来明显的额外开销。
本发明实施例中,所述第一待调度请求和所述第二待调度请求是同一请求,只是在不同进程内。
本发明的一实施例中,所述在本从进程内确定所述调度信息对应的第二待调度请求,包括:在所述从进程处提取并保存所述调度信息中的I/O请求调度方式;根据所述调度信息中的请求关键字,在所述从进程的I/O请求队列查找符合所述I/O请求调度方式的第二待调度I/O请求;当不存在所述第二待调度I/O请求时,进行等待,在收到应用程序发起的新I/O命令后,返回上述根据所述调度信息中的请求关键字,在所述从进程的I/O请求队列查找符合所述I/O请求调度方式的第二待调度I/O请求的步骤。
本发明的又一实施例中,所述进行等待,包括:所述进行等待的当前进程进入休眠状态,以释放处理器资源;在收到应用程序发起的新I/O命令时,结束所述休眠状态。
需要说明的是,处于休眠状态的I/O进程/线程会被应用程序的I/O事件唤醒;所述I/O事件包括发起I/O请求、改变调度方式等;从进程预调度不是真正的调度,不会确定被调度的请求,仍然只有主进程能确定被调度的请求。
可选地,所述进行等待的过程为当不存在对应I/O请求时,该从进程保持等待状态、直到应用程序把对应I/O请求插入到该从进程的I/O请求队列中,可能出现从进程的I/O请求队列中未找到调度信息中关键字所对应I/O请求的情况,主要是因为应用程序尚未把对应I/O请求放到队列中,应用程序的所有进程会按照相同顺序发起异步I/O请求,因此,从进程只需要等待应用程序把对应I/O请求插入到I/O请求队列中。
S4、在所述主进程中把所述第一待调度请求作为I/O请求调度结果,并在各所述从进程处把所述第二待调度请求作为I/O请求调度结果时,完成所述I/O进程组的异步并行I/O请求调度。
本发明的一实施例中,完成所述I/O进程组的异步并行I/O请求调度,包括:获取所述I/O进程组的主进程与从进程;在利用所述从进程向所述主进程发起进程握手时,确认所有I/O进程是否正确得到所述I/O请求调度结果;在所有I/O进程正确得到所述I/O请求调度结果时,所述I/O进程组的异步并行I/O请求调度为完成状态。
可选地,所述进程握手的过程是指主从进程间的握手机制,对于有些情况,从进程在完成一轮调度的工作后,需要向主进程发送确认信息及其他相关信息,握手机制可为主进程根据所有I/O进程的情况而自适应调整调度机制提供支撑。
可以看出,本发明实施例通过响应于请求调度命令,将所述I/O进程组中的一个进程划分为主进程,将所述I/O进程组中的剩余进程划分为从进程,以用于利用所述主进程控制其他从进程,保证其他从进程所调度的I/O请求与所述主进程所要求的一样,从而能确保异步并行I/O请求进程间的调度保持一致;其次,本发明实施例通过在所述主进程中确定所述请求调度命令的I/O请求调度方式,以用于在主进程的I/O请求队列中确定一条被调度的I/O请求之前,首先确认当前的调度方式,即需要根据调度方式确定被调度的I/O请求,进一步地,本发明实施例通过利用所述I/O请求调度方式查询所述主进程的第一待调度请求,以用于利用所述主进程确定好待调度的I/O请求,并控制其他从进程也对此I/O请求进行调度,进一步地,本发明实施例通过基于所述第一待调度请求,在所述主进程处确定调度信息,以用于将调度信息通知到其他从进程,控制其他从进程按照所述调度信息的内容对I/O请求进行调度,保证了其他从进程所调度的I/O请求保持一致;进一步地,本发明实施例通过在各所述从进程处从所述主进程获取到所述调度信息,以用于在接收到所述主进程发来的调度信息之后,所述从进程按照所述调度信息的内容同步调度同一个I/O请求。因此,本发明实施例提出的一种基于异步并行I/O请求的进程同步调度方法可以实现异步并行I/O请求在进程间一致的调度。
如图4所示,是本发明基于异步并行I/O请求的进程同步调度装置功能模块图。
本发明所述基于异步并行I/O请求的进程同步调度装置400可以安装于电子设备中。根据实现的功能,所述基于异步并行I/O请求的进程同步调度装置可以包括进程划分模块401、信息构建模块402、请求确定模块403以及调度完成模块404。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本发明实施例中,关于各模块/单元的功能如下:
所述进程划分模块401,用于响应于请求调度命令,获取I/O进程组,将所述I/O进程组中的一个进程划分为主进程,将所述I/O进程组中的剩余进程划分为从进程;
所述信息构建模块402,用于在所述主进程中确定所述请求调度命令的I/O请求调度方式,根据所述I/O请求调度方式,确定所述主进程的第一待调度请求,基于所述第一待调度请求,在所述主进程处确定调度信息;
所述请求确定模块403,用于在各所述从进程处从所述主进程获取到所述调度信息,并在本从进程内确定所述调度信息对应的第二待调度请求;
所述调度完成模块404,用于在所述主进程中把所述第一待调度请求作为I/O请求调度结果,在各所述从进程处把所述第二待调度请求作为I/O请求调度结果,完成所述I/O进程组的异步并行I/O请求调度。
详细地,本发明实施例中所述基于异步并行I/O请求的进程同步调度装置400中的所述各模块在使用时采用与上述的图1至图3中所述的基于异步并行I/O请求的进程同步调度方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
如图5所示,是本发明实现基于异步并行I/O请求的进程同步调度方法的电子设备的结构示意图。
所述电子设备可以包括处理器50、存储器51、通信总线52以及通信接口53,还可以包括存储在所述存储器51中并可在所述处理器50上运行的计算机程序,如基于异步并行I/O请求的进程同步调度程序。
其中,所述处理器50在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器50是所述电子设备的控制核心(ControlUnit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器51内的程序或者模块(例如执行基于异步并行I/O请求的进程同步调度程序等),以及调用存储在所述存储器51内的数据,以执行电子设备的各种功能和处理数据。
所述存储器51至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器51在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。所述存储器51在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(Smart Media Card, SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器51还可以既包括电子设备的内部存储单元也包括外部存储设备。所述存储器51不仅可以用于存储安装于电子设备的应用软件及各类数据,例如数据库配置化连接程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述通信总线52可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器51以及至少一个处理器50等之间的连接通信。
所述通信接口53用于上述电子设备5与其他设备之间的通信,包括网络接口和用户接口。可选地,所述网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。所述用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,所述用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。
图5仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图5示出的结构并不构成对所述电子设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器50逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,所述实施例仅为说明之用,在专利发明范围上并不受此结构的限制。
所述电子设备中的所述存储器51存储的数据库配置化连接程序是多个计算机程序的组合,在所述处理器50中运行时,可以实现:
响应于请求调度命令,获取I/O进程组,将所述I/O进程组中的一个进程划分为主进程,将所述I/O进程组中的剩余进程划分为从进程;
在所述主进程中确定所述请求调度命令的I/O请求调度方式,根据所述I/O请求调度方式,确定所述主进程的第一待调度请求,基于所述第一待调度请求,在所述主进程处确定调度信息;
在各所述从进程处从所述主进程获取到所述调度信息,并在本从进程内确定所述调度信息对应的第二待调度请求;
在所述主进程中把所述第一待调度请求作为I/O请求调度结果,并在各所述从进程处把所述第二待调度请求作为I/O请求调度结果时,完成所述I/O进程组的异步并行I/O请求调度。
具体地,所述处理器50对上述计算机程序的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述电子设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非易失性计算机可读取存储介质中。所述存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本发明还提供一种存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:
响应于请求调度命令,获取I/O进程组,将所述I/O进程组中的一个进程划分为主进程,将所述I/O进程组中的剩余进程划分为从进程;
在所述主进程中确定所述请求调度命令的I/O请求调度方式,根据所述I/O请求调度方式,确定所述主进程的第一待调度请求,基于所述第一待调度请求,在所述主进程处确定调度信息;
在各所述从进程处从所述主进程获取到所述调度信息,并在本从进程内确定所述调度信息对应的第二待调度请求;
在所述主进程中把所述第一待调度请求作为I/O请求调度结果,并在各所述从进程处把所述第二待调度请求作为I/O请求调度结果时,完成所述I/O进程组的异步并行I/O请求调度。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所发明的原理和新颖特点相一致的最宽的范围。
- 调度请求的发送方法、调度请求的处理方法及相关设备
- 一种发送调度请求及调度请求失败后的配置方法及装置
- USB接口请求调度方法、装置及设备
- 基于消息队列的请求处理方法、装置、设备及存储介质
- 异步I/O请求优先级的调度方法、装置、介质及控制设备
- 基于延迟SSD系统智能并行资源利用的请求调度方法及系统