- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
和欣操作系统虚拟化技术的研究与实现
和欣操作系统虚拟化技术的研究与实现
答辩人: 郑锟
导 师: 陈榕
副导师:顾伟楠
2007年3月8日
主要内容
课题的目的和意义
虚拟化技术的分类和研究现状
和欣虚拟化环境
模型结构
平台适配层
和欣模拟层和服务层
课题的目的和意义
在使用相同CPU指令集的前提下,使和欣操作系统的应用程序,包括CAR构件,能够在不同的操作系统之间运行。
有助于推广CAR构件编程模型,从而,在不影响功能的前提下,提高嵌入式软件的开发和运行效率。
虚拟化技术的分类和研究现状
硬件级的虚拟化
半虚拟化虚拟机
中间代码的虚拟机
基于软件API的虚拟化
虚拟化技术的分类和研究现状
硬件级的虚拟化
半虚拟化虚拟机
中间代码的虚拟机
基于软件API的虚拟化
硬件级的虚拟化是用一台宿主计算机仿真另一台目标计算机。
如:
Bochs、VMWare、Virtual PC等。
虚拟化技术的分类和研究现状
硬件级的虚拟化
半虚拟化虚拟机
中间代码的虚拟机
基于软件API的虚拟化
半虚拟化虚拟机的主要目的是在同一台计算机上运行多个操作系统,同时还希望能保持运行的高效率。
如:
XEN虚拟机。
虚拟化技术的分类和研究现状
硬件级的虚拟化
半虚拟化虚拟机
中间代码的虚拟机
基于软件API的虚拟化
执行字节码。
如:
Java、.Net等。
虚拟化技术的分类和研究现状
硬件级的虚拟化
半虚拟化虚拟机
中间代码的虚拟机
基于软件API的虚拟化
基于应用程序编程接口模拟。
如:
WINE虚拟机。
不同类型虚拟化技术的比较
类型
跨平台支持
与宿主操作系统通讯
提供软件API
应用类型
效率
硬件级的仿真
指令集/操作系统
虚拟网络
否
开发/运行操作系统
低
半虚拟化虚拟机
无
无
是
开发/运行操作系统
较高
中间代码的虚拟机
指令集/操作系统
Native API
是
开发/运行应用程序
较低
基于软件API的虚拟化
操作系统
API
是
开发/运行应用程序
高
和欣虚拟化环境
为和欣应用程序提供软件运行环境
推广和欣的CAR构件编成思想
提高和欣应用程序的开发和调试效率
相同CPU指令集下的跨操作系统二进制兼容
综合考虑,采用基于软件API的虚拟化技术
设计时考虑的因素
与和欣操作系统保持语义一致。
在不同操作系统上实现时,不需要做大量重复工作。
充分利用宿主操作系统的功能。
分层的模型
平台适配层
屏蔽底层操作系统差异的中间层
为和欣模拟层的实现提供了最基本的原语
三个部分组成
PAL接口 (类型定义、API函数)
可执行程序加载器 (二进制兼容的基础)
内核对象
PAL接口
基本数据类型 、基本宏定义
错误处理
句柄管理
进程管理
线程管理
线程局部存储
模块加载
原子操作
同步
字符集转换
文件目录操作
文件内存映射
其它(时间函数、C-Runtime)
基本数据类型
关键字
描述
关键字
描述
VOID
空类型
UINT64
无符号64位整数
CHAR
有符号单字节字符类型
BOOL
整数表示的布尔值
SHORT
有符号短整数类型
BYTE
表示一个字节
INT
有符号整数类型
WCHAR
表示一个Unicode字符
LONG
有符号长整数类型
SIZE_T
表示无符号的大小
UCHAR
无符号单字节字符类型
SSIZE_T
表示有符号的大小
USHORT
无符号短整数类型
OFF_T
表示偏移量
UINT
无符号整数类型
UINT_PTR
当用整数表示指针值时使用
ULONG
无符号长整数类型
HANDLE
表示一个句柄值
INT8
有符号8位整数
HMODULE
表示一个加载的模块
INT16
有符号16位整数
LRESULT
表示函数执行成功与否
INT32
有符号32位整数
PALSTATUS
PAL层API运行的结果状态
INT64
有符号64位整数
WSTRING
Unicode字符组成的字符串常量
UINT8
无符号8位整数
ASTRING
多字节字符集(如ASCII、UTF8等)组成的字符串常量
UINT16
无符号16位整数
WSTRING_BUF
Unicode字符串缓存
UINT32
无符号32位整数
ASTRING_BUF
多字节字符集(如ASCII、UTF8等)字符缓存
错误处理
所有的PAL函数都被设计为:当发生错误时,返回一个与-1相等的值。
要想进一步获得错误的信息,可以调用错误处理函数获得具体的错误值。
PAL_FAILED(x) :((ULONG)(x) == (ULONG)-1UL)
HANDLE handle = PALFoo(…);if (PAL_FAILED(handle)) { PAL_print
文档评论(0)