【摘要】 随着电池管理在移动网络物理系统中的重要性不断提高,与电池相关的软件组件变得越来越强大、复杂和容易出错。
为了延长电池寿命,提升用户体验,现代操作系统大多采用低功耗运行模式,根据电池的充放电状态、剩余电量等变化多种系统行为[1]。
此外,为了保护用户和关键系统数据,大多数系统自动将其内存内容保存到永久存储设备,暂停其操作,直到电池系统充电。这被称为冬眠。
随着电池管理在移动网络物理系统中的重要性不断提高,与电池相关的软件组件变得越来越强大、复杂和容易出错。
尽管已经引入了许多用于应用程序开发的调试器和分析器,但用于系统软件开发的工具相对较少;因此,测试和恢复系统软件或设备驱动程序表现出的特定行为仍然是困难的问题。
图1 虚拟化的两种方法[1]。
新兴的虚拟化技术大大减轻了这一困难。通过使目标系统在虚拟机上运行并操纵这些虚拟机,开发人员可以很容易地观察目标系统对硬件状态变化的反应的行为特征。
虚拟化技术可分为I类和II类虚拟化,如图1所示。在I类虚拟化中,VM监视器(VMM)位于裸金属硬件上。虚拟机在VMM上运行,通过VMM访问物理硬件。运行VMM不需要操作系统。
相比之下,类型II虚拟化中的VMM在常规操作系统上运行,后者将VMM视为普通应用程序。虚拟机通过VMM运行,虚拟机的系统访问请求通过VMM到达底层操作系统。操作系统实际上代表虚拟机处理请求。
此外,虚拟化的目标系统使开发人员能够运行多个目标系统,或者同时在单个开发工作站上拥有不同的目标操作系统。在虚拟机中使用硬件组件时,虚拟化平台必须将该硬件组件作为虚拟设备提供给虚拟机使用。
如果开发人员希望他们的虚拟机具有电池子系统,则必须将电池子系统虚拟化并提供给虚拟机。电池虚拟化或仿真的缺乏阻碍了系统软件开发人员测试与电池相关的特性。
更糟糕的是,如果主机系统不是电池供电的,开发人员将无法测试与电池相关的功能。
如图2所示,VirtualBox的ACPI驱动被实现为两个独立的驱动:前端驱动和后端驱动。前端驱动程序嵌入在VM代码中,后端驱动程序位于VMM代码中。前端驱动程序仅仅将I/O请求传输给后端驱动程序,后端驱动程序实际处理主机系统中的请求。客户操作系统的ACPI驱动程序将前端驱动程序识别为标准的ACPI控制器。
图2 Virtual Battery为每个虚拟机提供单独的电池仿真,独立于底层主机ACPI驱动程序[1]。
[1] Woo Y , Park S Y , Seo E .Virtual Battery: A testing tool for power-aware software[J].Journal of Systems Architecture, 2013, 59(9):794-800.
科学指南针已获得检验检测机构资质认定证书(CMA)、实验动物使用许可证、“ISO三体系认证”等专业认证,提供材料测试、高端测试、环境检测、生物服务、模拟计算、科研绘图、数据分析、试剂耗材、行业解决方案、指南针学院等多项科研产品和服务矩阵。企业致力于为高校、科研院所、医院、研发型企业等科研工作者,提供专业、快捷、全方位的检测及科研服务。
免责声明:部分文章整合自网络,因内容庞杂无法联系到全部作者,如有侵权,请联系删除,我们会在第一时间予以答复,万分感谢。