CN103793255B - 可配置的多主模式多os内核实时操作系统架构的启动方法 - Google Patents

可配置的多主模式多os内核实时操作系统架构的启动方法 Download PDF

Info

Publication number
CN103793255B
CN103793255B CN201410069096.7A CN201410069096A CN103793255B CN 103793255 B CN103793255 B CN 103793255B CN 201410069096 A CN201410069096 A CN 201410069096A CN 103793255 B CN103793255 B CN 103793255B
Authority
CN
China
Prior art keywords
kernel
many
core
address
operating system
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
CN201410069096.7A
Other languages
English (en)
Other versions
CN103793255A (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.)
Chongqing University of Post and Telecommunications
Original Assignee
Chongqing University of Post and Telecommunications
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 Chongqing University of Post and Telecommunications filed Critical Chongqing University of Post and Telecommunications
Priority to CN201410069096.7A priority Critical patent/CN103793255B/zh
Publication of CN103793255A publication Critical patent/CN103793255A/zh
Application granted granted Critical
Publication of CN103793255B publication Critical patent/CN103793255B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种可配置的多主模式多OS内核实时操作系统架构与启动方法,属于嵌入式系统多核实时操作系统技术领域。在所述可以配置的基于多主模式可配置多OS内核的实时操作系统架构中,每个内核都能够作为主核实时调度任务和管理资源,用户可以根据系统资源和性能需要,自由配置操作系统内核个数以及各个处理器核使用的OS内核,指定OS内核存放的地址。在访问内核服务的时候,每个内核访问自己的部分,减少因为访问一个内核的冲突及等待问题,这样,大大提高了程序的读取效率;同时,用户可以根据内存的大小和实际需要自行配置OS内核的个数及处理器核与OS内核的关系。

Description

可配置的多主模式多 OS 内核实时操作系统架构的启动方法
技术领域
本发明属于嵌入式系统多核实时操作系统技术领域,涉及一种可配置的多主模式多OS内核实时操作系统架构与启动方法。
背景技术
随着多核处理器的大量应用,作为基础软件多核操作系统也得到广泛研发和应用。在实时嵌入式系统领域,支持多核的实时操作系统也越来越受到广泛关注,企业和研究单位投入了大量精力进行研发。目前主要以国外的Vxworks,QNX等为主。Vxwork操作系统支持对称和非对称多核处理器,QNX也支持对称多核处理器。国内也有相关的研究成果,如浙江大学在2008年设计实现了一个支持异构多核的嵌入式实时操作系统SmartOSEK-M,实现了多核之间的同步与通信,并设计了一种多核操作系统之上的编程模型。电子科技大学在2009年实现了在四核处理器B11MPCore上的操作系统aCoral,并且通过改进的位图映射优先级调度算法,将优先级队列查找复杂度控制在O(1),以保证多核系统的实时性能。复旦大学联合西安交通大学以及麻省理工学院和微软亚洲研究院在2008年共同开发出多核操作系统Corey,Corey的设计思想是“应用程序控制数据的共享”,即通过应用程序对内核间共享资源的控制,减少多核之间不必要的资源传递和更新,以达到更高效利用多个内核的目的。
当前,实时多核操作系统架构按照OS内核个数来分主要包括两类。第一类是处理器采用单OS内核管理多核,如Vxworks、QNX、aCoral,这类操作系统在处理器核不多的情况下能较好地管理各个处理器及共享资源。但是随着处理器核的增加,一个内核的访问瓶颈问题就凸显出来。第二种,每个处理器拥有一个OS,任务被静态分配到这些内核上调度运行,内核间可以实现通信等机制,如SmartOSEK-M。而任务不能被动态的调度,这种结构的多核操作系统负载均衡差,共享资源管理效率低。
发明内容
有鉴于此,本发明的目的在于提供一种可配置的多主模式多OS内核实时操作系统架构与启动方法,该基于多主模式的多OS内核的实时操作系统架构中可以存在多个OS内核,每个内核都可以作为主核管理共享资源,如任务、驱动、中断服务例程、事件等;并且在访问内核服务的时候,每个内核访问自己的部分,不会造成因为访问一个内核的冲突及等待问题,这样,大大提高了程序的读取效率;同时,用户可以根据内存的大小和实际需要配置OS内核的个数及处理器核与OS内核的关系。
为达到上述目的,本发明提供如下技术方案:
一种可配置的多主模式多OS内核实时操作系统架构与启动方法,包括可以配置的基于多主模式可配置多OS内核的实时操作系统架构,在该架构中,每个内核都能够作为主核实时调度任务和管理资源;用户根据系统资源和性能需要,自由配置操作系统内核个数以及各个处理器核使用的OS内核,指定OS内核存放的地址。该架构解决了单一OS内核的访问瓶颈问题和多OS内核动态调度与全局资源管理局限问题。
进一步,采用了一种面向多OS内核的操作系统内核与处理器核相关的配置信息表,该信息表包含了处理器核使用的OS内核编号及存储信息,便于各个内核与全局代码的相互访问及系统启动时内核的拷贝,通过该配置表的设计,建立了多OS内核与全局代码相互访问跳转地址计算和系统启动时OS内核拷贝地址联系。
进一步,采用了一种基于配置信息表的本地OS内核与全局代码相互访问C程序实现方法,包括两个方面:本地内核跳转到全局代码和全局代码调用本地内核系统服务;通过操作系统移植部分添加代码从而实现本地内核跳转到相应的全局代码中;通过偏移地址计算方法和地址传递C程序实现全局代码对本地内核的访问。通过该方法可以很方便地实现本地OS内核系统服务的调用。该方法解决了全局代码与本地OS内核相互访问的地址计算问题和实时多核处理器运行时动态地址重定位问题。
进一步,根据多主多OS内核架构,用户可以根据需要对操作系统内核个数和存放地址进行配置,在系统启动时只需要根据配置信息表就可以实现多内核的启动。通过这种方法,可以在不重新修改操作系统内核的情况下实现操作系统内核个数的设置,快速实现操作系统内核的扩展。
本发明的有益效果在于:本发明提供了一种可配置的多主模式多OS内核实时操作系统架构与启动方法,该系统架构中可以存在多个OS内核,每个内核都可以作为主核管理共享资源,如任务、驱动、中断服务例程等;在访问内核服务的时候,每个内核访问自己的部分,不会造成因为访问一个内核的冲突及等待问题,这样,大大提高了程序的读取效率;同时,用户可以根据内存的大小和实际需要自行配置OS内核的个数及处理器核与OS内核的关系。
附图说明
为了使本发明的目的、技术方案和有益效果更加清楚,本发明提供如下附图进行说明:
图1为多主模式多OS内核架构组成示意图;
图2为多主模式多OS内核访问示意图;
图3为代码及数据模块编译后存储空间分配示意图;
图4为内核与全局代码之间的跳转示意图;
图5为多OS内核实时操作系统启动流程。
具体实施方式
为了解决多核实时系统中单一操作系统内核并行访问的互斥和延迟问题,本发明提出了一种可配置的多主多OS内核的操作系统架构。在多主多OS内核架构中,提供多个OS内核共同管理共享资源,用户可以根据需要配置OS内核个数及与处理器核的对应关系,每个OS内核是原始OS内核的副本。由于不同OS内核存放的位置发生了改变,各OS内核服务程序的物理基地址也相应的发生了改变,造成根据单一内核编译的系统代码不能正常进行本地内核服务程序与全局代码之间的相互跳转。针对这一问题提出了一种基于系统配置表的内核与全局代码相互访问的方法以及内核启动方法。
主要包括四个方面:
(1)基于多主模式可配置多OS内核实时操作系统架构
该架构中,每个内核都可以作为主核实时调度任务和管理资源。同时该架构提供一种配置接口,用户可以根据系统资源和性能需要,自由配置操作系统内核个数以及各个处理器核使用的OS内核,指定OS内核存放的地址。该架构解决了单一OS内核的访问瓶颈问题和多OS内核动态调度与全局资源管理局限问题。
(2)多核实时操作系统配置信息表
针对不同OS内核存放地址不同造成的全局代码与OS内核之间访问地址不统一问题,提供了一种操作系统内核与处理器核相关的配置信息表。该信息表包含了处理器核使用的OS内核编号及存储信息,便于各个内核与全局代码的相互访问及系统启动时内核的拷贝。通过该配置表的设计,解决了多OS内系统核服务访问和系统启动时OS内核地址计算依据问题,通过配置信息表为操作系统设计与系统启动建立了联系。
(3)基于配置信息表的本地OS内核与全局代码相互访问C程序实现方法
本发明在多OS内核操作系统架构基础上,提出了一种全局-本地API接口映射方法,将各个本地内核的系统服务通过地址重映射进行全局封装,向上层应用提供一个统一访问不同OS内核服务的接口。主要包括两个方面:本地内核跳转到全局代码和全局代码调用本地内核系统服务。一方面,在上述OS架构基础上,根据全局OS配置表中的基地址,设计了一个本地内核跳转到全局代码偏移地址的计算方法,只需要在操作系统移植部分添加相应的计算偏移地址代码即可实现本地内核跳转到相应的全局代码中。在另一方面,根据配置表中的各本地OS内核基地址,设计了全局代码在访问本地内核时的偏移地址计算方法和地址传递的C程 序实现方法。通过该方法可以很方便地实现对本地OS内核系统服务的调用。该方法解决了全局代码与本地OS内核相互访问的地址计算问题。
(4)基于配置表的多OS内核启动方法
根据多主多OS内核架构,用户可以根据需要对操作系统内核进行配置,在系统启动时只需要根据配置信息表就可以实现多内核的启动。通过这种方法,可以在不重新修改操作系统内核的情况下实现操作系统内核个数的设置,快速实现操作系统内核的扩展。提高了多核操作系统使用时方便性。
下面将结合附图,对本发明的优选实施例进行详细的描述。
多主多OS内核操作系统架构:
多主内核有两种结构,一种是由一个OS内核管理多个处理器核,每个处理器核都可以作为主核管理系统资源;另外一种结构就是,由多个OS内核管理多核处理器。在单OS内核中,不同处理器核同时访问内核的冲突解决方法主要是通过互斥或自旋锁来保证的,方法简单易于实现。但这种方法带来的问题是,如果不同处理器核访问内核较为频繁时,由于访问冲突的影响而使处理器等待的时间增加,这样会使系统运行速度降低,造成多核的效率降低。针对这种情况,本发明提出了一种基于多主模式的多OS内核的实时操作系统架构,如附图1所示。在这种架构中,可以存在多个OS内核来管理多核处理器。每个OS内核都可以作为主内核进行全局资源管理和应用任务的调度,处理器核在调用OS提供的系统服务时,访问属于自己的那个OS内核,减少与其他处理器核发生访问冲突,同时也减少了处理器核访问OS内核时的等待时间。
在多主模式实时操作系统架构中,存在多个操作系统调度器内核,每个内核在接收到触发调度事件时(如中断、通信、同步、互斥等操作,有可能激活任务就绪),都可以作为主核根据调度算法负责从就绪表中选择任务分配到其他处理器核抢占低优先级任务运行。在这种模式下,用户可以根据处理器内核个数和内存大小自主地配置内核个数,将系统服务和应用放在所配置的处理器核运行,如附图1所示。
在这种架构中,每个处理核运行相同的OS内核副本,用户可以根据需要指定一些应用运行到不同的内核上。每个内核都有自己的私有数据,他们用于统计本OS内核的本地数据,如任务统计、空闲时间统计等。而任务、中断处理例程、设备驱动、全局变量、Bootloader等是全局的,每个内核都可以访问。需要注意的是,在本发明提出的多OS内核架构模型中,内核只在任务执行时有效,当本地内核为应用提供系统服务时,内核服务程序中的局部动态变量和支持函数调用的栈都是利用的全局任务的栈空间。如附图1所示。
配置信息表:
由于采用多OS内核,那就存在OS内核与处理器核的对应关系,有可能是一个OS内核对应1个处理器核,也可能是一个OS内核对应多个处理器内核,如附图2所示。那么需要配置每个处理器核对应的OS内核参数,是否与其他处理器核共享OS内核,OS内核存放的起始地址(即基地址)等,都需要在配置表中得到体现。代码在编译时,人为地根据内核拷贝设置参数把内存空间进行分区,然后在配置表中将对应的分区起始地址写入配置表,以便于在系统启动时把相应的模块拷贝到指定的内存空间。配置表的主要参数如表1所示。
表1配置表主要组成
在代码模块拷贝过程中,第一次拷贝应把所有代码模块按照一个整体一次拷贝到内存中,或者保留在Flash存储器中,数据应该拷贝到RAM内存中。如果代码保留在Flash中,全局代码的访问就需要在Flash中去读取,这样速度稍慢一些,却能节省很多内存空间。如果拷贝到内存中,共享代码的访问速度提高了,但要求更多的内存来存放代码。用户在配置内核的位置时需要根据系统的运行速度要求和存储空间综合评价确定。
基于配置信息表的多主模式多OS内核架构的内核访问方法:
本发明在多主模式多内核架构下,将整个系统模型抽象为三个主要层次:分别是全局应用层、OS内核层和CPU层,并通过系统配置信息表建立各层之间的静态联系,全局应用和OS内核层通过全局-本地API映射接口建立动态访问联系,OS内核层则通过本地内核调度器, 根据实时任务调度算法将应用任务调度到相应的处理器核上运行,各个OS内核则通过核间任务通信模块进行核间通信与同步。本发明通过重定位地址计算方法和全局-本地API映射方法,解决了内核与全局代码之间的相互访问问题。主要实现包括两个方面的功能:一是全局的应用代码通过配置信息表和API映射接口,在多个OS内核中能准确地调用到需要的本地内核服务;二是当各个内核因为事件触发了调度,需要进行任务切换的时候,则能够通过地址重定位访问到全局代码。全局-本地API映射接口的设计利用了C程序的函数指针和接口封装的方法,将OS内核层中各个内核的API函数抽象成统一的接口,应用层代码在调用某个内核系统服务的时候,只需要根据系统信息配置表,找到对应内核的基地址,就可以方便访问相应的内核服务。如附图2所示。
在嵌入式系统中,代码可分为:应用任务、FS、GUI、中断处理服务例程、驱动、OS内核、bootloader等部分。除OS内核外,其他全局代码是共享的。在编译时,可以将全局代码和OS内核分配到不同的存储区,把全局代码分配到同一个存储区进行存储,使它们的地址连续,便于拷贝和方便全局代码之间进行相互访问。在编码时采用程序段声明的方式标明不同的代码,利用分区存储方法在编译时分配到不同的存储空间,便于系统启动时拷贝。
代码在编译和链接后被分配到不同的存储区,如附图3所示。每个存储区有一个起始地址,即程序或数据的基地址,在寻址的过程中,实际就是把这些基地址加上每条语句的偏移地址而进行跳转的。
此外,在编译,链接的时候,需要将bootloader单独编译,并将其地址映射到处理器上电就能执行的地方,如ARM处理器的以地址0x00000000开始的FLASH中。而操作系统内核(OS内核0)、系统配置文件、全局任务代码、全局静态数据等需要一起编译并链接到分配给BP核的连续地址空间。系统启动时,由bootloader完成BP核的初始化和启动工作,然后由BP核按照用户配置的内核个数,将位于FLASH中的OS内核0依次复制多个相同的内核副本到为各个AP核指定的存储区域,然后依次启动各个AP核。也就是说全局代码程序的地址都是相对于OS内核0所在基地址的偏移地址,同时,各个操作系统内核系统服务程序相对基地址的偏移地址也是固定不变的,因此,各个本地OS内核与全局代码之间的相互访问可以根据地址的动态重定位来实现。
(1)重定位地址计算方法
对于单OS内核结构来说,所有处理器核访问同一个OS内核和其他程序。程序的地址是相对统一的,不管是在Flash中还是拷贝到RAM中,程序的跳转偏移地址没有发生改变。但是对于多OS内核来说,由于存在多个内核拷贝,每个内核拷贝的基地址发生了改变,不同的 处理器核访问的不同OS内核;而任务、驱动等是全局的代码,处理器核访问这些全局代码时,地址是相同的,程序跳转需要重新定位。在这种情况下,同一个处理器核访问内核和全局代码时,内核和全局代码之间的偏移地址发生了改变,需要重新定位基地址才能正确进行跳转。而程序在编译时已经确定各个模块的基地址和偏移地址,虽然拷贝后的模块基地址发生了改变,模块内部的偏移地址却没有发生改变,因此需要在系统运行时根据调用关系进行动态基地址重定位。
主要在这两种情况下存在地址重定位,一是本地内核跳转到全局代码,主要发生在任务切换时跳转到任务;二是在全局代码运行时调用本地内核服务时,全局代码与本地内核的跳转。全局代码之间由于在拷贝时是按照整体一块进行拷贝的,它们之间的相对地址和编译时一样,不存在新的偏移地址,因此不需要地址重定位。而全局数据的地址是固定的,存储器中的数据加载是通过绝对地址来进行加载的,也不存在地址重定位问题。如附图4所示。
a)内核跳转到全局代码的方法
对于第一种情况,内核进行任务切换时,跳转到全局任务;由于全局任务代码在不同处理器核中地址是相同的,并且都是基于OS内核0基地址的偏移地址,而任务切换操作是由本地OS内核执行的,因此存在一个从本地内核跳转到全局任务代码之间的动作。代码在调度时只需要在移植代码中添加一个基地址计算即可进行正确地跳转,这种计算法方法如公式(1)所示。
跳转偏移地址=OS内核0基地址-本地OS内核基地址+任务入口地址原始偏移地址(1)
b)全局代码调用内核服务的方法
而对于第二种情况,主要发生在任务或中断调用OS内核服务时,由于任务调用OS内核在不断变化,需要根据任务所在处理器核对应的OS内核来确定。如果要正确地访问到全局代码,或者全局代码要访问不同的OS内核服务,都必须进行地址重定位。同时,由于全局代码可能在不同的内核中执行,调用的系统服务也可能各不相同,因此这些地址重定位必须是动态的。而实时操作系统中没有提供动态地址重定位的功能,因此在设计操作系统时需要根据运行时不同的OS内核和任务的基地址,计算出内核服务的实际偏移地址并进行任务跳转。由于任务调用的系统服务原始的偏移地址是相对于OS内核0的基地址的,而对于其他OS内核,只是基地址发生了改变,相对偏移地址并没有发生改变,所以,只需要知道本地OS内核基地址与原始内核基地址的差值就可以得到跳转的实际偏移地址。具体计算法方法如公式(2)。
跳转偏移地址=本地OS内核基地址-OS内核0基地址+OS服务原始偏移地址(2)
项目组在多主多OS内核的架构基础上,提出了一种基于配置表的实时多OS内核核操作 系统动态重定位方法。
(2)基于配置表的动态地址重定位C程序实现方法
对于每个内核来说,全局的代码和数据的地址不会发生改变的。我们在配置表中已经记录了各个模块的基地址,由于不同的内核访问这些全局代码和数据时,其内核的基地址已经发生改变,在访问这些代码和变量的时候需要将他们存放到内存中的原始基地址传递下去才能正确地访问到指定的位置。因此,我们在设计代码时已经考虑到这种问题,根据公式1和公式2的计算方法,在全局代码访问本地内核时,需要传递处理器核所在OS内核的基地址。内核在拷贝到不同存储区域时,各个函数的偏移地址相对于起始地址是固定的。
在C语言编程中,任务的跳转是直接根据编译地址后的偏移地址进行的。在编译完成后其偏移地址已经固定。需要编写一个汇编跳转程序辅助跳转。首先需要获得内核基地址,然后通过偏移地址找到对应的系统调用。
在本发明中,在操作系统提供系统服务时,设置了一个参数用于传递处理器核所在OS内核的基地址,然后通过公式(2)的方法计算出实际的偏移地址,获得实际的跳转地址。如实例1所示。我们设计了函数式宏来声明来传递OS内核的基地址,在宏声明的函数中,定义了一个系统服务函数的函数指针用来进行函数重定位。
实例1.C语言中系统服务函数重定位实现方法
其中OSFunc为实际的OS系统服务函数,即任务期望调用的某个OS内核提供的API,由于全局代码和OS内核0在编译和链接时被一起映射到了基地址相同的一块连续的地址空间,所以OS0_BaseAddress为与全局代码连续的OS内核0基地址,OS0_BaseAddress也是OS内核0与全局代码作为一个整体拷贝的内核基地址。
基于配置表的系统启动方法:
这种多OS内核的操作系统架构在共享资源与内核的相互访问的时候和单OS内核的架构存在差别,主要是由于多内核拷贝后,各个模块的地址发生了变化。针对这种问题,项目团 队发明一种基于配置表的系统启动及内核访问方法。
基于多内核模式的实时多核操作系统和单内核模式实时多核系统的启动过程存在差别。一般基于单内核模式的实时多核操作系统启动,只需要启动一个内核,其他处理器核只需要为其指定一个内核的入口地址即可,多个处理器核访问同一个内核和应用程序。
根据上述说明我们可以得知,这些基地址就组成了原始程序及数据的存储分布列表,然后把这个存储分布列表写入配置表对应位置,通过配置表我们就可以每段代码及数据的相对地址。
在实时操作系统应用中,应用程序、操作系统内核、驱动、数据等所占的区域及大小在编译时已经确定,按照分段编码方法指定程序段或数据段到相应的位置,可以得到每个段的基地址,包括临时数据使用的栈空间大小一般都是在编程时分配完成。在程序编译后我们已经知道每个模块所占用的空间及起始地址。我们根据这种原理,根据RAM的大小和数据区域占用的空间,事先分配好不同OS内核使用的内存区域,采用配置表的方法记录下来,在系统启动时根据配置信息表给定的新的基地址把给指定的OS内核分配到不同的RAM区。
在配置信息表中存放有每个处理器所使用的OS内核参数,如表1所示。程序代码及变量被编译后都是以全局地址空间为基础分配的,我们在编码时根据单核进行分配的地址空间,也就是说编译后的代码是单核的,需要根据配置参数进行拷贝。启动代码Bootloader根据这些配置信息拷贝内核到不同的位置,然后将内核入口地址传递给各个处理器核。多核处理器的Bootloader必须针对具体的处理器进行地址重定位。
为了充分利用Flash,可以将实时性要求不高的应用内核的代码读取放在Flash中,这样对于采用哈佛结构的处理器来说,可以充分利用哈佛结构,加快代码访问,同时减少访问内存时的总线访问冲突。将实时性要求较高的应用内核的代码拷贝到内存中运行。所有这些都需要一个初始化配置参数表来指引启动代码的工作。
多核操作系统的引导和初始化是指从系统加电到能够在多个处理器内核之间平等地进行任务调度的过程,这一过程是建立平等调度实施的基础,对于整个系统的运行具有重要意义。虽然说对称多处理器系统中,各处理器可以平等地并行工作,但这是建立在系统有多个可并行执行任务的基础之上,而在引导和初始化过程中,由于很多工作只能串行地执行,所以在这个阶段处理器内核是不平等的,是有主次之分的。系统加电之后,受到硬件控制,只启动其中一个处理器,称为引导处理器(BootingProcessor,BP),而其他处理器,称为应用处理器(ApplicationProcessor,AP),则处于停机等待状态。加电启动之后,BP跳转到特定的内存地址,通常映射到只读存储器FLASH中,这里保存着整个嵌入式系统的引导程序 (bootloader),其任务是进行简单的硬件检测,初始化环境参数,将操作系统内核根据配置表装载到内存指定的位置,然后跳转到操作系统的起始地址并开始执行。这段引导过程完全由BP完成,整个过程如附图5所示。
对于BP和各个AP,自身的初始化是每个处理器核都必须执行的,而全局和一些系统的初始化工作则只由BP核在启动时执行一次,如外设的初始化、GUI、FS、任务的创建等,从核需要初始化自身的处理器寄存器和程序的入口地址,进行程序入口地址的重定位。
整个启动过程分为两个阶段,第一个阶段是bootloader阶段,在这个阶段中,BP核主要进行处理器自身初始化,外设和全局相关的初始化,根据配置表信息拷贝各个OS内核到指定的内存位置,然后发送各个AP启动。这个阶段主要实现硬件相关的初始化,建立C代码运行的基本环境。而各个AP核在接收到BP核发送的处理器启动指令后,根据配置表跳转到Bootloader执行自身的硬件初始化工作。在这些工作执行完成后,跳转到main函数中等待第二阶段的启动信号。
第二个阶段主要是操作系统运行环境初始化。第一个阶段结束后,程序跳转到main函数,在main函数中进行操作系统初始化。在BP核中,main函数负责整个处理器的外设初始化、OS的初始化,建立系统任务;然后创建应用任务,分配堆栈,完成系统运行的初始化工作。然后向AP核发送OS内核启动信号,各个OS内核按照设计的调度算法调度任务运行。AP核在这个阶段主要就是等待BP核发送的OS启动信号,接到信号后根据配置表信息,跳转到指定地址的内核调度任务运行。
最后说明的是,以上优选实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明权利要求书所限定的范围。

