一种任务调度方法、装置及电子设备和存储介质制造方法及图纸

技术编号:36510172 阅读:11 留言:0更新日期:2023-02-01 15:37
本申请公开了一种任务调度方法、装置及电子设备和存储介质,涉及计算机技术领域,该方法包括:创建目标任务,并为目标任务创建对应的目标进程;为目标任务选择空闲的目标CPU核心,并将目标进程部署于目标CPU核心中;利用目标CPU核心调用目标进程中的进程函数以执行目标任务;在执行目标任务的过程中,调用目标任务的任务切换函数;任务切换函数的参数包括在任务切换时的依赖对象和依赖对象对应的参数;在所有等待切换的任务中选择切换任务,利用目标CPU核心调用切换任务对应的进程函数以将目标CPU核心切换至切换任务执行。本申请在操作系统中为用户提供了一个任务切换函数,提高了任务切换效率,满足了SSD高并发的需求。满足了SSD高并发的需求。满足了SSD高并发的需求。

【技术实现步骤摘要】
一种任务调度方法、装置及电子设备和存储介质


[0001]本申请涉及计算机
,更具体地说,涉及一种任务调度方法、装置及一种电子设备和一种计算机可读存储介质。

技术介绍

[0002]固态硬盘(SSD,Solid State Disk)具有高性能,低功耗的优势,是一种用来存储用户数据的设备。固态硬盘由控制器,存储介质NAND(NAND flash memory,计算机闪存设备)等模块组成。控制器中运行Firmware(固件)进行资源的控制,对用户数据存储调度,维护NAND设备等操作。
[0003]固态硬盘提供了极高的并发度,如一秒钟提供1.6百万次读写。这些读写并不是顺序完成的,不是完成一个之后再处理下一个。如果是顺序执行每一个任务,就无法达到这么高的性能了。在固态硬盘内部,这些命令是并发执行的,即一个命令还未完成,另外一个命令也开始执行了。一般来说,在当前的技术下,可以高达几千到几万个读写操作同时在执行。
[0004]每一个命令都面临着命令报文解析,查找映射表,操作NAND,错误和异常处理,数据传输,返回完成状态等步骤。命令不同,操作的步骤也不一定完全一样。由于有几千到几万个命令同时在操作,SSD内部并没有几千到几万个运算单元,而是将运算资源通过调度进行使用的。
[0005]一般来说,如果需要同时操作多个任务,而计算资源是有限的,假如说有n个CPU,若干内存。那么需要这n个CPU进行任务调度,来服务于多个任务,也就是说,让这个CPU一会儿做任务1,一会儿做任务2。即分时复用这个CPU,或者说这一组资源,当这多个任务中的某一个任务达到完成状态,则释放出资源,又有可能增加服务于一个新的任务。
[0006]在目前的已有技术下,是没有固态硬盘的专用操作系统的。操作系统至少要提供任务调度,资源管理,系统调用的功能。一般的操作系统不是为了如此高的并发度设计的,如果用操作系统内的每个进程服务于一个任务,那么就会有成千上万个进程。操作系统虽然名义上可以有这么多进程,但是在这种场景下进程的切换调度效率非常低,无法满足SSD的需求。因此在SSD Firmware开发中,需要开发者自己考虑任务如何调度,如何切换的细节。因此带来了如下的问题:一种firmware的构架仅适用于一种硬件体系结构,由于firmware的开发过程已经充分考虑了硬件的特性,将这些特性编程进入了firmware内部结构,如果换了一种硬件结构,则这些特性会成为新的版本firmware的障碍,需要重新设计。另外,开发效率低,如果firmware的开发者不仅需要考虑firmware的功能逻辑,还要开发一部分操作系统的功能,如任务调度,资源管理等,那么对firmware的开发者的个人能力,以及工作量都带来负面影响。因此在没有操作系统的方案下,开发一个包含一部分操作系统功能的firmware,不是一个很好的方案。

技术实现思路

