• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 农林牧渔 > 正文

    分区操作系统虚拟化中断处理方法研究

    时间:2020-10-17 08:04:19 来源:达达文档网 本文已影响 达达文档网手机站


    打开文本图片集

    摘 要:综合化航空电子系统进一步提升综合化水平以后,大量新开发与遗产应用希望通过分区操作系统提供的多个分区执行环境集成于同一硬件处理平台,对分区操作系统提出了支持客户OS以继承遗产代码的需求,因而分区操作系统需要为包括裸应用分区和客户OS分区在内的分区运行环境提供中断/中断等硬件机制的虚拟化。本文提供一种分区操作系统的统一中断处理方法,解决分区操作系统以虚拟化方式运行客户OS时需要进行用户级中断处理的问题,解决目前分区操作系统内核直接调用用户挂钩的处理方式所存在的不足。

    关键词:分区操作系统;客户OS;虚拟化中断处理

    中图分类号:TP311 文献标识码:A

    随着航空电子技术的发展,在一个物理处理平台上将集成越来越多,甚至来自于多个机载子系统的软件任务,综合化模块化航空电子系统(Integrated Modular Avionics,简称IMA)进一步提升综合化的水平成为必然发展趋势。目前先进的IMA系统都采用了支持虚拟化客户OS的分区操作系统进行不同程度的应用集成[ 1 ],如何在虚拟化分区执行环境中保持客户OS本身的功能和性能,成为必须关注的问题[ 2 ]。在分区操作系统的分区中搭载客户OS,可以使分区操作系统具备良好的遗产代码继承能力和灵活的综合化集成能力,已经成为目前主流分区操作系统的重要特征。对于可同时配置裸应用分区和客户OS分区的分区操作系统来说,需要提供一套同时支持这两类分区进行用户态中断处理的虚拟化中断处理方法,将物理中断虚拟化后向分区投递,使客户OS有机会接管所关心的中断,并透明的调用自身的用户级中断处理程序进行处理。

    1 概述

    典型的分区操作系统架构[ 3 ]包括多个裸应用分区和客户OS分区。分区向用户提供时间、空间隔离的独立应用运行环境。分区操作系统向分区提供基本内核服务接口,以及处理器、存储器和外围设备的虚拟化支持。为满足用户定时器服务、设备访问服务的需求,需要支持分区级中断处理程序接管外部中断。

    中断处理方法的设计,首先应该能够兼容上述两类分区同时存在时分别需要进行中断处理的需求[ 4 ];其次中断处理方法的设计不应该破坏客户OS原始的中断处理流程,对于客户OS之上的应用应该是透明的;最后,从保证分区操作系统内核的安全可靠性角度出发,上述方法的设计应该尽可能的简单通用,且尽量在分区实現,减少对内核的修改和功能扩展。目前已有的分区操作系统采用内核直接调用用户挂钩的方式来执行用户级中断服务程序,这种方式一方面对内核改动过多,降低了内核可靠性,并引入安全风险;另一方面,直接过程调用的方式增加了内核的处理负担,降低了中断处理的效率。

    2 基于通知槽的任务化虚中断处理方式

    如图1所示,本文所设计的统一中断处理方法以任务的形式进行用户级中断处理,将中断处理的工作分为内核级处理和分区级处理两级,尽量不对内核进行修改和功能扩展,有利于降低内核复杂度,提升内核安全可靠性,提升中断处理的效率。处于特权态的分区操作系统内核首先接管中断,然后使用用户级线程控制块(T_UTCB)中的通知槽向分区投递中断处理通知,既方便的进行了中断信息的投递,又保证了由用户级中断处理任务对中断现场进行全权接管的处理逻辑。

    3 中断处理单元设计

    分区操作系统内核的中断处理单元用于对中断请求进行管理,完成中断接管、中断注册、中断等待和中断通知的功能,以异步通知的方式通知关注当前中断的分区进行用户级中断处理。

    内核以系统调用的方式向分区提供中断注册和中断等待的系统服务,且提供一个中断通知操作以实现在内核处理完成系统级中断处理后唤醒分区中的中断线程,将中断传递给中断线程处理。

    本方法设计了中断请求描述符(T_IrqDesc)这个数据结构来描述一个具体的硬件设备中断请求,在中断请求描述符中主要记录以下数据:中断请求控制器、为中断请求注册的处理线程、中断请求的通知槽、中断请求的等待队列以及用户级中断处理程序的内核副本。

    本方法设计了一个中断等待队列,用于保存系统中用户空间等待中断通知的线程,队列采用双向链表结构,当中断通知槽的值没有发生改变时,需要创建中断请求等待队列;当向用户空间通知中断的发生情况时,需要从中断请求等待队列上唤醒等待线程。

    在内核中断结构中,为每个中断维护一个中断通知队列,如图2所示,用来维护需要投递中断的线程;在线程的用户空间线程控制块(T_UTCB)中维护一个通知槽数组,该数组大小为8,也就是每个线程含有8个通知槽,编号为0~7,通知槽的取值范围0~255。

    以下将针对中断处理的4种功能(中断接管、中断注册、中断等待和中断通知)的设计思想进行详细阐述。

    4 中断接管

    分区操作系统根据裸应用程序或者客户OS对具体硬件物理中断类型是否关注,提供两种中断处理方式:

    1)如果用户没有注册物理中断,则物理中断完全由内核处理;

    2)如果用户注册具体类型的物理中断,内核只做最简单的中断接管工作,然后,把真正的中断交给用户空间注册的任务进行处理。

    分区操作系统目前处理的中断分为三种类型:时钟中断、I/O中断和核间中断。出于不向内核引入冗余代码的设计思想,内核中只对时钟中断进行真正处理,而对于I/O中断(例如,网络中断或者串口中断)在内核中只进行简单的接管,而不进行真正的处理,真正的I/O中断处理由客户OS中注册的中断处理线程进行。

    5 中断注册

    中断注册用于根据输入的中断通知槽号和中断向量号把一个用户空间线程注册为一个中断请求的处理程序。

    每个中断都有中断向量号、中断处理程序、中断线程通知队列。中断线程通知队列包含一个通知队列和等待队列,及注册的线程数量。通知队列上的结点是中断线程结构,该结构包括通知槽号、线程控制块及双向链指针。

    分区中的线程通过系统调用方式,将自己的某个中断通知槽注册到指定中断向量。注册前首先将当前线程的用户空间线程控制块(T_UTCB)空间映射到内核空间中,使得在内核中也能访问该线程的用户空间线程控制块(T_UTCB);然后创建一个中断线程控制块,用当前线程控制块和通知槽号赋值,把它插入到通知队列尾部。

    6 中断等待

    中断线程通知队列中的等待队列挂接的是等待该中断唤醒的线程。当前运行线程通过系统调用方式将自己挂接到等待队列上。

    在挂接到中断等待队列时,首先当前线程需要将自己的用户空间线程控制块(T_UTCB)映射到内核空间,内核空间必须访问线程的用户空间线程控制块(T_UTCB);然后检查当前线程是否在通知队列上,只有在通知队列的线程才能挂接到等待队列中;最后检查线程的用户空间线程控制块(T_UTCB)中的对应编号的通知槽的值是否为0,只中通知槽值为0才能挂接到等待队列中,否则直接返回。

    7 中断通知

    分区操作系统的内核系统级中断处理程序执行完成后,再给分区投递中断通知。中断通知的流程是逐一检查是否可以访问通知队列中线程的用户空间线程控制块(T_UTCB)并更新各用户空间线程控制块(T_UTCB)中对应的通知槽值,然后再以异步方式唤醒等待队列中的所有线程。

    8 完整的中断处理过程

    本方法中完整的中断处理流程分为系统级和用户级两部分来实现。如图3所示。

    当中斷发生后,内核中断处理程序进行必要的处理后,将中断事件通知给用户级中断处理线程,唤醒等待队列中的线程,然后中断返回,由用户级中断处理线程完成后续处理。该两级方式的中断处理模式保证了系统中断响应的及时性,并且可以通过对用户级中断处理线程优先级的配置,灵活的实现中断响应。

    9 结语

    本文深入研究了机载嵌入式分区操作系统在综合化程度提升以后如何向虚拟化的裸应用分区和客户OS分区提供高效、安全的中断处理虚拟化机制的问题,给出了基于通知槽的任务化中断处理方法。通过在某分区实时操作系统中的实现,证实文中涉及的设计和实现方法是有效的,有效缓解了目前已有的挂钩函数处理方式对内核改动过多,降低内核可靠性,并引入安全风险,增加了内核处理负担的问题。在今后的工作中,我们将进一步考虑新型处理器的硬件虚拟化支持,利用硬件虚拟化机制设计更为高效的分区操作系统中断处理方法。

    参考文献:

    [1] 张逢,董耀祖,李少凡,等.系统虚拟化——原理与实现[M].北京:清华大学出版社,2009.

    [2] Heiser G.Hypervisor for Consumer Electronics[C]//Proc.of 2009 Conference on Consumer Communications and Networking.Las Vegas,USA:[s. n.],2009.

    [3] OKL4 Microkernel Reference Manual[R].Open Kernel Labs Inc.,Tech. Rep.OK 10000:2006,2008.

    [4] Heiser G. The Role of Virtualization in Embedded Systems[C]//Proc.of the 1st Workshop on Isolation and Integration in Embedded Systems.Glasgow,UK:[s. n.],2008.

    作者简介:周霆(1984-),男,陕西洋县人,工作于中航工业西安计算技术研究所,主要从事嵌入式实时操作系统方向的研究。

    相关热词搜索: 分区 中断 操作系统 虚拟 方法

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网