CN108255591B - 一种分区操作***的统一异常处理方法 - Google Patents

一种分区操作***的统一异常处理方法 Download PDF

Info

Publication number
CN108255591B
CN108255591B CN201711292568.5A CN201711292568A CN108255591B CN 108255591 B CN108255591 B CN 108255591B CN 201711292568 A CN201711292568 A CN 201711292568A CN 108255591 B CN108255591 B CN 108255591B
Authority
CN
China
Prior art keywords
exception
partition
processing
guest
abnormal
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
CN201711292568.5A
Other languages
English (en)
Other versions
CN108255591A (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.)
Xian Aeronautics Computing Technique Research Institute of AVIC
Original Assignee
Xian Aeronautics Computing Technique Research Institute of AVIC
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 Xian Aeronautics Computing Technique Research Institute of AVIC filed Critical Xian Aeronautics Computing Technique Research Institute of AVIC
Priority to CN201711292568.5A priority Critical patent/CN108255591B/zh
Publication of CN108255591A publication Critical patent/CN108255591A/zh
Application granted granted Critical
Publication of CN108255591B publication Critical patent/CN108255591B/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0793Remedial or corrective actions
    • 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/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/481Exception 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分区异常处理任务激活,此任务随后从消息缓冲中获取异常上下文信息,然后修改异常现场的程序计数器为客户OS异常处理程序单元的入口,并修改异常现场的参数寄存器为异常上下文地址;
步骤8:客户OS分区异常处理任务再次阻塞在IPC接收操作中,并让出执行权,此时将通过OS的任务调度和切换,进入客户OS异常处理程序单元的执行入口,进入客户OS自身的异常处理;
步骤9:客户OS异常处理程序单元开始进行用户级异常处理;如果在处理中挂起了发生异常的客户OS任务,转向步骤10;如果发生异常的客户OS任务没有被挂起,转向步骤11;
步骤10:执行客户OS内部重调度,切换至客户OS调度机制选择的新的客户OS任务,执行完毕;
步骤11:利用软中断陷入内核,执行内核的软中断处理流程,通过内核所保留的异常上下文和RFI指令恢复到异常发生点继续执行,执行完毕。
CN201711292568.5A 2017-12-07 2017-12-07 一种分区操作***的统一异常处理方法 Active CN108255591B (zh)

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 CN108255591A (zh) 2018-07-06
CN108255591B true 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)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109542610B (zh) * 2018-12-04 2023-06-30 中国航空工业集团公司西安航空计算技术研究所 一种多分区操作***虚中断标准组件实现方法
CN112799776B (zh) * 2020-12-31 2022-03-25 科东(广州)软件科技有限公司 多分区操作***监控方法、装置、计算设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
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 杭州字节信息技术有限公司 一种嵌入式分区映像安全认证及内核可信引导方法及其设备
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 中国航空工业集团公司西安飞行自动控制研究所 一种基于虚拟中断的故障监控处理装置与方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150261952A1 (en) * 2014-03-13 2015-09-17 Unisys Corporation Service partition virtualization system and method having a secure platform

Patent Citations (8)

* Cited by examiner, † Cited by third party
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 杭州字节信息技术有限公司 一种嵌入式分区映像安全认证及内核可信引导方法及其设备
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)

* Cited by examiner, † Cited by third party
Title
一种微内核分区操作***C 库的适配验证方法;郝继锋等;《航空计算技术》;20170531;全文 *

Also Published As

Publication number Publication date
CN108255591A (zh) 2018-07-06

Similar Documents

Publication Publication Date Title
US10678550B2 (en) Capturing snapshots of offload applications on many-core coprocessors
EP2423808B1 (en) Arithmetic device
US7810083B2 (en) Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
JP5160176B2 (ja) 仮想マシンのための多数コンフィギュレーションによる通信管理のためのシステム、方法、およびプログラム
US9170803B2 (en) Runtime patching of an operating system (OS) without stopping execution
KR100940335B1 (ko) 멀티프로세서에서 복수의 인스트럭션 스트림/복수의 데이터 스트림 확장을 인에이블링하는 방법, 시스템 및 기계-판독 가능한 매체
CN103473135B (zh) 虚拟化环境下自旋锁lhp现象的处理方法
JPS62163149A (ja) マルチプロセッサ仮想計算機システム
JP2007102781A5 (zh)
CN108196946B (zh) 一种微内核操作***的分区多核方法
EP2718867A2 (en) System and method for virtual partition monitoring
EP1817663A2 (en) Hardware multithreading systems and methods
EP0943996A2 (en) Processor having real-time execution control for debug functions without a debug monitor
CN102713847A (zh) 处理器内核的监管程序隔离
US9152426B2 (en) Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register
CN108255591B (zh) 一种分区操作***的统一异常处理方法
JP2003523561A (ja) 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法
CN106155803B (zh) 一种基于信号量的线程池共享方法及***
CN103699428A (zh) 一种虚拟网卡中断亲和性绑定的方法和计算机设备
US20100083261A1 (en) Intelligent context migration for user mode scheduling
US10055234B1 (en) Switching CPU execution path during firmware execution using a system management mode
CN106339257B (zh) 使客户机操作***轻量化的方法及***和虚拟化操作***
WO2018040845A1 (zh) 一种计算资源调度方法及装置
CN113535362A (zh) 一种分布式调度***架构和微服务工作流调度方法
JP2014509767A (ja) オペレーティング・システムを実行するプロセッサ・コアの動的割当

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