0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

对虚拟化操作系统进行实时性调度的解决方案介绍

电子设计 来源:郭婷 作者:电子设计 2019-04-25 08:10 次阅读

引言

目前,虚拟化操作系统(hypervisor)广泛应用于服务器、PC机等,这些应用领域对实时性要求较低。随着一些嵌入式实时应用领域的发展,比如下一代手机对安全性、应用聚合和云计算等方面的需求,需要采用虚拟化操作系统。传统的虚拟化操作系统很难满足这些应用领域的实时性要求。经过大量的测试与分析,发现虚拟化操作系统实时性差的主要源头之一是调度算法实时性不佳。有必要对虚拟化操作系统的调度方法进行实时性改造,使之可以应用于实时性要求较高的场合。本文提出了一种基于系统事件驱动和时间驱动相结合的实时调度方法,经实践表明,该方法有效地解决了虚拟化操作系统在嵌入式系统应用中带来的实时性问题。

1 问题提出

基于虚拟化操作系统(hypervisor),可以实现单CPU上多个操作系统(GuestOS)在相互隔离的内存域(Domain)中同时运行。如图1所示,箭头表示调度。其中的系统调度采用二级调度策略,虚拟化操作系统对GuestOS(Domain)进行第一级调度,GuestOS对自身的任务进行第二级调度,系统的实时性响应很难保证。

对虚拟化操作系统进行实时性调度的解决方案介绍

图1 虚拟化操作系统

对于第一级调度(Domain调度),传统的调度策略都是基于时间片的调度方法(SEDF、BVT、ARR、Credit等),通常应用于实时性要求较低的场合(网络服务器等),对于实时性要求较高的场合(手机等),调度的实时性就很难满足系统要求。具体表现为:CPU利用率低、中断响应缓慢、GuestOS之间数据通信速率不足等。为了改进这些性能,必须设计一种新的满足实时性应用场合的调度方法。根据实际测试和分析,发现实时性响应差的主要瓶颈在于GuestOS不能够得到及时的调度。

本文的方法主要对第一级调度策略进行改造,即改造虚拟化操作系统对GuestOS(Domain)的调度方法。

2 解决方法

本文的方法采用系统实时事件驱动Domain调度器的策略。当系统中有需要实时响应的紧急或重要事件发生时,这些事件有机会驱动Domain调度器产生调度行为,使之(紧急或重要事件)得到快速处理。当没有紧急或重要事件发生时,Domain调度器采用基于时间片(权重)的调度算法。

2.1 调度原则

图2表示了调度原则。图2中,系统硬件中断、GuestOS事件发送、Guest Idle之类的紧急或重要事件发生时,有机会通过强原则去驱动Domain调度器,切换Domain使之得到快速处理。当系统中没有紧急或重要事件发生时,Domain调度器通过弱原则进行调度(时间片等)。

对虚拟化操作系统进行实时性调度的解决方案介绍

图2 调度原则

2.2 实时性分析

以中断处理为例分析中断响应时间,如图3所示。从图3中可以看到,原调度策略的中断响应时间包含:“等待Domain调度时间片结束” + “Doamin切换”。新的调度策略,仅包含“Doamin切换”时间。可见,采用新的策略,中断的实时性响应得到了提高。

对虚拟化操作系统进行实时性调度的解决方案介绍

图3 中断实时响应分析

虚拟操作系统应用中常会有以下3类事件的实时响应需要考虑:

0类事件--底层硬件中断需要得到上层某个Domain的快速响应处理;

1类事件--Domain(GuestOS)之间的通信事件需要被另一个Doamin快速处理;

2 类事件--Domain(GuetOS)中的任务空闲时,主动放弃CPU,通知Domain调度器使其他Domain(GuestOS)得到运行机会。

这些事件的实时性响应时间分析和中断响应类似。

在本方法中,如图4所示,上述的3类事件都以设置触发事件的形式驱动Domain调度器,Domain调度器可以根据这些事件组合、当前的GuestOS状态组合、当前的Domain调度状态来产生调度决策。

2.3 方法实施

2.3.1 事件定义

本方法具体实现时,根据实时系统的具体应用情况,首先定义出紧急/重要事件(需要引发调度才能满足实时响应要求的事件),并按照2.2节所述的3类实时事件划分,对其分类并设计优先级排序。0类事件优先级最高,1类事件优先级居中,2类事件优先级最低,每类事件自身也按照优先级排序。

2.3.2 状态定义

