CN108255591A - 一种分区操作***的统一异常处理方法 - Google Patents
一种分区操作***的统一异常处理方法 Download PDFInfo
- Publication number
- CN108255591A CN108255591A CN201711292568.5A CN201711292568A CN108255591A CN 108255591 A CN108255591 A CN 108255591A CN 201711292568 A CN201711292568 A CN 201711292568A CN 108255591 A CN108255591 A CN 108255591A
- Authority
- CN
- China
- Prior art keywords
- processing
- client
- abnormal
- exception
- task
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/481—Exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明属于计算机***软件专业技术领域,涉及分区操作***不同类型分区的统一异常处理方法。该方法基于一种分区操作***的异常处理框架,包含异常***级处理和分发程序单元、裸应用分区异常处理任务单元、客户OS分区异常处理任务单元、客户OS异常处理程序单元。本发明基于以上分区操作***的异常处理方法实现了对分区操作***两类用户态异常的统一处理能力,解决了分区操作***中裸应用分区和客户OS分区并存,且都需要进行用户级异常处理的问题。
Description
技术领域
本发明属于计算机***软件技术领域,具体涉及针对分区操作***的统一异常处理方法。
背景技术
在分区操作***的分区中搭载客户OS,可以使分区操作***具备良好的遗产代码继承能力和灵活的综合化集成能力,已经成为目前主流分区操作***的重要特征。对于同时支持裸应用分区和客户OS分区的分区操作***来说,需要提供一套同时支持上述两类分区进行用户态异常处理的统一异常处理方法,从而使裸应用程序和客户OS都有机会接管所关心的异常,并挂接自己的用户级异常处理程序进行处理。异常处理方法的设计,首先应该能够兼容上述两类分区同时存在时分别需要进行异常处理的需求;其次异常处理方法的设计不应该破坏客户OS原始的异常处理流程,对于客户OS之上的应用应该是透明的;最后,从保证分区操作***内核的安全可靠性角度出发,上述方法的设计应该尽可能的简单通用,且尽量在分区实现,减少对内核的修改和功能扩展。目前已有的分区操作***采用内核直接调用用户挂钩的方式来处理用户态异常,这种方式一方面对内核改动过多,降低了内核可靠性,并引入安全风险;另一方面,直接过程调用的方式增加了内核的处理负担,降低了异常处理的效率。
发明内容
本发明的目的:本发明提供一种分区操作***的统一异常处理方法,解决分区操作***同时配置客户OS分区和裸应用分区,且这两类分区同时需要进行用户级异常处理的问题,解决目前分区操作***内核直接调用用户挂钩的处理方式所存在的问题。
本发明的技术方案:
1.一种分区操作***的异常处理框架:
a)异常***级处理和分发程序单元:驻留在分区操作***内核中,提供对异常的直接接管、基本处理,并使用IPC通信进行异常事件的分发,以激活裸应用分区的异常处理任务单元或客户OS分区的异常处理任务单元进行相应的用户级异常处理。
b)裸应用分区异常处理任务单元:驻留在裸应用分区中,负责查寻用户级异常处理例程表,调用用户注册的相应的例程完成用户级处理。此任务在创建时优先级被设置为最高级别,启动后进入处理循环,处于IPC接收阻塞状态,等待接收内核异常处理和分发程序单元的异常通知与激活。
c)客户OS分区异常处理任务单元:驻留在客户OS分区中,负责将异常处理转接到客户OS的异常处理程序单元中,并同时传递异常上下文。此任务在创建时优先级被设置为最高级别,启动后进入处理循环,处于IPC 接收阻塞状态,等待接收内核异常处理和分发程序单元的异常通知与激活。
d)客户OS异常处理程序单元:此部分包括客户OS原始的异常处理程序和修改后的客户OS异常退出机制。客户OS的异常处理完成以后,如果触发异常的客户OS应用程序任务没有被挂起,可以通过此退出机制恢复运行。
2.一种分区操作***的异常处理流程(除非在步骤说明中包含步骤跳转,否则按顺序执行,一直到包含有“处理完毕”的步骤结束):
步骤1:异常发生时,异常***级处理和分发程序单元将首先接管,进行基本的异常上下文保存,如果所发生异常类型需要由内核全权处理(如重启异常、机器检测异常等)则内核执行***级处理,执行完毕。否则,转向步骤2。
步骤2:对于发生在分区、且可以交由分区处理的异常类型,异常***级处理和分发程序单元将异常上下文和异常向量号等信息写入IPC消息缓冲。
步骤3:异常***级处理和分发程序单元随后识别发生异常的分区ID,根据分区ID查找对应的异常处理任务,发生异常的分区可能是裸应用分区或客户OS分区。
步骤4:异常***级处理和分发程序单元最后调用“IPC发送和接收”复合操作接口向分区的异常处理任务发送异常信息。确认消息发送成功后,当前异常现场挂起,让出处理器执行权,等待切换到分区异常处理任务后进行下一步处理。如果异常发生在裸应用分区,则转向步骤5执行,如果异常发生在客户OS分区,则转向步骤7执行。
步骤5:异常***级处理和分发程序单元的IPC通知将此裸应用分区异常处理任务单元激活,此任务随后从消息缓冲中获取异常上下文信息和异常向量号。然后根据异常向量号查寻用户级异常处理例程表,调用用户注册的相应的例程完成用户级处理。
步骤6:处理完成以后再次阻塞在IPC接收操作之上,并让出处理器执行权,切换到异常发生的任务,从异常发生点继续执行。处理完毕。
步骤7:异常***级处理和分发程序单元的IPC通知将客户OS分区异常处理任务激活,此任务随后从消息缓冲中获取异常上下文信息,然后修改异常现场的程序计数器(PC)为客户OS异常处理程序单元的入口,并修改异常现场的参数寄存器(R3)为异常上下文地址。
步骤8:客户OS分区异常处理任务再次阻塞在IPC接收操作中,并让出执行权,此时将通过OS的任务调度和切换,进入客户OS异常处理程序单元的执行入口,进入客户OS自身的异常处理。
步骤9:客户OS异常处理程序单元开始进行用户级异常处理。如果在处理中挂起了发生异常的客户OS任务(注意此任务是客户OS创建的任务,而不是分区操作***创建的任务),转向步骤10。如果发生异常的客户OS任务没有被挂起,转向步骤11。
步骤10:执行客户OS内部重调度,切换至客户OS调度机制选择的新的客户OS任务,执行完毕。
步骤11:利用软中断(SC指令)陷入内核的软中断处理,通过内核所
保留的异常上下文和RFI指令恢复到异常发生点继续执行,执行完毕。本发明具有的优点效果:
1.以任务的形式进行用户级异常处理,将异常处理的大部分工作转移到分区中,尽量不对内核进行修改和功能扩展,有利于降低内核复杂度,提升内核安全可靠性,提升异常处理的效率;
2.使用同步IPC通信向分区投递异常处理通知,既方便的进行了异常信息的投递,又保证了由用户级异常处理任务对异常现场进行全权接管的处理逻辑。
附图说明
图1为分区操作***统一异常处理框架示意图,
图2为分区操作***统一异常处理流程示意图。
具体实施方式
本发明在某个嵌入式分区操作***的典型场景中的实施方式如下:
a)分区操作***内核中驻留异常***级处理和分发程序单元EXPTION_SYS_PROCESS,并配置客户OS分区A和裸应用分区B。其中, A分区中驻留客户OS分区异常处理任务单元GOS_EXP_TASK_A和客户 OS异常处理程序单元GOS_EXP_PROCESS_A,B分区中驻留裸应用分区异常处理任务单元APP_EXP_TASK_B。
b)在分区操作***启动以后,在A分区的初始化过程中创建并启动异常处理任务GOS_EXP_TASK_A,进入异常处理循环,阻塞于IPC通信的接收操作, 等待被激活。
c)在B分区的初始化过程中会初始化“用户级异常处理例程表”,然后创建并启动异常处理任务APP_EXP_TASK_B,进入异常处理循环,阻塞于IPC通信的接收操作,等待被激活。随后,B分区应用程序需要将自己异常处理例程注册到“用户级异常处理例程表”中。
d)异常发生以后,首先由分区操作***内核的***级处理和分发程序接管,如果是A分区发生的异常,则准备使用IPC激活A分区的处理任务 GOS_EXP_TASK_A,转入步骤e);如果是B分区发生,则准备使用IPC激活B分区的处理任务APP_EXP_TASK_B,转入步骤h)。
e)GOS_EXP_TASK_A被内核发送的IPC操作激活,获取执行权,执行异常现场重定向,然后再次阻塞于IPC接收,让出执行权。
f)任务GOS_EXP_PRS_A让出执行权以后,切换至重定向的异常现场,开始执行客户OS的异常处理GOS_EXP_PROCESS_A。
g)如果GOS_EXP_PROCESS_A的处理中没有挂起发生异常的客户OS任务,则通过修改后的异常退出机制可以退出到异常发生点继续执行,否则,切换至新的客户OS任务执行。至此,客户OS分区异常处理结束。
h)APP_EXP_TASK_B任务被内核发出的IPC操作激活,获取执行权。查寻用户级异常处理例程表,调用用户注册的相应的例程完成用户级处理。
i)处理完成以后,APP_EXP_TASK_B任务再次阻塞于IPC接收操作之上,并让出处理器执行权。至此,裸应用分区的异常处理结束。
Claims (2)
1.一种分区操作***的异常处理框架,其特征在于:包括以下结构单元:
a)异常***级处理和分发程序单元:驻留在分区操作***内核中,提供对异常的直接接管、基本处理,并使用IPC通信进行异常事件的分发,以激活裸应用分区的异常处理任务单元或客户OS分区的异常处理任务单元进行相应的用户级异常处理;
b)裸应用分区异常处理任务单元:驻留在裸应用分区中,负责查寻用户级异常处理例程表,调用用户注册的相应的例程完成用户级处理;此任务在创建时优先级被设置为最高级别,启动后进入处理循环,处于IPC接收阻塞状态,等待接收内核异常处理和分发程序单元的异常通知与激活;
c)客户OS分区异常处理任务单元:驻留在客户OS分区中,负责将异常处理转接到客户OS的异常处理程序单元中,并同时传递异常上下文;此任务在创建时优先级被设置为最高级别,启动后进入处理循环,处于IPC接收阻塞状态,等待接收内核异常处理和分发程序单元的异常通知与激活;
d)客户OS异常处理程序单元:此部分包括客户OS原始的异常处理程序和修改后的客户OS异常退出机制;客户OS的异常处理完成以后,如果触发异常的客户OS应用程序任务没有被挂起,可以通过此退出机制恢复运行。
2.一种基于如权利要求1所述的分区操作***的异常处理方法,其特征在于:包括以下步骤:
步骤1:异常发生时,异常***级处理和分发程序单元将首先接管,进行基本的异常上下文保存,如果所发生异常类型需要由内核全权处理则内核执行***级处理,执行完毕;否则,转向步骤2;
步骤2:对于发生在分区、且可以交由分区处理的异常类型,异常***级处理和分发程序单元将异常上下文和异常向量号等信息写入IPC消息缓冲;
步骤3:异常***级处理和分发程序单元随后识别发生异常的分区ID,根据分区ID查找对应的异常处理任务,发生异常的分区可能是裸应用分区或客户OS分区;
步骤4:异常***级处理和分发程序单元最后调用“IPC发送和接收”复合操作接口向分区的异常处理任务发送异常信息;确认消息发送成功后,当前异常现场挂起,让出处理器执行权,等待切换到分区异常处理任务后进行下一步处理;如果异常发生在裸应用分区,则转向步骤5执行,如果异常发生在客户OS分区,则转向步骤7执行;
步骤5:异常***级处理和分发程序单元的IPC通知将此裸应用分区异常处理任务单元激活,此任务随后从消息缓冲中获取异常上下文信息和异常向量号;然后根据异常向量号查寻用户级异常处理例程表,调用用户注册的相应的例程完成用户级处理;
步骤6:处理完成以后再次阻塞在IPC接收操作之上,并让出处理器执行权,切换到异常发生的任务,从异常发生点继续执行;处理完毕;
步骤7:异常***级处理和分发程序单元的IPC通知将客户OS分区异常处理任务激活,此任务随后从消息缓冲中获取异常上下文信息,然后修改异常现场的程序计数器(PC)为客户OS异常处理程序单元的入口,并修改异常现场的参数寄存器(R3)为异常上下文地址;
步骤8:客户OS分区异常处理任务再次阻塞在IPC接收操作中,并让出执行权,此时将通过OS的任务调度和切换,进入客户OS异常处理程序单元的执行入口,进入客户OS自身的异常处理;
步骤9:客户OS异常处理程序单元开始进行用户级异常处理;如果在处理中挂起了发生异常的客户OS任务,转向步骤10;如果发生异常的客户OS任务没有被挂起,转向步骤11;
步骤10:执行客户OS内部重调度,切换至客户OS调度机制选择的新的客户OS任务,执行完毕;
步骤11:利用软中断(SC指令)陷入内核的软中断处理,通过内核所保留的异常上下文和RFI指令恢复到异常发生点继续执行,执行完毕。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711292568.5A CN108255591B (zh) | 2017-12-07 | 2017-12-07 | 一种分区操作***的统一异常处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711292568.5A CN108255591B (zh) | 2017-12-07 | 2017-12-07 | 一种分区操作***的统一异常处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108255591A true CN108255591A (zh) | 2018-07-06 |
CN108255591B CN108255591B (zh) | 2021-10-15 |
Family
ID=62722374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711292568.5A Active CN108255591B (zh) | 2017-12-07 | 2017-12-07 | 一种分区操作***的统一异常处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108255591B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542610A (zh) * | 2018-12-04 | 2019-03-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多分区操作***虚中断标准组件实现方法 |
CN112799776A (zh) * | 2020-12-31 | 2021-05-14 | 科东(广州)软件科技有限公司 | 多分区操作***监控方法、装置、计算设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020070795A (ko) * | 2001-03-01 | 2002-09-11 | 인터내셔널 비지네스 머신즈 코포레이션 | 논리적으로 분할된 다중처리 시스템에서의 중복 보고 에러제거 방법 및 시스템 |
CN103049318A (zh) * | 2011-10-11 | 2013-04-17 | 北京科银京成技术有限公司 | 分区操作***的虚拟中断算法 |
CN104461719A (zh) * | 2014-11-29 | 2015-03-25 | 中国航空工业集团公司第六三一研究所 | 一种面向分区操作***的虚中断扩展方法 |
CN104794393A (zh) * | 2015-04-24 | 2015-07-22 | 杭州字节信息技术有限公司 | 一种嵌入式分区映像安全认证及内核可信引导方法及其设备 |
US20150261952A1 (en) * | 2014-03-13 | 2015-09-17 | Unisys Corporation | Service partition virtualization system and method having a secure platform |
CN105468434A (zh) * | 2015-12-11 | 2016-04-06 | 浪潮(北京)电子信息产业有限公司 | 一种处理虚拟机异常的方法及装置 |
CN105528276A (zh) * | 2015-12-09 | 2016-04-27 | 中国航空工业集团公司西安航空计算技术研究所 | 基于分区操作***健康监控的模块支持层故障处理方法 |
US9529661B1 (en) * | 2015-06-18 | 2016-12-27 | Rockwell Collins, Inc. | Optimal multi-core health monitor architecture |
CN106293986A (zh) * | 2016-08-12 | 2017-01-04 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种基于虚拟中断的故障监控处理装置与方法 |
-
2017
- 2017-12-07 CN CN201711292568.5A patent/CN108255591B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20020070795A (ko) * | 2001-03-01 | 2002-09-11 | 인터내셔널 비지네스 머신즈 코포레이션 | 논리적으로 분할된 다중처리 시스템에서의 중복 보고 에러제거 방법 및 시스템 |
CN103049318A (zh) * | 2011-10-11 | 2013-04-17 | 北京科银京成技术有限公司 | 分区操作***的虚拟中断算法 |
US20150261952A1 (en) * | 2014-03-13 | 2015-09-17 | Unisys Corporation | Service partition virtualization system and method having a secure platform |
CN104461719A (zh) * | 2014-11-29 | 2015-03-25 | 中国航空工业集团公司第六三一研究所 | 一种面向分区操作***的虚中断扩展方法 |
CN104794393A (zh) * | 2015-04-24 | 2015-07-22 | 杭州字节信息技术有限公司 | 一种嵌入式分区映像安全认证及内核可信引导方法及其设备 |
US9529661B1 (en) * | 2015-06-18 | 2016-12-27 | Rockwell Collins, Inc. | Optimal multi-core health monitor architecture |
CN105528276A (zh) * | 2015-12-09 | 2016-04-27 | 中国航空工业集团公司西安航空计算技术研究所 | 基于分区操作***健康监控的模块支持层故障处理方法 |
CN105468434A (zh) * | 2015-12-11 | 2016-04-06 | 浪潮(北京)电子信息产业有限公司 | 一种处理虚拟机异常的方法及装置 |
CN106293986A (zh) * | 2016-08-12 | 2017-01-04 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种基于虚拟中断的故障监控处理装置与方法 |
Non-Patent Citations (1)
Title |
---|
郝继锋等: "一种微内核分区操作***C 库的适配验证方法", 《航空计算技术》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542610A (zh) * | 2018-12-04 | 2019-03-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多分区操作***虚中断标准组件实现方法 |
CN112799776A (zh) * | 2020-12-31 | 2021-05-14 | 科东(广州)软件科技有限公司 | 多分区操作***监控方法、装置、计算设备及存储介质 |
CN112799776B (zh) * | 2020-12-31 | 2022-03-25 | 科东(广州)软件科技有限公司 | 多分区操作***监控方法、装置、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108255591B (zh) | 2021-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gadepalli et al. | Sledge: A serverless-first, light-weight wasm runtime for the edge | |
CN100570565C (zh) | 在管理程序中提供基于策略的操作***服务的方法和*** | |
JP5160176B2 (ja) | 仮想マシンのための多数コンフィギュレーションによる通信管理のためのシステム、方法、およびプログラム | |
CN1938686B (zh) | 提供用户级多线程操作的方法和*** | |
JP2013516021A (ja) | プロセッサコアのハイパーバイザ離隔 | |
Cheng et al. | vScale: Automatic and efficient processor scaling for SMP virtual machines | |
CN108241496B (zh) | 应用程序的平滑升级方法及装置 | |
CN106155803B (zh) | 一种基于信号量的线程池共享方法及*** | |
WO2007050160A2 (en) | Firmware filters and patches | |
EP3032413B1 (en) | Code generation method, compiler, scheduling method, apparatus and scheduling system | |
US20070101316A1 (en) | Software Architecture and Program for the Concurrent Execution of Finite State Machine-Encoded Processes, on Single or Multiple-Processor-Based Embedded Systems | |
WO2018040845A1 (zh) | 一种计算资源调度方法及装置 | |
CN110447012A (zh) | 协作虚拟处理器调度 | |
CN108255591A (zh) | 一种分区操作***的统一异常处理方法 | |
CN108958884A (zh) | 一种虚拟机管理的方法及相关装置 | |
CN105224403B (zh) | 一种中断处理方法及装置 | |
CN104503750A (zh) | 进程清理方法及装置 | |
CN105068899A (zh) | 一种Vmware***下自动重启稳定性测试方法 | |
US20200167180A1 (en) | Securing virtual machines in computer systems | |
CN110045992A (zh) | 一种适用于多核板卡的通用***及方法 | |
Galante et al. | Constructing elastic scientific applications using elasticity primitives | |
Joshi et al. | Twin-Linux: Running independent Linux Kernels simultaneously on separate cores of a multicore system | |
CN105787391B (zh) | 基于TrustZone硬件的面向任务的安全操作*** | |
CN111143029B (zh) | 基于Gitlab-CI回调集成实现虚拟机一致、自动伸缩的持续构建环境的方法 | |
CN103064739B (zh) | 一种云计算中虚拟机的控制方法及装置 |
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 |