Claims (3)

1.一种可配置的多主模式多OS内核实时操作系统架构的启动方法,其特征在于:包括可以配置的基于多主模式可配置多OS内核的实时操作系统架构,在该架构中,每个内核通过配置都可以作为主核实时调度任务和管理资源;用户根据系统资源和性能需要,自由配置操作系统内核个数以及各个处理器核使用的OS内核,指定OS内核存放的地址;
采用了一种面向多OS内核的操作系统内核与处理器核相关的配置信息表,该配置信息表包含了处理器核使用的OS内核编号及存储信息,便于各个内核与全局代码的相互访问及系统启动时内核的拷贝,通过该配置信息表的设计,建立了多OS内核与全局代码相互访问跳转地址计算和系统启动时OS内核拷贝地址联系。
2.根据权利要求1所述的可配置的多主模式多OS内核实时操作系统架构的启动方法,其特征在于:采用了一种基于配置信息表的本地OS内核与全局代码相互访问C程序实现方法,包括两个方面:本地OS内核跳转到全局代码和全局代码调用本地内核系统服务;通过操作系统移植部分添加代码从而实现本地内核跳转到相应的全局代码中;通过偏移地址计算方法和地址传递C程序实现全局代码对本地内核的访问。
3.根据权利要求2所述的可配置的多主模式多OS内核实时操作系统架构的启动方法,其特征在于:根据多主多OS内核架构,用户可以根据需要对操作系统内核个数和存放地址进行配置,在系统启动时只需要根据配置信息表就可以实现多内核的启动。
CN201410069096.7A 2014-02-27 2014-02-27 可配置的多主模式多os内核实时操作系统架构的启动方法 Active CN103793255B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410069096.7A CN103793255B (zh) 2014-02-27 2014-02-27 可配置的多主模式多os内核实时操作系统架构的启动方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410069096.7A CN103793255B (zh) 2014-02-27 2014-02-27 可配置的多主模式多os内核实时操作系统架构的启动方法