然后,根据系统设计和运行情况列出Domain状态组合、GuestOS状态组合,如表1、表2所列。最后,根据系统运行要求,设计出驱动事件调度查询表,如表3所列。

表1给出了GuestOS运行状态组合,表示每个guestOS中的任务运行情况。每个GuestOS可以处于Run或Idle两个状态,多个GuestOS的状态组合起来(本文用2个GuestOS说明),就可以制作出GuestOS的状态组合表。

表1 GuestOS状态组合

对虚拟化操作系统进行实时性调度的解决方案介绍

对虚拟化操作系统进行实时性调度的解决方案介绍

图4 基于事件驱动的实时调度方法

表2 Domain状态组合

对虚拟化操作系统进行实时性调度的解决方案介绍

表2表示了Domain状态组合。表示Domain调度器的调度情况,每个Domain可以处于Run或Ready两个状态,多个Domain的状态组合起来(本文采用2个Domain),就可以制作出Doamin的状态组合表。

表3 调度查询表

对虚拟化操作系统进行实时性调度的解决方案介绍

表3是调度查询表。调度触发事件可以通过它查询到下一个需要被调度运行的GuestOS.它是一个二维的数组,其中列的维度由调度触发事件表示,优先级从高向低排列,另一个行的维度由GuestOS状态组合表示,包含表1的所有GuestOS状态组合。通过这两个维度的输入,可以查询到预期的需要被调度的GuestOS(Domain),作为调度器下一次调度决策的输入。

2.3.3 事件置位与清除规则

2.2节图4中表示了调度事件置位和清除规则,说明了3种类型的调度触发事件是如何设置和清除的。

事件置位和清除规则时序如图5所示。图5表示了3种类型的调度触发事件的设置和清除时机,以及事件驱动策略和时间片驱动策略的切换时机,其中S_timer的关闭/打开分别表示开始事件驱动调度/开始时间片驱动调度。图中有5种事件置位/清除操作,其中虚线箭头表示的5种操作是在GuestOS中进行的,需要采用超级调用(hypercall)实现,其中的硬件中断事件置位操作(实线箭头)是在虚拟化操作系统特权空间中进行的,可以直接操作。

2.3.4 事件优先级处理策略

当调度触发事件到来时,首先设置事件标识位,然后去检查各类事件组中的标识位。如果有更高优先级的事件存在,返回;如果没有,再检查自己是否是第一个触发事件。如果是,关闭时间片驱动调度策略,开始事件驱动调度策略 (关闭S_timer),然后去查询事件驱动调度表,对比当前Domain判断是否需要产生调度。

当调度触发事件响应处理完成后,需要调用hypercall清除,清除该事件的标识位后,要先去检查一下是否有比自己优先级低的事件存在。如果有,就去处理它,查询事件驱动调度表,判断是否需要产生新的调度;如果没有比自己优先级低的事件的存在,表示事件组中没有其他事件存在了,启动事件片调度策略,结束事件驱动调度策略 (打开S_timer)。

对虚拟化操作系统进行实时性调度的解决方案介绍

图5 事件置位和清除规则时序图

3 测试结果与分析

3.1 测试结果

硬件测试环境:ARM926EJS、主频226 MHz、64 MB SDRAM、I/D Cache 16 KB/16 KB enable、MMU enable.软件平台:自研虚拟化操作系统(基于Xen)、Threadx、Linux(参考图1)。测试软件采用LMBench,以及根据实际应用场景设计的大量测试用例。

对本文提出的调度方法和常用的BVT调度算法进行对比测试,测试结果表明系统的实时性响应和系统的运行性能都有较大幅度的提升。根据对大量测试数据的统计,得到以下3个结果:

① GuestOS系统运行性能的平均加速比为:threadx 1.82,Linux 1.94.

② 中断响应加速比为:单个GuestOS运行时为8474,两个GuestOS同时运行时为15.6015.且响应时间平稳,有良好的可预测性。

③ GuestOS之间的数据通信速度加速比为12.51,且速率稳定。

3.2 测试分析

经过实践应用表明,本文提出的方法有效地解决了虚拟化操作系统传统调度方法带来的CPU利用率低、中断响应缓慢、操作系统(GuestOS)之间数据通信速度慢等问题。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5082

    文章

    19123

    浏览量

    305132
  • 服务器
    +关注

    关注

    12

    文章

    9160

    浏览量

    85412
  • 操作系统
    +关注

    关注

    37

    文章

    6822

    浏览量

    123331
收藏 人收藏

    评论

    相关推荐

    实时操作系统和分时操作系统的区别

    操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统实时操作系统,分时操作系统按照
    发表于 11-14 17:39 1.3w次阅读

    国内著名的实时操作系统

    嵌入式开发应用解决方案,已成功应用于通信、网络、信息家电等多个应用领域。 (2) Hopen OSHopen OS是凯思集团自主研制开发的实时操作系统,由一个体积很小的内核及一些可以根据需要
    发表于 06-07 14:22

    【安富莱】【RTX操作系统教程】第2章 嵌入式实时操作系统介绍

    第2章嵌入式实时操作系统介绍 本章教程为大家介绍嵌入式实时操作系统基础知识,当前流行的小型嵌入式
    发表于 01-15 15:35

    转:第2章嵌入式实时操作系统介绍

    本章教程为大家介绍嵌入式实时操作系统的基础知识、当前流行的小型嵌入式系统、STM32嵌入式实时操作系统
    发表于 08-19 09:47

    第2章 嵌入式实时操作系统介绍

    本章教程为大家介绍嵌入式实时操作系统基础知识,当前流行的小型嵌入式系统,STM32嵌入式实时操作系统
    发表于 10-01 17:15

    实时操作系统概念

    对很多嵌入式系统来说,一个设计良好的实时操作系统可以让开发工程师把握系统执行任何任务或响应任何关键事件的时间,满足系统
    发表于 07-19 06:18

    如何提高操作系统实时

    分配多级存贮系统的高速部分。  6. 尽量使操作系统简单,甚至定制,为了实时,我们不得不牺牲他的其他功能,也减少用户易用,如去掉图形界面
    发表于 07-08 15:41

    嵌入式Linux操作系统调度算法的相关资料分享

    嵌入式Linux操作系统调度算法研究嵌入式操作系统在互联网时代的今天得到广泛应用。Linux系统本身并不是严格的实时
    发表于 11-05 08:15

    uCOS-II实时操作系统实时操作系统与分时操作系统的区别是什么

    、多任务管理调度、外围资源管理。主要是提供内核,外围很多东西用户自己写。1uCOS-II中的任务操作系统的内核的主要工作就是对任务进行管理和调度。一个任务相当于一个死循环,相当于一个线
    发表于 12-14 06:42

    Linux操作系统实时分析及改进策略

    实时操作系统要求具有速度快和可预测的特点,必须保证实时任务在要求的时间内完成。本文在分析Linux 操作系统的中断方式和进程
    发表于 06-15 10:13 14次下载

    实时操作系统任务调度策略的研究与设计

            实时操作系统调度策略是影响系统实时
    发表于 09-05 09:53 15次下载

    简要介绍操作系统虚拟的概念,以及实现操作系统虚拟的技术

    本文简要介绍操作系统虚拟的概念,并简要阐述了实现操作系统虚拟
    的头像 发表于 01-10 15:00 1.3w次阅读
    简要<b class='flag-5'>介绍</b>了<b class='flag-5'>操作系统</b><b class='flag-5'>虚拟</b><b class='flag-5'>化</b>的概念,以及实现<b class='flag-5'>操作系统</b><b class='flag-5'>虚拟</b><b class='flag-5'>化</b>的技术

    基于Linux上进行改进的具有实时应用能力的现代嵌入式操作系统解决方案详解

    不确定性、缺乏高精度的计时器等问题都是需要解决的,所以在Linux 上进行实时改进,建立具有实时应用能力的操作系统是现代嵌入式操作系统
    发表于 06-27 11:46 901次阅读
    基于Linux上<b class='flag-5'>进行</b>改进的具有<b class='flag-5'>实时</b>应用能力的现代嵌入式<b class='flag-5'>操作系统</b><b class='flag-5'>解决方案</b>详解

    实时操作系统的特点_实时操作系统的组成

    本文主要阐述了实时操作系统的特点及组成。实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理
    发表于 09-01 16:48 5165次阅读

    国产鸿道Intewel操作系统与Codesys高实时虚拟运动控制解决方案

    ,Intewell-Win,Intewell-Lin,Intewell-HyperII等对Codesys的Runtime和SoftMotion进行适配,融合Intewell实时操作系统实时
    的头像 发表于 07-09 15:24 345次阅读
    国产鸿道Intewel<b class='flag-5'>操作系统</b>与Codesys高<b class='flag-5'>实时</b><b class='flag-5'>虚拟</b><b class='flag-5'>化</b>运动控制<b class='flag-5'>解决方案</b>