[0007]本申请的目的在于提供一种任务调度方法、装置及一种电子设备和一种计算机可读存储介质,提高了任务切换效率,满足了SSD高并发的需求。
[0008]为实现上述目的,本申请提供了一种任务调度方法,应用于固态硬盘的操作系统,所述方法包括:创建目标任务,并为所述目标任务创建对应的目标进程;为所述目标任务选择空闲的目标CPU核心,并将所述目标进程部署于所述目标CPU核心中;利用所述目标CPU核心调用所述目标进程中的进程函数,以执行所述目标任务;在执行所述目标任务的过程中,调用所述目标任务的任务切换函数;其中,所述任务切换函数的参数包括在任务切换时的依赖对象和所述依赖对象对应的参数;在所有等待切换的任务中选择切换任务,利用所述目标CPU核心调用所述切换任务对应的进程函数,以将所述目标CPU核心切换至所述切换任务执行。
[0009]其中,为所述目标任务创建对应的目标进程,包括:确定所述目标任务的任务参数;其中,所述任务参数至少包括所述目标任务对应的函数和所述函数对应的参数;基于所述目标任务的任务参数为所述目标任务创建对应的目标进程,并为所述目标进程分配资源;其中,所述资源包括任务标识、栈空间、寄存器地址。
[0010]其中,为所述目标进程分配资源,包括:为所述目标进程分配预设大小的栈空间。
[0011]其中,为所述目标进程分配资源,包括:将所有栈空间划分为多个不同大小的子空间;将大于所述目标进程需要的栈空间的大小的最小的子空间作为目标子空间分配至所述目标进程。
[0012]其中,所述利用所述目标CPU核心调用所述切换任务对应的进程函数,以将所述目标CPU核心切换至所述切换任务执行之后,还包括:检测所述目标任务对应的依赖对象是否完成,若完成,则将所述目标任务作为等待切换的任务。
[0013]其中,所述在所有等待切换的任务中选择切换任务,包括:根据所有所述等待切换的任务的属性确定所有所述等待切换的任务的第一优先级;选择所述第一优先级最高的等待切换的任务作为切换任务。
[0014]其中,所述属性按照所述第一优先级由高至低包括显示的任务切换、主机读取、主机写入、主机管理命令、后台读取、后台写入、后台管理命令、元数据管理、算法、统计信息中任一项或任几项的组合。
[0015]其中,所述选择所述第一优先级最高的等待切换的任务作为切换任务,包括:若存在多个所述第一优先级最高的等待切换的任务,则根据所有所述等待切换的任务在任务切换时的依赖对象确定所有所述等待切换的任务的第二优先级;在多个所述第一优先级最高的等待切换的任务中选择所述第二优先级最高的等
待切换的任务作为切换任务。
[0016]其中,所述依赖对象按照所述第二优先级由高至低包括完成消息、锁资源释放、NAND读写命令、DMA流向主机端的命令、DMA流向设备端的命令、锁资源获取命令、定时器、算法模块。
[0017]其中,还包括:若目标任务的定时器结束时间超过预设值,则将所述目标任务的第二优先级提高预设级别。
[0018]其中,所述在所有等待切换的任务中选择切换任务,包括:确定所有所述等待切换的任务完成对应的依赖条件的时间;选择所述时间最长的等待切换的任务作为切换任务。
[0019]其中,还包括:当所述目标任务需要与其他任务通信时,判断所述其他任务对应的进程是否部署于所述目标CPU核心中;若是,则采用共享内存变量的方式实现所述目标任务需要与所述其他任务的通信。
[0020]其中,所述判断所述其他任务对应的进程是否部署于所述目标CPU核心中,包括:若所述其他任务对应的进程部署于其他CPU核心中,则采用资源锁互斥的方式实现所述目标任务需要与所述其他任务的通信。
[0021]其中,还包括:当所述目标任务完成时,删除所述目标任务的上下文信息,并释放所述目标任务的栈空间。
[0022]其中,所述进程函数包括资源封装函数,所述资源封装函数包括选取输入/输出命令函数、数据传输函数、资源加锁函数、NAND操作函数、向主机发送完成消息函数中任一项或任几项的组合。
[0023]其中,所述进程函本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种任务调度方法,其特征在于,应用于固态硬盘的操作系统,所述方法包括:创建目标任务,并为所述目标任务创建对应的目标进程;为所述目标任务选择空闲的目标CPU核心,并将所述目标进程部署于所述目标CPU核心中;利用所述目标CPU核心调用所述目标进程中的进程函数,以执行所述目标任务;在执行所述目标任务的过程中,调用所述目标任务的任务切换函数;其中,所述任务切换函数的参数包括在任务切换时的依赖对象和所述依赖对象对应的参数;在所有等待切换的任务中选择切换任务,利用所述目标CPU核心调用所述切换任务对应的进程函数,以将所述目标CPU核心切换至所述切换任务执行。2.根据权利要求1所述任务调度方法,其特征在于,为所述目标任务创建对应的目标进程,包括:确定所述目标任务的任务参数;其中,所述任务参数至少包括所述目标任务对应的函数和所述函数对应的参数;基于所述目标任务的任务参数为所述目标任务创建对应的目标进程,并为所述目标进程分配资源;其中,所述资源包括任务标识、栈空间、寄存器地址。3.根据权利要求2所述任务调度方法,其特征在于,为所述目标进程分配资源,包括:为所述目标进程分配预设大小的栈空间。4.根据权利要求2所述任务调度方法,其特征在于,为所述目标进程分配资源,包括:将所有栈空间划分为多个不同大小的子空间;将大于所述目标进程需要的栈空间的大小的最小的子空间作为目标子空间分配至所述目标进程。5.根据权利要求1所述任务调度方法,其特征在于,所述利用所述目标CPU核心调用所述切换任务对应的进程函数,以将所述目标CPU核心切换至所述切换任务执行之后,还包括:检测所述目标任务对应的依赖对象是否完成,若完成,则将所述目标任务作为等待切换的任务。6.根据权利要求1所述任务调度方法,其特征在于,所述在所有等待切换的任务中选择切换任务,包括:根据所有所述等待切换的任务的属性确定所有所述等待切换的任务的第一优先级;选择所述第一优先级最高的等待切换的任务作为切换任务。7.根据权利要求6所述任务调度方法,其特征在于,所述属性按照所述第一优先级由高至低包括显示的任务切换、主机读取、主机写入、主机管理命令、后台读取、后台写入、后台管理命令、元数据管理、算法、统计信息中任一项或任几项的组合。8.根据权利要求6所述任务调度方法,其特征在于,所述选择所述第一优先级最高的等待切换的任务作为切换任务,包括:若存在多个所述第一优先级最高的等待切换的任务,则根据所有所述等待切换的任务在任务切换时的依赖对象确定所有所述等待切换的任务的第二优先级;在多个所述第一优先级最高的等待切换的任务中选择所述第二优先级最高的等待切换的任务作为切换任务。
9.根据权利要求8所述任务调度方法,其特征在于,所述依赖对象按照所述第二优先级由高至低包括完成消息、锁资源释放、NAND读写命令、DMA流向主机端的命令、DMA流向设备端的命令、锁资源获取命令、定时器、算法模块。10.根据权利要求8所述任务调度方法,其特征在于,还包括:若目标任务的定时器结束时间超...

【专利技术属性】
技术研发人员:秦文政钟戟
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

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

1