Publications (2)

Publication Number Publication Date
CN103793255A CN103793255A (zh) 2014-05-14
CN103793255B true CN103793255B (zh) 2017-01-25

Family

ID=50668970

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410069096.7A Active CN103793255B (zh) 2014-02-27 2014-02-27 可配置的多主模式多os内核实时操作系统架构的启动方法

Country Status (1)

Country Link
CN (1) CN103793255B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913740A (zh) * 2020-05-07 2020-11-10 电子科技大学 一种基于fpga的risc-v处理器上的实时操作系统移植方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461460B (zh) * 2014-11-11 2017-07-28 盛科网络(苏州)有限公司 同时配置多个内核寄存器的方法及装置
CN106155730A (zh) * 2015-04-21 2016-11-23 北京信威通信技术股份有限公司 操作系统加载方法及装置
CN108021392A (zh) * 2016-11-01 2018-05-11 中芯国际集成电路制造(上海)有限公司 处理器及其操作执行方法
RU2718235C1 (ru) * 2019-06-21 2020-03-31 Общество с ограниченной ответственностью «ПИРФ» (ООО «ПИРФ») Архитектура операционной системы для обеспечения поддержки поколений микроядер
CN112068895B (zh) * 2020-08-10 2023-12-19 深圳市鼎盛光电有限公司 代码配置方法、装置、视频播放设备及存储介质
CN112416443A (zh) * 2020-11-16 2021-02-26 苏州大学 实现实时操作系统在嵌入式架构下的驻留方法
CN112667300A (zh) * 2020-12-30 2021-04-16 珠海亿智电子科技有限公司 基于多处理器系统的处理器数据访问方法及管理装置
CN117215992B (zh) * 2023-11-09 2024-01-30 芯原科技(上海)有限公司 异构内核处理器、异构处理器和电源管理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101222525A (zh) * 2008-01-24 2008-07-16 浙江大学 自适应通信主体物理拓扑结构的多ecu消息通信方法
CN102929719A (zh) * 2012-09-18 2013-02-13 中标软件有限公司 一种多核计算机上多操作系统的控制方法及多核计算机

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101222525A (zh) * 2008-01-24 2008-07-16 浙江大学 自适应通信主体物理拓扑结构的多ecu消息通信方法
CN102929719A (zh) * 2012-09-18 2013-02-13 中标软件有限公司 一种多核计算机上多操作系统的控制方法及多核计算机

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种异构多核处理器嵌入式实时操作系统构架设计;蒋建春;《计算机科学》;20110630;第38卷(第6期);第298-303页 *
异构多核嵌入式软件关键问题研究;蒋建春;《中国博士学位论文全文数据库 信息科技辑 》;20120715;I137-28 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111913740A (zh) * 2020-05-07 2020-11-10 电子科技大学 一种基于fpga的risc-v处理器上的实时操作系统移植方法

Also Published As

Publication number Publication date
CN103793255A (zh) 2014-05-14

Similar Documents

Publication Publication Date Title
CN103793255B (zh) 可配置的多主模式多os内核实时操作系统架构的启动方法
KR101759266B1 (ko) 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법
Vaishnav et al. Resource elastic virtualization for FPGAs using OpenCL
CN109961151B (zh) 用于机器学习的计算服务的系统及用于机器学习的方法
US11010053B2 (en) Memory-access-resource management
US20150067356A1 (en) Power manager for multi-threaded data processor
Lauderdale et al. Towards a codelet-based runtime for exascale computing: Position paper
CN102375761A (zh) 业务管理方法和装置、以及设备
US20160202999A1 (en) A Computing Platform, A Reconfigurable Hardware Device And A Method for Simultaneously Executing Processes On Dynamically Reconfigurable Hardware Device, Such As An FPGA, As Well As Instruction Set Processors, Such As A CPU, And A Related Computer Readable Medium
CN109522087A (zh) 基于处理器的虚拟机构建方法和系统
US8863099B2 (en) Compilation and placement of instructions in a memory system
JP2009519513A (ja) 専用スレッド管理を用いたマルチコアの演算処理方法及び装置
US11630798B1 (en) Virtualized multicore systems with extended instruction heterogeneity
JP2014503898A (ja) 処理装置の同期動作のための方法およびシステム
CN105100180A (zh) 集群节点动态加载的方法、装置及系统
WO2021098257A1 (zh) 一种基于异构计算平台的业务处理方法
Beri et al. A scheduling and runtime framework for a cluster of heterogeneous machines with multiple accelerators
CN108647087B (zh) 实现php内核可重入的方法、装置、服务器和存储介质
CN114281529A (zh) 分布式虚拟化的客户操作系统调度优化方法、系统及终端
CN101303666A (zh) 一种嵌入式系统中内存资源的使用方法及装置
Zhou et al. DART-CUDA: A PGAS runtime system for multi-GPU systems
Samman et al. Architecture, on-chip network and programming interface concept for multiprocessor system-on-chip
Huang et al. Support for adaptivity in ARMCI using migratable objects
CN114217915A (zh) 一种异构众核上基于主-从模型的轻量级多线程机制
WO2024220261A1 (en) Low-latency virtual machines

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant