【毕业学位论文】(Word原稿)“和欣”操作系统跨平台虚拟机研究与实现-计算机软件与理论_第1页
【毕业学位论文】(Word原稿)“和欣”操作系统跨平台虚拟机研究与实现-计算机软件与理论_第2页
【毕业学位论文】(Word原稿)“和欣”操作系统跨平台虚拟机研究与实现-计算机软件与理论_第3页
【毕业学位论文】(Word原稿)“和欣”操作系统跨平台虚拟机研究与实现-计算机软件与理论_第4页
【毕业学位论文】(Word原稿)“和欣”操作系统跨平台虚拟机研究与实现-计算机软件与理论_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

保密 2年 申请同济 大学工学 硕 士学位论文 二七 年 一 月 “和欣”操作系统 跨平台虚拟机研究与实现 ( 国家 863 计划资助项目 编号: 2001 培养单位: 电子信息与工程学院 一级学科: 计算机科学与技术 二级学科: 计算机软件与理论 研 究 生: 郑锟 指导教师: 陈榕 教授 副 指导教师 :顾伟楠 教授 保密 2 年 A in 2007 by 63 “和欣”操作系统 跨平台虚拟机研究与实现 学位论文版权使用授权书 本人完全了解同济大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送 交论文的复印件和电子版;在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名: 年 月 日 同济大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方 式标明。本学位论文原创性声明的法律责任由本人承担。 学位论文作者签名: 年 月 日摘要 I 摘要 本课题基于“和欣”操作系统 ( ,目的是在 其它操作系统上实现 与 “和欣”操作系统具有相同语义的跨平台虚拟机 ( 。 课题的主要难点有三个方面:一是如何屏蔽不同操作系统之间的差异;二是如何在其它操作系统上做到“和欣”应用程序的加载;三是如何在其它操作系统上实现“和欣”操作 系统的内核对象。 针对第一个问题,本文研究了两个主流操作系统 心语义,分析了它们与“和欣”操作系统 对应关系,从而提出了平台适配层 ( 的概念,较好地解决了跨平台的问题。针对第二个问题,本文研究了“和欣”操作系统应用程序所采用的 件格式的细节,研究了目标操作系统采用的进程地址空间策略 和对虚拟 内存 的支持 ,在 实现了一个完全功能的 执行程序加载器。 针对第三个问题,本文 研究了“和欣”内核对象的语义,随着研究的不同阶段,在 ,分别采用共享内存、 服务进程和伪驱动三种方式,在用户态和内核态分别实现了“和欣”内核对象。本文针对这三种方式的优缺点进行了分析和讨论。 本课题在进行中参考和对比了几个成熟的虚拟机实现,从而加快了工作的进度。 最后,本文完成了课题的既定计划,实现了“和欣”操作系统 跨平台虚拟机 的原型开发。目前,该项目已由上海科泰世纪有限公司进行工程化开发。 关键 词: 和欣 操作系统, 虚拟机 , 跨平台技术 , 内核对象 , 件格式 I is of to a To is to on is to a PE on do E is to To it is to a AL is by To E to be A PE is by To it is to in of in To to In A PE 录 录 第 1 章 引言 . 1 题的目的和意义 . 1 拟机技术的分类和研究现状 . 1 文的组织和结构 . 4 第 2 章 相关内容的分析和讨论 . 5 “和欣”操作系统 . 5 程与线程 . 5 步机制 . 7 执行程序格式 . 9 它 . 9 E 可执行文件 . 9 E 文件格式 . 9 E 文件的加载 . 11 和欣”操作系统内核对象 . 11 程对象 . 11 程对象 . 12 步对象 . 12 第 3 章 总体设计 . 16 层的设计 . 16 台适配层 . 17 拟层 . 18 动与服务 ( . 18 第 4 章 平台适配层和内核对象的设计与实现 . 19 目录 接口设计及其实现 . 19 本数据类型 . 19 本宏定义 . 21 误处理 . 21 柄管理 . 23 程管理 . 23 程管理 . 27 程局部存储 . 30 块加载 . 31 子操作 . 34 步 . 35 符集转换 . 39 件目录操作 . 40 件内存映射 . 41 统信息函数 . 42 行时帮助函数 . 44 执行模块的加载与释放 . 49 执行模块管理 . 49 E 文件的加载 . 51 件的加载 . 52 块的释放 . 53 别的处理 . 53 核对象的实现算法 . 53 核对象的管理 . 54 柄管理 . 55 象同步算法 . 56 同实现技术与对比 . 58 享内存 方式 . 59 务进程方式 . 59 目录 V 驱动方式 . 59 种实现方式的分析和对比 . 60 第 5 章 拟层和 的实现 . 62 拟层 . 62 程的实现 . 62 程的实现 . 64 步对象的实现 . 66 . 68 件系统服务的实现 . 68 卡驱动的实现 . 68 标驱动的实现 . 69 第 6 章 总结和展望 . 70 致谢 . 71 参考文献 . 72 附录 A 件 . 73 第 1 章 引言 1 第 1章 引言 课题的目的和意义 本课题基于“和欣”操作系统( 6,目的是在 欣”操作系统具有相同语义的跨平台虚拟机( “和欣”操作系统 是基于 务计算模型的操作系统 。基于 务计算模型的 操作系统根据不同安全、运营、用户需求,动态控制应用软件, 着不同 务 加载,用户对应用软件,具有“无限选择” 。基于 务计算模型的 操作系统 必须有一套完善的基于构件的编程模型与之对应。在“和欣”操作系统中,就是 件编程模型。 , 即 有“零件”的意思; “部件”、“组装”的意思,所以从字面上理解, 是在运行时对软件构件进行组装并最终完成预计功能的一种软件技术。 技术类似,都是基于构件编程的技术。但 是, 有使用 采用的中间代码的形式,而是在内部采用了C/C+来实现,直接生成机器代码。 这样的实现策略使得 件系统的运行效率非常高,特别适用于现在具有巨大市场价值的嵌入式市场。 但是,直接采用机器码,也带来了跨平台运行的问题。本课题,就是要在一定程度上解决 在嵌入式领域,特别是 3G 智能手机领域,已经有一些构件系统的应用,如智能手机上的 本,可是,目前这些应用的效率大多数都不能令人满意。因此 ,研究 件的跨平台技术,有助于推广 件编程模型, 从而 ,在 不影响 功能的前提下,提高嵌入式软件的运行效率。 虚拟机技术的 分类和 研究现状 要使 件能够跨平台运行 ,就必须在不同的平台上为 件编程模型提供其运行基础,类似于 的虚拟机,这里,就是 作第 1 章 引言 2 系统环境,即 作系统虚拟机 虚拟机就是 一个抽象的计算机 , 它 是在一台计算机上模拟另一种计算机的环境的技术。虚拟机是软件跨平台运行的重要手段。根据具体需要的不同,虚拟机的实现技术也分若干种。 下面 对这些技术做一个简要的介绍。 一、 硬件级的虚拟机 硬件 级的虚拟机是指在一种指令集的计算机上模拟另一种或相同指令集的计算机。这种虚拟机是基于 令集和计算机各种设备的完全模拟。对于在虚拟机上运行的软件(如操作系统)来说,软件根本意识不到它们是运行在一台虚拟机上。因此,这种虚拟机的模拟程度最好,但是效率也最低。它主要用来 运行一个 完整的 操作系统,或者在对操作系统和其上运行的应用程序调试开发时使用。 比较成熟的硬件级虚拟机有 86 虚拟机, 拟机,C 虚拟机和 拟机等。 硬件级的虚拟机在实现 上 也有软件 解释执行和即时编译执行等不同的技术。而且,不同的实现技术也有不同的优缺点,这里就不展开讨论了。 二、 半虚拟化虚拟机 半虚拟化虚拟机的主要目的是在同一台计算机上运行多个不同的操作系统,同时,还希望能保持运行的高效率。半虚拟化虚拟机在裸机上搭建了一个用来管理 物理 内存和其它硬件设备的虚拟层,它再将其上运行的操作系统隔离起来。对于其上运行的操作系统,都认为自己是运行在一台独立的计算机上。当然,对于操作系统来说,半虚拟机是一台新的“机器”,因此,它们必须针对这台“机器”进行移植才能在其上运行。 目前,半虚拟化虚 拟机还处在研究阶段,具有代表性的成果就是英国牛津大学的 拟机项目。 三、 中间代码的虚拟机 基于中间代码的虚拟机是目前运用最多的虚拟机 。比如 拟机和 为这种虚拟机运行特殊的中间代码,因此,它们不受实际计算机指令集和操作系统的影响,同样的程序可以运行在不同的计算机环境中。当然,前提就是该计算机环境安装了相应的虚拟机。由于中间代码是解释执行的,所以,通常基于中间代码的虚拟机的执行效率都比较差。为了解决这个问题,人们提出了即时编译等优化措施,这对基于中间代码的虚拟机的执行效率有了较大的 提高。 目前,在基于 应用和企业计算中,基于中间代码的虚拟机已经有了大量成功的应用。但是在近几年兴起的嵌入式浪潮中,这种虚拟机的第 1 章 引言 3 效率却不能让人满意。 四、 基于软件 虚拟机 在一些特定的应用环境中 ,我们并不需要完全硬件级的虚拟环境,比如,我们并不想在我们的应用中运行任意的操作系统,而只 是 希望为我们的应用软件提供一个有效的运行环境。 而通常的应用软件都是使用系 统提供的一些 不是直接依赖于硬件,如 图 1 所示。 图 1 硬件、操作系统和应用软件 因此,在这个理论前提下产生了一些基于软件 虚拟机。比如, 拟机 是其中较为成功的。与一些运行时库 (如不同的是,这种虚拟机可以直接运行二进制程序,而不用 对应用程序的源代码进行 重新编译。这就使得使用相同 令集的应用程序能够最大限度的跨平台运行。 基于软件 虚拟机是所有虚拟机中运行效率最高的,当然,它也有一个显著的缺点,就是不能跨 越 不同的 令集。 表 1 对不同类型的虚拟机进行了比较。 综合对不同虚拟机实现技术的比较,根据课题的需求,即为 件运行平台,提供高效率的虚拟操作系统环境。最终,我们选择了基于软件 虚拟机实现技术。 硬件 操作系统 应用软件 第 1 章 引言 4 表 1 不同类型虚拟机的比较 类型 跨平台支持 与宿主操作系统通讯 提供软件 用 类型 效率 硬件级的虚拟机 指令集 /操作系统 虚拟网络 否 开发 /运行操作系统 低 半虚拟化虚拟机 无 无 是 开发 /运行操作系统 较高 中间代码的虚拟机 指令集 /操作系统 开发 /运行应用程序 较低 基于软件 操作系统 开发 /运行应用程序 高 论文的组织和结构 接下来 ,本文 的 内容 都是围绕 设计和实现细节 而展开的 。 第二章介绍了和 关的一些内容。首先 , 介绍了 欣”操作系统的一些内容,通过对这些内容的分析,对平台适配层进行了设计。 接着, 我们介绍了 执行文件 格式 ,以此为基础,在 作系统上实现一个完全功能的 执行程序加载器。 最后,介绍了“和欣”操作系统的内核对象的语义。 第三章从工程方面介绍了 总体设计。 分层设计的,在这一章里, 描述 了 个子层之间的关系以及它们的大致内容。 第四章详细论述了平台适配层 “和欣”内核对象的设计与实现。这两部分是 核心。在这一章里介绍了三种实现方式 : 共享内存方式,服务进程方式和伪驱动方式,并对它们各自的优缺点进行了讨论。 第五章详细论述了 拟层和 。 这两层是 “和欣”操作系统 应用程序 的接口。 第 六章对课题进行了总结,分析了仍然存在的问题,并对 发展做了展望。 最后,列出的是本文的一些参考文献和资料。 第 2 章 相关内容的分析和讨论 5 第 2章 相关内容的分析和讨论 “和欣”操作系统 作系统是 个人计算机和小型服务器领域内最通用的两个计算机操作系统。它们都是 32 位的操作系统系统,具有多进程,多线程,多优先级调度,虚拟储存管理的特点。 “和欣”操作系统 以 嵌入式设备,特别是3G 智能手机为目标,构建在 32 位带有内存管理单元( 嵌入式处理器之上。 “和欣”操作系统同样是具有多进程, 多线程,多优先级调度,虚拟储存管理的特 点 ,同时它针对嵌入式应用进行了 设计,支持优先级抢占,软实时调度等特点。 对于应用程序,“和欣”操作系统支持与桌面操作系统同样 丰富的 功能。 进程 与线程 在 作系统 47中,进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。 另一个是地址空间,它包含所有可执行模块或 块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。 进程是不 活泼的。若要使进程完成某项操作,它必须拥有一个在它的环境中运行的线程,该线程负责执行包含在进程的地址空间中的代码。实际上,单个进程可能包含若干个线程,所有这些线程都“同时”执行进程地址空间中的代码。为此,每个线程都有它自己的一组 C P U 寄存器和它自己的堆栈。每个进程至少拥有一个线程,来执行进程的地址空间中的代码。如果没有线程来执行进程的地址空间中的代码,那么进程就没有存在的理由了,系统就将自动撤消该进程和它的地址空间。 同样,线程也是由两个部分组成的: 一个是线程的内核对象,操作系统用它来对线程实施管 理。内核对象也第 2 章 相关内容的分析和讨论 6 是系统用来存放线程统计信息的地方。 另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量。 在早期的 作系统和其 它 一些 作系统中,并不存在内核支持的线程,线程是由用户态的库函数提供的。 在 后 2,内核中添加了轻量级进程的概念。 轻量级进程在功能上与线程的功能类似,目前, 统上的一些线程库也是用轻量级进程实现的。 图 2是线程与轻量级进程的区别。 图 2 线程和轻量级进程 从图中可以看出 , 线程属于某个进程,进程拥有地址空间和文件表等资源,属于同一个进程的线程共享这些资源。 轻量级进程直接引用它们自己的地址空间和文件表,但是,两个轻量级进程可以同时引用相同的地址空间和文件表 ,这时,这两个 轻量级进程实际上就相当于同一个进程内的两个线程 ,如图中的轻量级进程一 和轻量级进程二。 在 统中,可以用轻量级进程模拟出线程。 “和欣”操作系统中的进程与线程概念与 常相似,只不过“和欣 ”操作系统的 基于构件的,因此,用户是通过 口访问进程和线程对象的。 进程 线程一 线程二 线程三 地址空间 文件表 轻量级进程一 轻量级进程二 轻量级进程三 地址空间 1 文件表 1 地址空间 2 文件表 2 第 2 章 相关内容的分析和讨论 7 同步机制 同步机制非常丰富,有信号量( 对象 、事件( 象 和互斥( 对象 以及关键代码段( 等 。 前 三种同步对象都能够进行进程间的同步 ,关键代码段则属于用户方式对象,它只能进行一个 进程内线程之间的同步。 关键代码段是指一个小代码段,在代码能够执行前,它必须独占对某些共享资源的访问权。这是让若干行代码能够“以原子操作方式”来使用资源的一种方法。所谓 原子操作方式,是指该代码知道没有别的线程要访问该资源。当然,系统仍然能够抑制你的线程的运行,而抢先安排其 它 线程的运行。不过,在线程退出关键代码段之前,系统将不给想要访问相同资源的其它任何线程进行调度。 信号量 对象 用于对资源进行计数。它包含两个带符号的 32 位值,一个是最大资源数量,一个是当前资源数量。最大资源数量用于标识 信号量 对象 能够控制的资源的最大数量,而当前资源数量则用于标识当前可以使用的资源的数量。信号量 对象 的使用规则如下: 如果当前资源的数量大于 0,则发出 信号。 如果当前资源数量是 0,则不发出 信号。 系统决不允许当前资源的数量为负值。 当前资源数量决不能大于最大资源数量。 事件 对象 包含一个用于指明该事件是个自动重置的事件还是一个人工重置的事件的布尔值,另一个用于指明该事件处于已通知状态还是未通知状态的布尔值。 事件对象 能够通知一个操作已经完成。有两种不同类型的事件对象。一种是人工重置的事件,另一种是自动重置的事件。当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程。当一个自动重置的事件得到通知时,等待该事件的线程中只有一个线程变为可调度线程。 互斥对象 能够确保线程拥有对单个资 源的互斥访问权。 互斥对象 包含一个使用数量,一个线程 一个递归计数器。 互斥对象 的行为特性与关键代码段( 相同,但是互斥对象属于内核对象,而关键代码段则属于用户方式对象。这意味着互斥对象的运行速度比关键代码段要慢。但是这也意味着不同进程中的多个线程能够访问单个互斥对象,并且这意味着线程在等待访第 2 章 相关内容的分析和讨论 8 问资源时可以设定一个超时值。 于标识系统中的哪个线程当前拥有互斥对象,递归计数器用于指明该线程拥有互斥对象的次数。互斥对象有许多用途,属于最常用的内核对象之一。通常来说,它们用于保护 由多个线程访问的内存块。如果多个线程要同时访问内存块,内存块中的数据就可能遭到破坏。互斥对象能够保证访问内存块的任何线程拥有对该内存块的独占访问权,这样就能够保证数据的完整性。互斥对象的使用规则如下: 如果线程 0(这是个无效 互斥对象不被任何线程所拥有,并且发出该互斥对象的通知信号。 如果 个非 0 数字,那么一个线程就拥有互斥对象,并且不发出该互斥对象的通知信号。 与所有其 它 内核对象不同, 互斥对象在操作系统中拥有特殊的代码,允许它们违反正常的规则 :系统要查看试图获取互斥对象的线程 的 否与互斥对象中记录的线程 同。如果两个线程 同,即使互斥对象处于未通知状态,系统也允许该线程保持可调度状态。 作系统的同步对象相对要少一些,最常用的是信号量( 核不提供事件( 象和互斥( 象。 的一些线程函数库,如 程库提供 对象,但这些实现中的 都只能在进程内部工作 ,不能跨越不同地址空间的进程。 “和欣”中的同步对象与 似,语义也基本相同,这主要是因为在设计“和欣” 操作系统时,考虑到 作系统的普及程度,因此,尽量在功能上保持与 近。 但是,“和欣”操作系统还添加了两个同步对象:条件变量( 象和读写锁( 象。 在 节 , 将对“和欣”操作系统的内核对象进行详细介绍。 因为“和欣”操作系统与 作系统语义和功能上的接近, 所以 在实现 的平台适配层( ,非常的简单。在 基础上,才进一步搭建了具 有构件语义的 拟层,而这一层以 基础,在 是一样的,甚至是二进制兼容的。 因此,在本文之后介绍设计和实现细节时,主要是在 统上展开的。 第 2 章 相关内容的分析和讨论 9 可执行程序格式 “和欣”操作系统与 作系统一样,采用了 式的可执行文件。 式文件的特点是功能强大并且结构简单。它能够支持动态链接库 的 概念。我们将在下一节进行详细介绍。 作系统支持多种文件格式,如 式、 式等。并且, 统支持对可执行文件格式支持的扩展。为了以二进制兼容的方式运行“和欣”操作系统的应用程序 ,本文在 实现了一个完全功能的 式加载器,将在后文中对其进行详细讨论和介绍。 其它 还有许多其它方面的功能,如字符集转换,系统时间获取,系统内存获取等,虽然在每个操作系统上的接口细节不同,但都有 相似功能的 我们实现 ,用平台适配层( 这些 行了封装。 在后文论述 能看到相关的讨论。 执行文件 件 格式 件格式 ( 是从 T 入的一种新可执行文件格式。 件格式在制定过程中主要参照了 作系统所通用的范,同时为了保证与旧版本 作系统的兼容, 常见的 部,因此 件最开始的两个字符是 不是 件被称为是可移植的,并非是指 式的可执行文件可以在不同的平台(如 等)上执行,而是指不同平台上加载该 件的加 载器无需经过完全重写就可以达到加载 件的目的。 件格式被组织为一个线性的数据流,它由一个 部开始,接着是一个 实 模式的程序残余以及一个 件标志, 之后紧接着 件头和可选头部。这些之后是节表 , 节 头 表 之后跟随着所有的 节 实体。我将所有这些第 2 章 相关内容的分析和讨论 10 成分列于 图 3。 图 3 件结构 的存在主要是为了兼容 作系统, 和实模式程序 残余 实际上是一个完整的 序,在 作系统中运行时,它会输出“ be OS 。 在 32 位的 作系统中执行时,操作系统会跳过这两个 部 分,去执行有效的 32 位代码段。 接下来的 件头,说明了一些该 件的信息,包括这个二进制程序可以在什么机器上运行 ,它有多少个节, 链接 的时间,是一个动态链接库( 是可执行程序等等。 在可执行文件(包

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论