CN104063295A - 一种多核操作系统可重构容错启动方法 - Google Patents
一种多核操作系统可重构容错启动方法 Download PDFInfo
- Publication number
- CN104063295A CN104063295A CN201410295331.2A CN201410295331A CN104063295A CN 104063295 A CN104063295 A CN 104063295A CN 201410295331 A CN201410295331 A CN 201410295331A CN 104063295 A CN104063295 A CN 104063295A
- Authority
- CN
- China
- Prior art keywords
- core
- spin lock
- var
- processor
- 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.)
- Granted
Links
Landscapes
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
Abstract
一种多核操作系统可重构容错启动方法,设置同步信号为初始状态,设置自旋锁为未被占用;各处理器核完成初始化后,申请自旋锁;申请到自旋锁的处理器核进入核间互斥访问的临界区,其余处理器核阻塞在自旋锁上;第一个申请到自旋锁的处理器核将自己的处理器核ID设置为主核ID号,并设置同步信号,然后释放自旋锁;后续申请到自旋锁的处理器核通过读取到的值得知自己为从核,且主核ID对应的处理器核为主核,释放自旋锁;主核完成内存、总线设备及操作系统内核的初始化后通过设置核间同步信号启动从核,使主核和从核同时开始任务调度。本发明能够在主核故障时仍能正常启动其他处理器核运行,提高了多核计算机的可靠性。
Description
技术领域
本发明涉及一种多核操作系统可重构容错启动方法,特别是基于共享内存的多核操作系统可重构容错启动方法。
背景技术
嵌入式多核处理器的启动过程主要都由主处理器核心(以下简称为主核)完成。处理器上电复位后,主核首先使从核进入休眠或等待的工作模式,主核完成内存、总线设备及操作系统内核的初始化后再唤醒其余从核,最后进入正常的多核运行模式,多核并行调度任务运行。
在传统嵌入式多核操作系统中,主核的选择通常是由人工预先指定的。当主核无法启动时,会导致整个计算机无法运行。随着SOC技术的发展,片上多核处理器在嵌入式计算机中的应用将会越来越广泛,传统多核操作系统启动方式已难以满足航天航空等大型军工产品提出的高可靠性、高可用性以及自主容错的要求。
目前,国内外已针对多核操作系统启动过程开展了一些研究,如《航天控制》2010年第4期发表的“eCos操作系统针对并行S698P-SOC的启动初始化过程研究”主要针对Ecos源码进行多核操作系统启动过程的分析,而启动流程还是采用传统的先对默认的主处理器核初始化后再启动从核的方式。“龙芯多核处理器启动流程”文中第一部分“BIOS的引导”中通过汇编代码明确给出是通过判断处理器核ID是否为0的方式判断处理器核是否为主核,即预先指定处理器核ID为0的核为主核。
CN201210059600.6“多处理器系统及其并行启动方法”提出将主核的启动与从核的启动并行化的方法,但仍首先需要由主处理器核启动从处理器核;CN201010244460.0“多核CPU加载Linux操作系统的方法及系统”中需要主核两次唤醒从核。基于以上方法的多处理器系统,在主处理器核故障且无法正常启动时,都会出现整个系统无法启动的问题。
CN200710048366.6“多核系统单核异常的恢复方法”与CN201210015133.7“提高多核处理器的可靠性的方法及装置”中均提出利用核间任务迁移技术将发生故障的处理器核上的业务/任务/进程/线程迁移到正常的处理器核上。然而他们都基于一个前提,就是多核系统能够正常启动。以上方法对于主核运行期间发生的故障可以进行故障的隔离和恢复,然而对于系统启动时主核已处于故障的情况则没有给出明确的解决方法。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供一种多核操作系统可重构容错启动方法,解决了传统启动方法中主核发生故障无法启动从核的问题,能够在主核故障时仍能正常启动其他处理器核运行,提高了多核计算机的可靠性。
本发明的技术解决方案是:一种多核操作系统可重构容错启动方法,该方法动态将主核的工作迁移到可正常工作的从核上,可以在主核发生硬件故障时仍保证计算机正常启动运行,在只有一个核能够正常工作的极端情况下,也可保证系统正常运行,有效提高了多核计算机的可靠性,其步骤如下:
(1)各个处理器核上电/复位后并行启动,设置使各个处理器核同步的核间同步信号VARSync为初始状态S0,设置处理器核间共用的自旋锁VARSpinlock为未被占用;
(2)各处理器核完成各自的初始化后,申请自旋锁VARSpinlock;
(3)第一个申请到自旋锁的处理器核将自己的处理器核ID设置为主核ID号VARMID,并设置核间同步信号VARSync为中间状态S1,其余处理器核阻塞在自旋锁上;第一个申请到自旋锁的处理器核完成以上操作后,释放自旋锁VARSpinlock;
(4)后续申请到自旋锁的处理器核通过读取到核间同步信号VARSync的值为S1得知自己为从核、主核ID号VARMID对应的处理器核为主核,于是立即释放自旋锁;
(5)主核完成内存、总线设备及操作系统内核的初始化后通过设置核间同步信号VARSync为S2启动从核,使主核和从核同时开始任务调度;
(6)所有从核循环读取核间同步信号VARSync的值,直到该值由S1变化为S2后开始多核并行调度。
本发明与现有技术相比具有的有益效果是:在传统嵌入式多核操作系统中,主核的选择通常是由人工预先指定的。当主核无法启动时,会导致整个计算机无法运行。本发明采用动态选择主核的启动方法,解决了传统启动方法中主核发生故障无法启动从核的问题,确保在至少一核功能正确的情况下计算机能正常启动,提高了多核计算机的可靠性。
附图说明
图1为本发明流程图;
图2为本发明的四核处理器启动示例时序图。
具体实施方式
下面结合附图对本发明的具体实施方式进行进一步的详细描述。
首先对本发明用到的术语及符号进行说明。
主核:主处理器核,在初始化阶段除了负责处理器核内部的初始化外,还负责内存、总线设备及操作系统内核的初始化以及从核的启动。
从核:从处理器核,在初始化阶段只负责处理器核内部的初始化。
核间同步信号VARSync:用于使各个处理器核间相互同步,可采用全局变量或固定的内存单元的方式实现。
自旋锁VARSpinlock:用于使各个处理器核间互斥访问主核ID号VARMID以及核间同步信号VARSync,可采用全局变量或固定的内存单元的方式实现。
S0:核间同步信号VARSync的初始状态,表示未确定哪个核为主核,需要根据程序动态执行情况选择主核。
S1:核间同步信号VARSync的中间状态,表示已确定哪个核为主核,但主核未完成系统的初始化,从核需要等待同步。
S2:核间同步信号VARSync的最终状态,表示主核已完成系统的初始化,各处理器核可以开始并行调度。
如图1所示,本发明一种多核操作系统可重构容错启动方法,其具体步骤如下:
(1)各个处理器核上电/复位后并行启动,设置核间同步信号VARSync为初始状态S0,设置自旋锁VARSpinlock为未被占用;
(2)各处理器核完成各自的初始化后,申请自旋锁VARSpinlock;
(3)第一个申请到自旋锁VARSpinlock的处理器核通过读取到核间同步信号VARSync的值为S0得知目前还未确定主核,于是将自己的处理器核ID号设置为主核ID号VARMID,并设置核间同步信号VARSync为中间状态S1,其余处理器核阻塞在自旋锁上,即循环申请自旋锁;第一个申请到自旋锁的处理器核完成以上操作后,释放自旋锁;
(4)后续申请到自旋锁的处理器核通过读取到核间同步信号VARSync的值为S1得知自己为从核,于是立即释放自旋锁;
(5)各核通过将主核ID号VARMID与自己的处理器核ID号进行比较判断自己是否为主核;主核完成内存、总线设备及操作系统内核的初始化后通过设置核间同步信号VARSync为S2启动从核,使主核和从核同时开始多核并行调度;
(6)所有从核循环读取核间同步信号VARSync的值,直到该值由S1变化为S2后从核开始启动任务调度。
如图2所示,本发明一种多核操作系统可重构容错启动方法,以四核处理器为例进一步说明本发明的具体实施过程:
(1)四个处理器核开始执行后均设置核间同步信号VARSync为初始状态FALSE,并设置自旋锁VARSpinlock为未被占用;
(2)四个处理器核中最先申请自旋锁VARSpinlock的处理器核1获得自旋锁;
(3)处理器1将主核ID号VARMID设置为1,将核间同步信号VARSync设置为WAIT,最后释放自旋锁;
(3)处理器核1释放自旋锁后,其余处理器核依次获得自旋锁,由于读取到VARSync为WAIT,因此立即释放自旋锁;
(4)处理器核1完成内存、总线设备及操作系统内核的初始化后设置核间同步信号VARSync为TRUE,随后开始进行任务调度;
(5)从核读到核间同步信号VARSync为TRUE后开始进行任务调度。
以上为四核处理器启动的具体实施过程,双核、八核等其他多核处理器均可采用上述过程,实现方法与上述实施例相同。
发明未详细说明部分属本领域技术人员公知常识。
Claims (3)
1.一种多核操作系统可重构容错启动方法,其特征在于实现步骤如下:
(1)各个处理器核上电/复位后并行启动,设置使各个处理器核同步的核间同步信号VARSync为初始状态S0,设置处理器核间共用的自旋锁VARSpinlock为未被占用;
(2)各处理器核完成各自的初始化后,申请自旋锁VARSpinlock;
(3)第一个申请到自旋锁的处理器核将自己的处理器核ID设置为主核ID号VARMID,并设置核间同步信号VARSync为中间状态S1,其余处理器核阻塞在自旋锁上;第一个申请到自旋锁的处理器核完成以上操作后,释放自旋锁VARSpinlock;
(4)后续申请到自旋锁的处理器核通过读取到核间同步信号VARSync的值为S1得知自己为从核、主核ID号VARMID对应的处理器核为主核,于是立即释放自旋锁;
(5)主核完成内存、总线设备及操作系统内核的初始化后通过设置核间同步信号VARSync为S2启动从核,使主核和从核同时开始任务调度;
(6)所有从核循环读取核间同步信号VARSync的值,直到该值由S1变化为S2后开始多核并行调度。
2.根据权利要求1所述的多核操作系统可重构容错启动方法,其特征在于:所述步骤(1)中的核间同步信号VARSync采用全局变量或固定的内存单元的方式实现。
3.根据权利要求1所述的多核操作系统可重构容错启动方法,其特征在于:所述步骤(1)中的自旋锁VARSpinlock采用全局变量或固定的内存单元的方式实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410295331.2A CN104063295B (zh) | 2014-06-26 | 2014-06-26 | 一种多核操作系统可重构容错启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410295331.2A CN104063295B (zh) | 2014-06-26 | 2014-06-26 | 一种多核操作系统可重构容错启动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104063295A true CN104063295A (zh) | 2014-09-24 |
CN104063295B CN104063295B (zh) | 2016-08-24 |
Family
ID=51551017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410295331.2A Active CN104063295B (zh) | 2014-06-26 | 2014-06-26 | 一种多核操作系统可重构容错启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104063295B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463442A (zh) * | 2017-07-12 | 2017-12-12 | 北京控制工程研究所 | 一种星载多核SoC任务级负载均衡并行调度方法 |
CN110716812A (zh) * | 2019-09-12 | 2020-01-21 | 无锡江南计算技术研究所 | 一种支持高并发的分布式同步管理方法与装置 |
CN112416856A (zh) * | 2020-11-30 | 2021-02-26 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向多核技术的分布式可重构机载容错系统 |
CN112486703A (zh) * | 2020-11-27 | 2021-03-12 | 中船重工(武汉)凌久电子有限责任公司 | 基于多核多处理器并行系统的全局数据存储器管理方法 |
CN112965755A (zh) * | 2021-03-31 | 2021-06-15 | 龙芯中科技术股份有限公司 | 多核处理器的初始化方法、装置、电子设备及存储介质 |
CN115081033A (zh) * | 2022-07-20 | 2022-09-20 | 南方电网数字电网研究院有限公司 | 一种数字配电网边缘计算装置业务安全隔离方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870353A (zh) * | 2014-03-18 | 2014-06-18 | 北京控制工程研究所 | 一种面向多核的可重构容错系统及方法 |
-
2014
- 2014-06-26 CN CN201410295331.2A patent/CN104063295B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103870353A (zh) * | 2014-03-18 | 2014-06-18 | 北京控制工程研究所 | 一种面向多核的可重构容错系统及方法 |
Non-Patent Citations (1)
Title |
---|
张绍林等: "一种面向多核的可重构容错方法", 《计算机科学》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463442A (zh) * | 2017-07-12 | 2017-12-12 | 北京控制工程研究所 | 一种星载多核SoC任务级负载均衡并行调度方法 |
CN110716812A (zh) * | 2019-09-12 | 2020-01-21 | 无锡江南计算技术研究所 | 一种支持高并发的分布式同步管理方法与装置 |
CN112486703A (zh) * | 2020-11-27 | 2021-03-12 | 中船重工(武汉)凌久电子有限责任公司 | 基于多核多处理器并行系统的全局数据存储器管理方法 |
CN112486703B (zh) * | 2020-11-27 | 2024-02-06 | 中船重工(武汉)凌久电子有限责任公司 | 基于多核多处理器并行系统的全局数据存储器管理方法 |
CN112416856A (zh) * | 2020-11-30 | 2021-02-26 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向多核技术的分布式可重构机载容错系统 |
CN112965755A (zh) * | 2021-03-31 | 2021-06-15 | 龙芯中科技术股份有限公司 | 多核处理器的初始化方法、装置、电子设备及存储介质 |
CN112965755B (zh) * | 2021-03-31 | 2023-12-08 | 龙芯中科技术股份有限公司 | 多核处理器的初始化方法、装置、电子设备及存储介质 |
CN115081033A (zh) * | 2022-07-20 | 2022-09-20 | 南方电网数字电网研究院有限公司 | 一种数字配电网边缘计算装置业务安全隔离方法 |
CN115081033B (zh) * | 2022-07-20 | 2022-11-11 | 南方电网数字电网研究院有限公司 | 一种数字配电网边缘计算装置业务安全隔离方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104063295B (zh) | 2016-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104063295A (zh) | 一种多核操作系统可重构容错启动方法 | |
US8352924B2 (en) | Method and device for multi-core instruction-set simulation | |
EP2709010B1 (en) | System and method for synchronizing processor instruction execution | |
US20130231912A1 (en) | Method, system, and scheduler for simulating multiple processors in parallel | |
EP3241116B1 (en) | Memory access protection using processor transactional memory support | |
CN103870350A (zh) | 一种基于watchdog的微处理器多核加固方法 | |
US20210294730A1 (en) | Managing resources used during a development pipeline | |
DE112015001502T5 (de) | Ausstieg aus mehreren Threads in einem Computer | |
EP2672388B1 (en) | Multi-processor parallel simulation method, system and scheduler | |
CN103049305B (zh) | 针对龙芯多核cpu模拟的动态代码转换的多线程化方法 | |
CA2826568C (en) | System and method for controlling processor instruction execution | |
CN103218251B (zh) | 多核系统级芯片的验证方法和装置 | |
CN112416856A (zh) | 一种面向多核技术的分布式可重构机载容错系统 | |
US8881106B2 (en) | Debugging parallel software using speculatively executed code sequences in a multiple core environment | |
US9081772B1 (en) | Method and apparatus for acid validation within a distributed relational database under controlled concurrent workloads | |
US9836323B1 (en) | Scalable hypervisor scheduling of polling tasks | |
CN106547583B (zh) | 一种操作系统安装方法以及装置 | |
CN104182271A (zh) | 一种基于申威处理器的虚拟化实现方法 | |
CN111695314A (zh) | 一种多核芯片仿真测试方法及装置 | |
JP2001022720A (ja) | マルチプロセッサシステム | |
CN112363816B (zh) | 嵌入式多核操作系统确定性调度方法、系统及介质 | |
US10776139B2 (en) | Simulation apparatus, simulation method, and computer readable medium | |
CN113778742A (zh) | 程序执行方法,程序处理方法以及相关设备 | |
WO2015056021A1 (en) | Multi-processor simulation on a multi-core machine | |
BR102013023551A2 (pt) | Método para controlar uma quantidade total de instruções executado por um processador e para controlar um período de tempo e sistema para controlar uma quantidade total de instruções executadas por um processador |
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 |