CN115098258B - 基于多核堆栈处理器的Forth多任务调度方法及装置 - Google Patents

基于多核堆栈处理器的Forth多任务调度方法及装置 Download PDF

Info

Publication number
CN115098258B
CN115098258B CN202210718488.6A CN202210718488A CN115098258B CN 115098258 B CN115098258 B CN 115098258B CN 202210718488 A CN202210718488 A CN 202210718488A CN 115098258 B CN115098258 B CN 115098258B
Authority
CN
China
Prior art keywords
task
forth
scheduling
core
queue
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.)
Active
Application number
CN202210718488.6A
Other languages
English (en)
Other versions
CN115098258A (zh
Inventor
代红兵
刘自昂
周永录
刘宏杰
刘欢庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yunnan University YNU
Original Assignee
Yunnan University YNU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yunnan University YNU filed Critical Yunnan University YNU
Priority to CN202210718488.6A priority Critical patent/CN115098258B/zh
Publication of CN115098258A publication Critical patent/CN115098258A/zh
Application granted granted Critical
Publication of CN115098258B publication Critical patent/CN115098258B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

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

本发明提供一种基于多核堆栈处理器的Forth多任务调度方法及装置,Forth多任务调度方法包括Forth任务初始化步骤、Forth任务调度步骤、多核调度步骤;Forth多任务调度装置包括Forth任务初始化模块、Forth任务调度模块、多核调度模块。在Forth领域中,目前单核堆栈处理器以及片上多堆栈处理机相对应的多任务Forth系统均不适合运行在多核堆栈处理器硬件平台上,缺乏成熟的面向多核堆栈处理器的多任务调度机制以及多任务Forth系统设计方案。本发明提供的基于多核堆栈处理器的Forth多任务调度方法是一种适合于多核堆栈处理器硬件平台的多任务调度方法,该方法可以提高硬件资源利用率,降低能源消耗。

Description

基于多核堆栈处理器的Forth多任务调度方法及装置
技术领域
本发明涉及多任务Forth系统任务调度领域,尤其涉及一种基于多核堆栈处理器的Forth多任务调度方法及装置。
背景技术
目前Forth芯片以单核堆栈处理器、多核堆栈处理器和片上多处理机的方式存在,运行在单核堆栈处理器上的单任务Forth系统和运行在片上多处理机上的多任务Forth系统均已有成熟的设计方案,但是面向单核堆栈处理器和多核堆栈处理器的多任务Forth系统目前还处于探索阶段,特别是多核堆栈处理器还没有多任务Forth系统可以在对应硬件平台上运行。片上多处理机的多任务Forth系统由于片上多处理机的特性,使得一个处理机在一个Forth任务没有执行完之前不能执行其他的Forth任务,这种多任务机制适配在多核堆栈处理器上会限制Forth任务的并发数,并对处理器资源造成浪费。
发明内容
为解决上述相关技术问题,本发明提供一种基于多核堆栈处理器的Forth多任务调度方法及装置。
本发明第一个方面提供一种基于多核堆栈处理器的Forth多任务调度方法,包括:Forth任务初始化步骤、Forth任务调度步骤、多核调度步骤,其中,
所述Forth任务初始化步骤在多任务Forth系统启动一个新Forth任务时执行;
所述Forth任务调度步骤在一个任务的时间片消耗完时执行;
所述多核调度步骤在有一个或多个处理器内核等待分配任务时由所述Forth任务调度步骤启动执行。
进一步地,所述Forth任务初始化步骤具体为:多任务Forth系统为新任务申请必要的运行空间,根据新Forth任务的信息和必要的运行空间地址初始化新Forth任务TCB,再将所述新Forth任务TCB插入到总任务队列的队尾和相同优先级的任务调度队列队尾。
进一步地,所述Forth任务TCB存储的内容包括:任务调度队列下一个任务地址、总任务队列下一个任务地址、任务优先级、任务名称地址、参数堆栈存储空间地址、参数堆栈指针、返回堆栈存储空间地址、返回堆栈指针、任务编号、任务状态、当前任务执行地址、任务自由空间地址、任务自由空间大小。
进一步地,所述任务优先级分为3级,1级优先级为最高优先级,3级优先级为最低优先级,所述多任务Forth系统中基本IO相关的任务优先级为1级,所述多任务Forth系统中的前台任务优先级为2级,所述多任务Forth系统中后台任务优先级为3级;所述任务调度队列有三个队列,分别对应1、2、3级优先级,用于存储多任务Forth系统中就绪态的任务;所述总任务队列仅有一个队列,用于存储所述多任务Forth系统中所有的任务。
进一步地,所述Forth任务调度步骤具体为:获得所述任务调度队列的访问权限,保存Forth任务现场,将被换下的Forth任务TCB插入到相同优先级的任务调度队列队尾,释放所述任务调度队列的访问权限,判断当前处理器内核对应的任务变量是否已有一个Forth任务,若是,则恢复Forth任务现场继续执行任务变量中的任务,若否,则转去执行所述多核调度步骤,执行完所述多核调度步骤后判断当前处理器内核对应的任务变量中是否已有一个Forth任务TCB,若是,则恢复Forth任务现场继续执行任务变量中的任务,若否,则立刻关闭该内核。
进一步地,所述Forth任务现场保存和恢复的内容包括程序计数器、参数堆栈指针、参数堆栈数据、返回堆栈指针、返回堆栈数据。
进一步地,所述处理器内核对应的任务变量是所述多任务Forth系统中的必要变量,所述多任务Forth系统为多核堆栈处理器的每个内核申请一个所述任务变量,用于存储Forth任务TCB的地址,所述任务变量按照处理器内核编号的顺序在所述多任务Forth系统中连续存放,若所述任务变量的值为0,则表示该任务变量对应的内核需要被分配一个任务,若所述任务变量的值不为0,则表示该任务变量对应的内核已有正在运行的任务,不需要分配新的任务。
进一步地,所述多核调度步骤具体为:从不为空的最高优先级任务调度队列中取出队首Forth任务TCB首地址,存入当前处理器内核对应的任务变量中,然后从第一个处理器内核开始查找值为0的任务变量,并为值为0的任务变量分配一个任务TCB,若所有任务调度队列均为空,则退出所述多核调度步骤,若任务调度队列不为空并且遇到处于关闭状态的处理器内核,则启动该内核并分配一个Forth任务。
本发明第二个方面提供一种基于多核堆栈处理器的Forth多任务调度装置,其特征在于,包括Forth任务初始化模块、Forth任务调度模块、多核调度模块,其中,
所述Forth任务初始化模块用于为Forth任务的运行申请必要的内存空间,初始化Forth任务TCB并将该TCB插入任务队列;
所述Forth任务调度模块为运行中的Forth任务保存和恢复现场,在处理器内核需要任务时启动多核调度模块,在所有任务调度队列都为空时关闭当前处理器内核;
所述多核调度模块为处理器每个需要被分配任务的内核分配一个任务,在所述多任务Forth系统中没有可分配任务时,直接结束所述多核调度模块。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定。
图1是本发明实施例一的Forth多任务调度方法;
图2是本发明实施例一的Forth任务初始化步骤的具体步骤;
图3是本发明实施例一的Forth任务调度步骤的具体步骤;
图4是本发明实施例一的多核调度步骤的具体步骤;
图5是本发明实施例二的Forth多任务调度装置。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合附图和实施例,对本发明作进一步的详细描述。特别指出的是,以下实施例仅用于说明本发明,但不对本发明的范围进行限定。同样的,以下实施例仅为本发明的部分实施例而非全部实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例1
本发明的实施例一提供一种基于多核堆栈处理器的Forth多任务调度方法,包括:Forth任务初始化步骤S101、Forth任务调度步骤S103、多核调度步骤S105,如图1所示。
Forth任务初始化步骤S101在多任务Forth系统启动一个新Forth任务时执行,具体执行步骤如图2所示,包括:
步骤S201:申请Forth任务TCB、参数堆栈和返回堆栈内存空间。
多任务Forth系统应当支持动态内存分配机制,能够更好的管理各个任务的运行内存空间,提高内存资源利用率。
所述Forth任务TCB存储的内容包括:任务调度队列下一个任务地址、总任务队列下一个任务地址、任务优先级、任务名称地址、参数堆栈存储空间地址、参数堆栈指针、返回堆栈存储空间地址、返回堆栈指针、任务编号、任务状态、当前任务执行地址、任务自由空间地址、任务自由空间大小,TCB中每项所占用的存储空间大小应当与Forth系统的字大小相同,如表1所示。
表1所示为本实施例中TCB的存储项和每项所占用的大小。
表1 Forth任务TCB项目表
项目名称 大小(单位:字)
任务调度队列下一个任务地址 1
总任务队列下一个任务地址 1
任务优先级 1
任务名称地址 1
参数堆栈存储空间地址 1
参数堆栈指针 1
返回堆栈存储空间地址 1
返回堆栈指针 1
任务编号 1
任务状态 1
当前任务执行地址 1
任务自由空间地址 1
任务自由空间大小 1
申请的参数堆栈和返回堆栈的内存空间大小应当不小于多核堆栈处理器内核内的硬件参数堆栈和硬件返回堆栈的大小。
步骤S203:Forth任务TCB初始化。对申请到Forth任务TCB进行初始化,初始化内容包括任务优先级、任务名称地址、参数堆栈存储空间地址、参数堆栈指针、返回堆栈存储空间地址、返回堆栈指针、任务编号、任务状态、当前任务执行地址、任务自由空间地址、任务自由空间大小。
具体的,所述参数堆栈指针和所述返回堆栈指针初始值都为0;所述任务编号由Forth系统自动分配;所述任务状态初始为就绪态;所述当前任务执行地址初始地址为该Forth任务的第一条指令的地址;所述任务自由空间地址和所述任务自由空间大小是存储任务在执行的过程中动态申请的内存中间的地址和大小,它们的初始值为0。
步骤S205:将Forth任务TCB插入到总任务队列的队尾。将初始化后的Forth任务TCB插入到总任务队列的队尾,并将该队列原本最后一个TCB的总任务队列下一个任务的地址项的内容置为当前步骤的Forth任务TCB中总任务队列下一个任务地址项所在内存空间的地址,即总任务队列使用链表进行组织。
值得说明的是,总任务队列是Forth系统中用来存储Forth系统中所有任务的一个队列,在总任务队列中可以找到所有任务。
步骤S207:将Forth任务TCB插入到对应优先级任务调度队列的队尾。根据Forth任务TCB的优先级将初始化后的Forth任务TCB插入到对应优先级的任务调度队列的队尾,并将该队列原本最后一个TCB的任务调度队列下一个任务的地址项的内容置为当前步骤的Forth任务TCB中任务调度队列下一个任务地址项所在内存空间的地址,即所有的任务调度队列使用链表进行组织。
值得说明的是,任务调度队列是Forth系统中用来存储就绪态任务的一个队列,其他状态的任务不在任务调度队列之中。
多核堆栈处理器内核在时间片完时触发任务切换中断,执行Forth任务调度步骤S103,具体执行步骤如图3所示,包括:
步骤S301:获得任务调度队列的访问权限。
所述任务调度队列是一种临界资源,在同一时刻可能有多个处理器内核读取和写入任务调度队列的数据,为保证任务调度队列内容的正确性,需要多核堆栈处理器提供访问临界资源的功能,若多核堆栈处理器没有类似的功能去保证任务调度队列的正确有序的访问,则后续步骤将不能保证任务切换的正确性和系统运行的稳定性。
步骤S303:保存Forth任务现场。
所述Forth任务现场包括:任务PC、参数堆栈指针、参数堆栈、返回堆栈指针、返回堆栈。
步骤S305:设置该Forth任务状态为就绪态。
步骤S307:将该Forth任务的TCB插入到对应优先级的任务调度队列的队尾。
步骤S308:释放任务调度队列的访问权限。
步骤S309:将当前处理器内核对应的任务变量置0。
每个所述多核堆栈处理器内核都在Forth系统中有一个任务变量所对应,这个任务变量表示对应的内核目前正在运行哪个任务,若任务变量的值为0,则表示任务变量对应的处理器内核需要被分配一个任务,反之,若任务变量中存储了Forth任务TCB的首地址,则表示任务变量对应的处理器内核正在运行一个任务,所有内核的任务变量按照内核编号的顺序在Forth系统中连续存放,每个任务变量占用一个字的存储空间。
步骤S311:判断所述处理器内核对应的任务变量是否为0,若是,则执行步骤S319,若否,则执行步骤S313。
步骤S313:恢复新Forth任务现场。
所述Forth任务现场包括:任务PC、参数堆栈指针、参数堆栈、返回堆栈指针、返回堆栈。
步骤S315:根据新Forth任务优先级设置时间片或程序块大小。
步骤S317:设置新Forth任务状态为执行态,中断返回继续执行Forth任务。
步骤S319:判断是否可以启动多核调度步骤,若是,转去执行多核调度步骤S321。
值得说明的是,所述多核调度步骤启动需要访问权限,而所述多核调度步骤访问权限是一种临界资源,在同一时刻可能有多个处理器内核运行多核调度步骤,为保证多核调度和任务调度的正确性,需要多核堆栈处理器提供访问临界资源的功能,若多核堆栈处理器没有类似的功能去保证多核调度和任务调度的正确有序的访问,则后续步骤将不能保证任务切换的正确性和系统运行的稳定性。
步骤S321:执行多核调度步骤。
值得说明的是,多核调度步骤S321与多核调度步骤S105是同一个步骤。
步骤S323:判断所述处理器内核对应的任务变量是否为0,若是,则执行步骤S325,若否,则执行步骤S313。
步骤S325:关闭当前处理器内核。若多核堆栈处理器不支持关闭内核操作,此步骤可以替换为运行空转指令。
多核调度步骤S105在有一个或多个处理器内核等待分配任务且多核调度步骤没有被任何一个内核执行时,由Forth任务调度步骤S103启动多核调度步骤S105。多核调度步骤S105中访问任务调度队列同样需要申请访问权限,因此执行多核调度步骤S105至少需要两种临界资源的访问权限:多核调度步骤访问权限和任务调度队列访问权限。因为任务调度队列的访问只在任务切换时访问,所以可以将多核调度步骤的访问权限与任务队列的访问权限设置为一个访问权限,本实施例一将以一个访问权限的方式去说明多核调度步骤S105。
多核调度步骤S105的具体步骤如图4所示,包括:
步骤S401:判断1级优先级任务调度队列是否为空,若是,则执行步骤S403,若否,则执行步骤S409。
步骤S403:判断2级优先级任务调度队列是否为空,若是,则执行步骤S405,若否,则执行步骤S409。
步骤S405:判断3级优先级任务调度队列是否为空,若是,则执行步骤S407,若否,则执行步骤S409。
步骤S407:退出多核调度步骤,返回Forth任务调度模块。此时Forth系统中已没有就绪任务可以被执行,退出多核调度步骤可以将当前处理器内核关闭,节省能源。
所述Forth任务调度模块是所述Forth任务调度步骤S103的实例。
步骤S409:从该优先级任务调度队列取出队首Forth任务TCB首地址,存入当前处理器内核对应的任务变量中。
步骤S411:获得第一个处理器内核对应的任务变量的值,执行步骤S415。
步骤S413:获得下一个处理器内核对应的任务变量的值。
步骤S415:判断该任务变量的值是否为0,若是,则执行步骤S405,若否,则执行步骤S425。
步骤S417:判断1级优先级任务调度队列是否为空,若是,则执行步骤S419,若否,则执行步骤S423。
步骤S419:判断2级优先级任务调度队列是否为空,若是,则执行步骤S421,若否,则执行步骤S423。
步骤S421:判断3级优先级任务调度队列是否为空,若是,则执行步骤S407,若否,则执行步骤S423。
步骤S423:从该优先级任务调度队列中取出队首任务TCB,并将该TCB的地址存入该处理器内核对应的任务变量中,若该处理器内核处于关闭状态则启动该内核。
处理器内核没有运行时,步骤S423可以使该内核启动,若多核堆栈处理器不支持内核停止运行则可以省略步骤S423中启动内核的步骤。
步骤S425:判断下一个处理器内核对应的任务变量是否存在,若存在,则执行步骤S413,若不存在,则执行步骤S407。
本发明的实施例二提供一种基于多核堆栈处理器的Forth多任务调度装置,包括:Forth任务初始化模块S501、Forth任务调度模块S503、多核调度模块S505。
所述Forth任务初始化模块S501是本发明实施例一的Forth任务初始化步骤S101的一种实现,主要用于多任务Forth系统运行新Forth任务时,为新任务的运行申请必要的内存空间,初始化Forth任务TCB并将该Forth任务TCB插入总任务队列的队尾和相同优先级的任务调度队列队尾。
所述Forth任务调度模块S503是本发明实施例一的Forth任务调度步骤S103的一种实现,主要用于获得任务调度队列的访问权限,保存Forth任务现场,将被换下的Forth任务TCB插入到相同优先级的任务调度队列队尾,释放所述任务调度队列的访问权限,判断当前处理器内核对应的任务变量是否已有一个Forth任务,若是,则恢复Forth任务现场继续执行任务变量中的任务,若否,则转去执行所述多核调度模块S505,执行完所述多核调度模块S505后判断当前处理器内核对应的任务变量中是否已有一个Forth任务TCB,若是,则恢复Forth任务现场继续执行任务变量中的任务,若否,则立刻关闭该内核。
所述多核调度模块S505是是本发明实施例一的多核调度步骤S105的一种实现,主要用于从不为空的最高优先级任务调度队列中取出队首Forth任务TCB首地址,存入当前处理器内核对应的任务变量中,然后从第一个处理器内核开始查找值为0的任务变量,并为值为0的任务变量分配一个任务TCB,若所有任务调度队列均为空,则退出所述多核调度模块S505,若任务调度队列不为空并且遇到处于关闭状态的处理器内核,则启动该内核并分配一个Forth任务。
进一步地,该装置还包括临界资源申请模块,用于多任务Forth系统可以正确访问系统中各类临界资源,例如任务调度队列等,本模块在多任务Forth系统中为每种临界资源都创建一个变量,该变量用于存储同种临界资源当前可用数量,访问这些临界资源的变量时需要申请临界资源访问权,当一个任务成功申请到一个临界资源时,该种临界资源对应变量的值减1,当一个任务释放一个临界资源时,该种临界资源对应变量的值加1。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上两种实施例的仅为本发明认为的一种较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (7)

1.一种基于多核堆栈处理器的Forth多任务调度方法,其特征在于,包括Forth任务初始化步骤、Forth任务调度步骤、多核调度步骤,其中,
所述Forth任务初始化步骤在多任务Forth系统启动一个新Forth任务时执行;
所述Forth任务调度步骤在一个任务的时间片消耗完时执行;
所述多核调度步骤在有一个或多个处理器内核等待分配任务时由所述Forth任务调度步骤启动执行;
所述Forth任务初始化步骤具体为:多任务Forth系统为新任务申请必要的运行空间,根据新Forth任务的信息和必要的运行空间地址初始化新Forth任务TCB,再将所述新Forth任务TCB插入到总任务队列的队尾和相同优先级的任务调度队列队尾;
所述Forth任务调度步骤具体为:获得所述任务调度队列的访问权限,保存Forth任务现场,将被换下的Forth任务TCB插入到相同优先级的任务调度队列队尾,释放所述任务调度队列的访问权限,判断当前处理器内核对应的任务变量是否已有一个Forth任务TCB,若是,则恢复Forth任务现场继续执行任务变量中的任务;
所述多核调度步骤具体为:按优先级从高到低的方式查询任务调度队列,从首个不为空的任务调度队列中取出队首Forth任务TCB首地址,存入当前处理器内核对应的任务变量中,然后按照该步骤为每个值为0的任务变量对应的处理器内核分配一个Forth任务,在整个Forth任务分配过程中,若遇到所有任务调度队列均为空的情况时,则退出所述多核调度步骤,若遇到某个处理器内核处于关闭状态且任务调度队列不为空的情况时,则启动该内核并分配一个Forth任务。
2.根据权利要求1所述的Forth多任务调度方法,其特征在于,所述Forth任务TCB存储的内容包括:任务调度队列下一个任务地址、总任务队列下一个任务地址、任务优先级、任务名称地址、参数堆栈存储空间地址、参数堆栈指针、返回堆栈存储空间地址、返回堆栈指针、任务编号、任务状态、当前任务执行地址、任务自由空间地址、任务自由空间大小。
3.根据权利要求2所述的Forth多任务调度方法,其特征在于,所述任务优先级分为3级,1级优先级为最高优先级,3级优先级为最低优先级,所述多任务Forth系统中基本IO相关的任务优先级为1级,所述多任务Forth系统中的前台任务优先级为2级,所述多任务Forth系统中后台任务优先级为3级;所述任务调度队列有三个队列,分别对应1、2、3级优先级,用于存储多任务Forth系统中就绪态的任务;所述总任务队列仅有一个队列,用于存储所述多任务Forth系统中的所有任务。
4.根据权利要求1所述的Forth多任务调度方法,其特征在于,若当前处理器内核对应的任务变量没有Forth任务TCB,则转去执行所述多核调度步骤,执行完所述多核调度步骤后判断当前处理器内核对应的任务变量中是否已有一个Forth任务TCB,若是,则恢复Forth任务现场继续执行任务变量中的任务,若否,则立刻关闭该内核。
5.根据权利要求4所述的Forth多任务调度方法,其特征在于,所述Forth任务现场保存和恢复的内容包括程序计数器、参数堆栈指针、参数堆栈数据、返回堆栈指针、返回堆栈数据。
6.根据权利要求5所述的Forth多任务调度方法,其特征在于,所述处理器内核对应的任务变量是所述多任务Forth系统中的必要变量,所述多任务Forth系统为多核堆栈处理器的每个内核申请一个所述任务变量,用于存储Forth任务TCB的地址,所述任务变量按照处理器内核编号的顺序在所述多任务Forth系统中连续存放,若所述任务变量的值为0,则表示该任务变量对应的内核需要被分配一个任务,若所述任务变量的值不为0,则表示该任务变量对应的内核已有正在运行的任务,不需要分配新的任务。
7.一种基于多核堆栈处理器的Forth多任务调度装置,其特征在于,包括Forth任务初始化模块、Forth任务调度模块、多核调度模块,其中,
所述Forth任务初始化模块用于为Forth任务的运行申请必要的内存空间,初始化Forth任务TCB并将该TCB插入任务队列;
所述Forth任务调度模块为运行中的Forth任务保存和恢复现场,在处理器内核需要任务时启动多核调度模块,在所有任务调度队列都为空时关闭当前处理器内核;
所述多核调度模块为处理器每个需要被分配任务的内核分配一个任务,在所述多任务Forth系统中没有可分配任务时,直接结束所述多核调度模块;
所述Forth任务初始化模块具体用于多任务Forth系统为新任务申请必要的运行空间,根据新Forth任务的信息和必要的运行空间地址初始化新Forth任务TCB,再将所述新Forth任务TCB插入到总任务队列的队尾和相同优先级的任务调度队列队尾;
所述Forth任务调度模块具体用于获得所述任务调度队列的访问权限,保存Forth任务现场,将被换下的Forth任务TCB插入到相同优先级的任务调度队列队尾,释放所述任务调度队列的访问权限,判断当前处理器内核对应的任务变量是否已有一个Forth任务TCB,若是,则恢复Forth任务现场继续执行任务变量中的任务;
所述多核调度模块具体用于按优先级从高到低的方式查询任务调度队列,从首个不为空的任务调度队列中取出队首Forth任务TCB首地址,存入当前处理器内核对应的任务变量中,然后按照所述多核调度模块为每个值为0的任务变量对应的处理器内核分配一个Forth任务,在整个Forth任务分配过程中,若遇到所有任务调度队列均为空的情况时,则退出所述多核调度模块,若遇到某个处理器内核处于关闭状态且任务调度队列不为空的情况时,则启动该内核并分配一个Forth任务。
CN202210718488.6A 2022-06-23 2022-06-23 基于多核堆栈处理器的Forth多任务调度方法及装置 Active CN115098258B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210718488.6A CN115098258B (zh) 2022-06-23 2022-06-23 基于多核堆栈处理器的Forth多任务调度方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210718488.6A CN115098258B (zh) 2022-06-23 2022-06-23 基于多核堆栈处理器的Forth多任务调度方法及装置

Publications (2)

Publication Number Publication Date
CN115098258A CN115098258A (zh) 2022-09-23
CN115098258B true CN115098258B (zh) 2022-12-23

Family

ID=83293134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210718488.6A Active CN115098258B (zh) 2022-06-23 2022-06-23 基于多核堆栈处理器的Forth多任务调度方法及装置

Country Status (1)

Country Link
CN (1) CN115098258B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452399A (zh) * 2007-12-05 2009-06-10 中兴通讯股份有限公司 任务二级调度模块及方法
CN107391251A (zh) * 2017-09-11 2017-11-24 云南大学 基于Forth虚拟机的任务调度方法及装置
CN107463442A (zh) * 2017-07-12 2017-12-12 北京控制工程研究所 一种星载多核SoC任务级负载均衡并行调度方法
CN107566491A (zh) * 2017-09-05 2018-01-09 云南大学 一种嵌入式Forth无线终端控制台方法及接口
CN112053066A (zh) * 2020-09-09 2020-12-08 上海有个机器人有限公司 一种机器人的多任务调度方法、装置和机器人
CN112416546A (zh) * 2020-11-10 2021-02-26 光华临港工程应用技术研发(上海)有限公司 多任务调度方法、电子装置和计算机存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101452399A (zh) * 2007-12-05 2009-06-10 中兴通讯股份有限公司 任务二级调度模块及方法
CN107463442A (zh) * 2017-07-12 2017-12-12 北京控制工程研究所 一种星载多核SoC任务级负载均衡并行调度方法
CN107566491A (zh) * 2017-09-05 2018-01-09 云南大学 一种嵌入式Forth无线终端控制台方法及接口
CN107391251A (zh) * 2017-09-11 2017-11-24 云南大学 基于Forth虚拟机的任务调度方法及装置
CN112053066A (zh) * 2020-09-09 2020-12-08 上海有个机器人有限公司 一种机器人的多任务调度方法、装置和机器人
CN112416546A (zh) * 2020-11-10 2021-02-26 光华临港工程应用技术研发(上海)有限公司 多任务调度方法、电子装置和计算机存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Forth虚拟机的嵌入式实时操作系统多任务管理研究;梅浩;《中国优秀硕士学位论文全文数据库信息科技辑》;20200315;第2.5-3章节 *

Also Published As

Publication number Publication date
CN115098258A (zh) 2022-09-23

Similar Documents

Publication Publication Date Title
US5159678A (en) Method for efficient non-virtual main memory management
US7313797B2 (en) Uniprocessor operating system design facilitating fast context switching
US4730249A (en) Method to operate on large segments of data in a virtual memory data processing system
US4718008A (en) Method to control paging subsystem processing in a virtual memory data processing system during execution of critical code sections
EP3121731A1 (en) Memory management method and device
US5392415A (en) System for grouping non-contiguous pages belonging to a storage object for page out
US7587566B2 (en) Realtime memory management via locking realtime threads and related data structures
CN102667714B (zh) 支持访问由操作系统环境外的资源提供的功能的方法和系统
CN111897651B (zh) 一种基于标签的内存系统资源管理方法
US8930732B2 (en) Fast speed computer system power-on and power-off method
CN112612623B (zh) 一种共享内存管理的方法和设备
WO2016138785A1 (zh) 一种运行进程的方法及装置
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
EP1760580A1 (en) Processing operation information transfer control system and method
EP0403124A2 (en) Overlay swapping
US8010963B2 (en) Method, apparatus and program storage device for providing light weight system calls to improve user mode performance
Bétourné et al. Process management and resource sharing in the multiaccess system in ESOPE
CN115098258B (zh) 基于多核堆栈处理器的Forth多任务调度方法及装置
Collins Jr Experience in automatic storage allocation
Diwase et al. Survey report on memory allocation strategies for real time operating system in context with embedded devices
CN109783145B (zh) 一种创建基于多映像的多功能嵌入式系统的方法
CN108845969B (zh) 适用于不完全对称多处理微控制器的操作控制方法及操作系统
EP0043391A1 (en) Virtual memory terminal
CN116107772A (zh) 多线程的数据处理方法、装置、处理器以及电子设备
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant