60、轻量级虚拟化与智能设备用户界面定制技术

轻量级虚拟化与智能设备用户界面定制技术

轻量级虚拟化技术 Gandalf

架构设计

为了在虚拟机监视器(VMM)上执行客户操作系统(guest OSes)并防止其入侵 VMM,控制 guest OSes 的行为至关重要。这可以通过以下两种方式实现:
- 使用 x86 处理器的 4 级环保护架构 :如果 VMM 的特权级别高于 guest OSes,它就能控制 guest OSes。x86 处理器的环保护架构有 4 个不同的特权级别,从 Ring 0 到 Ring 3,Ring 0 特权最高,Ring 3 特权最低。通常 guest OSes 的内核使用 Ring 0,用户进程使用 Ring 3。而 Gandalf 使用 Ring 0 以管理 guest OSes 的行为,因此将 guest OSes 的内核从 Ring 0 改为 Ring 1 运行。
- 采用分段和分页的内存管理架构 :VMM 通过设置 guest OSes 可用内存的限制来管理其对内存的访问。VMM 决定物理内存分区并构建初始映射,还管理 CR3 寄存器中的页目录指针,该指针表示页目录的基地址。

Gandalf 负责为自身和 guest OSes 设置所有内存。它静态地为自身和 guest OSes 划分物理内存,将物理内存的最高部分分配给自己,其余部分分配给 guest OSes。它会更改 guest OSes 可用内存的起始和结束地址,使其与分配的物理内存一致。Gandalf 使用为每个 OS 分配的内存设置第一版页表,并在启动前启用分页。它将自身映射到每个 guest OS 虚拟内存空间的虚拟内存顶部,这种初始映射模拟物理内存,使每个 guest OS 从与物理内存相同的地址开始,减少了 guest OS 的修改。一般 OS 启动时禁用分页,在启动过程中再启用,而 Gandalf 上的 guest OS 启动时就启用分页,使地址看起来与直接在处理器上启动时相同。guest OS 启动运行后,负责大部分内存管理,除了向 CR3 寄存器设置新的页目录指针和处理 Gandalf 中发生的页错误外,还负责页表的管理。

在内存管理方面,guest OS 启动运行后,Gandalf 仅在处理一般保护错误和页错误时被调用。guest OS 尝试执行特权指令会导致一般保护错误,Gandalf 会模拟这些指令。页错误有两种情况:guest OS 引起的页错误由 guest OS 自己处理,Gandalf 只需将控制权交回;Gandalf 处理自身引起的页错误。当 guest OS 尝试向处理器的 CR3 寄存器设置新的页目录指针以更改页表时,会报告一般保护错误,因为写入控制寄存器的指令是特权指令,Gandalf 会响应此错误并适当设置页目录指针。

Gandalf 的实现

基于中虚拟化技术和上述架构设计,实现了名为 Gandalf 的 VMM。通过采用中虚拟化,Gandalf 为 guest OSes 提供了明显轻量级的虚拟环境。它不虚拟化主机的全部能力,减少了 guest OSes 与 Gandalf 之间的交互次数,使 guest OSes 大部分工作无需 Gandalf 干预,从而降低了虚拟化开销。Gandalf 支持多处理器系统。

Gandalf 在第一个 guest OS 启动之前的初始化阶段进行环境设置。初始化模块有两个子模块:
- 设置子模块 :为每个 guest OS 执行。根据多引导信息为 guest OS 创建 E820 内存映射,将 E820 内存映射的起始和结束地址更改为分配给 guest OS 的物理内存地址。复制从引导加载程序传递给 guest OS 内核的参数,由于 guest OS 使用的 E820 内存映射和参数的虚拟地址是固定的静态地址,Gandalf 会将内存映射和参数设置在每个 guest OS 的相同虚拟地址处。此外,还会将每个 guest OS 及其模块重新定位到单独的内存区域。
- SMP 子模块 :仅执行一次。Gandalf 依次唤醒其他处理器,并启动每个处理器来引导分配的 guest OS。为了唤醒其他处理器,Gandalf 会检查 SMP 配置表并向它们发送启动处理器间中断。

guest OS 的修改

为了在 Gandalf 上执行 guest OSes,只需修改其源代码的少量行,成本远低于构建全虚拟化 VMM 或进行半虚拟化时对 guest OSes 的修改。修改主要涉及以下三点:
- 段描述符 :为避免 guest OSes 入侵 Gandalf,将段描述符中的段限制值从 0xfffffffff 改为 0xfc400000,特权级别从 0 改为 1,防止 guest OSes 意外或故意访问 Gandalf 的内存并干扰其处理。
- 特权级别的判断 :guest OS 通常通过对保存的特权级别和 3 进行逻辑与运算来判断执行是在内核模式还是用户模式。但在 Gandalf 上,guest OSes 内核模式的特权级别改为 1,会改变逻辑与运算的结果,导致错误操作。为正确判断执行模式,将判断值从 3 改为 2。示例伪代码如下:

if (regs->xcs & 3) { /* for user mode */ }
  • 内存管理 :guest OS 通常假设物理内存从地址 0x0 开始,而在 Gandalf 上,除一个 OS 外,其他 OS 分配的物理内存起始地址不同。为解决此问题,向 guest OS 添加了一个超级调用,用于向 Gandalf 查询分配的物理内存的实际起始地址,guest OS 使用此地址构建页表、初始化区域大小以及进行物理/虚拟地址转换。

现状与评估

现状

在 x86 处理器上从头开始实现了 Gandalf,并在其上运行了 Linux OS 作为 guest OS。开发时先使用单处理器系统,在单处理器系统上 Gandalf 上的 Linux OS 开始工作后,迁移到双处理器系统。目前有两种配置:单处理器系统上运行单个 Linux OS 作为 guest OS;双处理器系统上运行两个 Linux OS 作为 guest OS。由于双处理器系统配置还不够成熟,定量评估在单处理器系统配置上进行。

定性评估

评估了将 Linux 内核修改后在 Gandalf 上运行的成本。使用的 Linux 内核版本是 2.6.12.3,结果如下表所示:
| 情况 | 修改部分 | 修改行数 |
| ---- | ---- | ---- |
| 单个 Linux OS | 15 部分 | 28 行 |
| 两个 Linux OS | 28 部分 | 73 行 |

结果表明,修改 Linux 源代码的成本非常低。只需修改 15 部分的 28 行代码就足以在 Gandalf 上运行一个 Linux OS,同时运行两个 Linux OS 最多只需修改 28 部分的 73 行代码。相比之下,Xen 使用 Linux OS 作为 guest OS 需要修改 2995 行代码,成本比 Gandalf 高两个数量级。此外,单个 Linux OS 所需的修改比两个 Linux OS 少,因为后者需要处理不同的物理内存起始地址。如果使用内核架构允许物理内存从不同地址开始的其他 OS 作为 guest OS,可能不需要对 Linux 源代码中内存管理部分进行修改,修改成本会更低。这些修改在 Linux 源代码中非常明显的位置进行,虽然是手动修改,但半自动进行必要的修改应该不会太难。

定量评估

在 Dell Precision 470 工作站上,使用 Intel Xeon 2.8GHz CPU 进行定量评估,关闭了超线程,所有测量都在单个 CPU 上进行。
- 基本性能测量 :测量了在 VMM 上运行 guest OS 的基本性能,包括发出超级调用和处理特权指令的成本。测量结果如下表所示:
| 项目 | Xen | Gandalf |
| ---- | ---- | ---- |
| 空超级调用 | 0.43 µ sec | 0.37 µ sec |
| 忽略的特权指令 | N/A | 0.56 µ sec |

结果显示,Xen 和 Gandalf 的超级调用成本非常相似,虽然 Gandalf 处理超级调用稍快,但考虑到程序执行过程中经常出现的其他运行时开销(如缓存未命中),差异可以忽略不计。由于超级调用使用处理器的软件中断机制,软件实现的差异空间相对较小。处理特权指令比处理超级调用涉及更多步骤,包括识别导致异常的指令地址、从该地址获取指令、解码指令和模拟指令。测量使用的是简单的单字节 HLT 指令,不包括模拟成本,处理更长的特权指令时,解码和获取模拟指令所需的时间会更长。
- 基准测试 :运行 lmbench 基准测试套件中的几个程序,将在原始 Linux(无虚拟化)、XenLinux(Dom0)和 Gandalf 上的运行结果进行比较。测量结果表明,使用的中虚拟化方法显著降低了运行时成本,Gandalf 上的 Linux OS 在所有情况下都优于 XenLinux,进程分叉和执行的成本甚至接近原始非虚拟化的 Linux,明显优于 XenLinux。

综上所述,中虚拟化技术是一种实现轻量级虚拟化的新技术,它不需要像全虚拟化那样庞大的 VMM,也不需要像半虚拟化那样对 guest OS 源代码进行大量修改。根据中虚拟化技术实现的轻量级 VMM Gandalf,目前在 x86 处理器上运行良好,两个 Linux OS 可以作为 guest OS 成功运行。修改 Linux 源代码的成本显著降低,性能评估也表明虚拟化成本也有所降低,因此 Gandalf 使虚拟化环境适用于嵌入式和普适设备。

智能设备可定制用户界面框架 Hyrax

背景

智能设备如信息家电和移动设备应便于日常使用,但许多产品的用户界面难以操作。例如,当前的移动电话,用户需要导航复杂的菜单结构才能访问简单功能。为克服这一不便,需要引入更灵活的定制机制,让用户根据个人喜好更轻松、灵活地组织功能。虽然一些先进的移动电话能提供用户偏好的功能,但这些功能的灵活性有限,因此用户界面应更具可定制性和灵活性,以更好地满足个人用户偏好。智能设备的固定菜单结构迫使用户适应每个设备的界面,手机制造商生产的不同类型手机菜单结构不同,用户可能难以适应不同界面。理想情况下,无论用户更换手机的频率如何,菜单结构都应相同,即用户偏好的菜单应具有可移植性。

Hyrax 框架

提出了一种基于超链接关联性的智能设备可定制用户界面框架 Hyrax,旨在在考虑用户偏好的同时改善菜单结构和功能的可访问性。在 Hyrax 中,使用超链接构建和定制用户界面以访问应用程序功能。重点关注手机的用户界面,使用 W3C 定义的 XLink 和 WAP 论坛规范中定义的外部函数接口(EFI)展示手机的可定制菜单结构。

为实现该框架,开发了一个设计工具,用于使用超链接定制用户界面,以及一个运行时环境,用于管理由该工具生成的带有超链接的对象,以评估该框架。

这个框架的优势在于可以让用户根据自己的喜好和使用习惯来定制手机的菜单结构和功能访问方式,提高了使用的便捷性和个性化程度。例如,用户可以将常用的功能通过超链接放在更显眼的位置,方便快速访问。

以下是一个简单的流程图,展示了 Hyrax 框架的基本工作流程:

graph LR
    A[设计工具] --> B[定制用户界面]
    B --> C[超链接关联功能]
    C --> D[运行时环境]
    D --> E[管理对象]
    E --> F[展示定制界面]

通过这种方式,用户可以更方便地使用智能设备,提高工作和生活效率。同时,可定制的用户界面也为设备制造商提供了一种新的竞争优势,能够满足不同用户的多样化需求。

Hyrax 框架的具体实现步骤

设计工具的使用
  1. 创建超链接关联 :在设计工具中,用户可以根据自己的需求为不同的应用程序功能创建超链接。例如,将常用的联系人、短信、浏览器等功能通过超链接关联起来。
  2. 定制菜单结构 :用户可以自由调整菜单的布局和层级结构。比如,将一些不常用的功能隐藏在二级菜单中,而将常用功能放在一级菜单的显眼位置。
  3. 设置个性化参数 :可以设置超链接的样式、颜色、大小等参数,以满足个性化的视觉需求。
运行时环境的管理
  1. 对象加载 :运行时环境会加载设计工具生成的带有超链接的对象。例如,将定制好的菜单结构和功能关联信息加载到内存中。
  2. 超链接解析 :对超链接进行解析,确定其关联的应用程序功能。当用户点击超链接时,能够准确地调用相应的功能。
  3. 界面展示 :根据加载的对象和解析的超链接信息,展示定制后的用户界面。确保用户能够看到符合自己定制需求的界面。

Hyrax 框架的优势分析

提高用户体验
  • 个性化定制 :用户可以根据自己的使用习惯和偏好定制界面,使操作更加便捷。例如,经常使用社交应用的用户可以将社交应用的功能放在界面的显著位置。
  • 简化操作流程 :通过超链接直接关联功能,减少了用户在复杂菜单中导航的时间,提高了操作效率。
降低开发成本
  • 可复用性 :设计工具和运行时环境可以被不同的智能设备和应用程序复用,减少了开发的工作量。
  • 快速迭代 :由于用户可以自行定制界面,开发人员不需要频繁地为不同用户群体开发不同的界面版本,提高了开发效率。

Hyrax 框架与其他用户界面框架的比较

框架 定制性 操作便捷性 开发成本
Hyrax 高,用户可自由定制菜单结构和超链接关联 高,通过超链接直接访问功能 低,具有可复用性和快速迭代优势
传统框架 低,固定的菜单结构和界面布局 低,需要导航复杂的菜单 高,需要为不同用户群体开发不同版本

总结

轻量级虚拟化技术 Gandalf 和智能设备可定制用户界面框架 Hyrax 分别在不同领域展现出了显著的优势。Gandalf 通过中虚拟化技术实现了轻量级的虚拟化,降低了修改 Linux 源代码的成本和虚拟化成本,适用于嵌入式和普适设备。而 Hyrax 框架则为智能设备的用户界面带来了更高的可定制性和操作便捷性,提高了用户体验,同时降低了开发成本。

未来,随着技术的不断发展,这两种技术有望在更多的领域得到应用和推广。例如,Gandalf 可以在物联网设备中实现更高效的资源管理,而 Hyrax 框架可以应用于更多类型的智能设备,如智能手表、智能家居设备等,为用户带来更加个性化和便捷的使用体验。

以下是一个总结两种技术优势的流程图:

graph LR
    A[Gandalf 技术] --> B[轻量级虚拟化]
    B --> C[降低修改成本]
    B --> D[降低虚拟化成本]
    D --> E[适用于嵌入式和普适设备]
    F[Hyrax 框架] --> G[可定制用户界面]
    G --> H[提高用户体验]
    G --> I[降低开发成本]
    I --> J[适用于多种智能设备]

通过对这两种技术的研究和应用,我们可以看到它们为不同领域带来的创新和变革,有望推动相关行业的发展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值