Mini-OS现有应用介绍
2012-09-29 10:00
363 查看
IntroductionToMiniosApplications Mini-OS现有应用介绍Mini-OS是跟随Xen hypervisor发布的一款小内核操作系统,目前有一些基于Mini-OS的应用:HP实验室在2007年发布了基于Mini-OS的Xen Library OS;2008年剑桥大学进一步完善了HP的工作,完成了HVM stubdom并置于Xen源码树中;伊利诺伊大学芝加哥分校(UIC)正致力于开发一款基于Mini-OS的小内核系统—Ethos。 Mini-OS 启动简介arch_init()
trap_init()
init_mm()
Xen Library OSXen Library OS的设计与实现开发工具链
Library OS
域间通信IDC
Xen Library OS的应用
轻量级Xen Domain轻量级Xen Domain的设计与实现
轻量级Xen Domain的应用—HVM stub domain
Ethos - An Operating system for the Xen hypervisor
参考文献
将全局变量phys_to_machine_mapping(mm.c)指向现有的P2M表(start_info.mfn_list)
使用hypercall:HYPERVISOR_update_va_mapping把shared_info页映射到0x2000
注册回调句柄(callback handlers)
arch_init_p2m()初始化HYPERVISOR_shared_info->arch.pfg_to_mfn_frame_list结构体,它记录了客户机页帧到物理机页帧的映射。
arch_init_demand_mapping_area()创建一个额外的PTE,可以用来按需地映射大于max_pfn页地址。
Red Hat的newlib C库
Mini-OS内核
域间通信机制IDC,基于Xen共享内存和时间通道实现
IDC是由Xen的事件通道实现的,包含读写两个IO环。IDC做为一个内核模块,向上层应用暴露6个接口。Init: 初始化一个通道
Close: 关闭一个通道
Create: 允许用户向通道写数据,用户要有目标域的ID
Connect: 允许用户在通道中读数据
Write: 向通道中写
Read: 在通道中读
Xen 3.0的vTPM驱动体系结构如图所示。所有的vTPM操作都有Domain0完成。
如图所示,vTPM的守护进程置于Domain0中,而vTPM的实际模拟器放入Library OS中,它们之间通过IDC联系。并且使用修改过的GNU工具链编译安装vTPM emulator。DomainU通过vTPM前段驱动将请求发往Domaoin0的后端驱动,vTPM的守护进程转发请求到Domain0的IDC,实际由Library OS处理请求。修改Domain0的vTPM守护进程大概花费了200行代码,而修改vTPM emulator更少于500行代码。该结构的缺点是显而易见的,由于每个DomU都配属相应的Trust Dom,使得一些操作变得非常繁琐,比如虚拟域热迁移等。
如图所示,轻量级Xen Domain的设计思想是将Mini-OS内核、C库、IP堆栈、执行环境和单个应用程序有机的整合在一起。在技术方面看,需要安装一个plain ELF cross-compilation chain,即以plain ELF为目标建立可交叉编译的binutils和gcc。然后用交叉编译工具编译和安装各种C库,它们和Mini-OS有同样的内核C flag。LwIP提供了一个轻量级的TCP/IP协议栈,它与Mini-OS中的Network frontend相连接。Newlib提供了一个标准C库,它比庞大的GNU libc更适用于轻量级环境。但需要修改部分newlib的系统调用:Mini-OS没有传统UNIX进程概念,getpid及其相似函数只输出某特定值,比如1
Mini-OS没有使用信号,可以忽略各种sig函数
适当修改的函数:Sleep和gettimeofday必须小心的设计,使其符合虚拟化应用
Mmap只负责处理匿名内存(anonymous memory),而不用实现映射普通文件和为无关联的进程提供共享空间的功能。
该系统还实现了一个瘦虚拟文件层(thin virtual file layer),它对控制台、文件、块设备、网络设备以及TCP/IP协议函数提供统一的支持。实现思想是依靠文件描述符识别目标文件的类型,然后将操作重定向到Mini-OS的各个前端驱动或者内核模块的底层函数上。轻量级Xen Domain的进程调度完全依靠Mini-OS实现。Mini-OS提供非抢占式的多线程,并且目前只支持单虚拟CPU。这些线程由一个运行队列维护,它们之间没有优先权的差异。Mini-OS的内核也不需要支持任何自旋锁机制。 在内存管理方面借鉴了HPC(High Performance Computer)常用的sparse data机制,提供内存读写效率。为提高读写磁盘的效率,应用了类似“零拷贝”的技术,IO操作不再由缓冲区缓冲。这意味着应用程序可以直接控制各种磁盘操作,不经过Mini-OS缓冲。
剑桥团队应用该轻量级Xen Domain将 qemu移到一个单独的驱动域中。由于Mini-OS调度非常简单并且只运行qemu一个程序,大大简化了hypervisor的调度和审计工作。在stubdom 中,qemu可以直接调用系统服务,不需要经过用户、内核两态的转换,提高了效率。
Xen上同时运行Ethos和标准linux。Ethos将文件系统、网络和设备驱动托管给linux,剩余部分由Ethos实现。目前该项工作正在进展之中。
来源:/article/10719644.html
trap_init()
init_mm()
Xen Library OSXen Library OS的设计与实现开发工具链
Library OS
域间通信IDC
Xen Library OS的应用
轻量级Xen Domain轻量级Xen Domain的设计与实现
轻量级Xen Domain的应用—HVM stub domain
Ethos - An Operating system for the Xen hypervisor
参考文献
Mini-OS 启动简介¶
Mini-OS在start 处启动,加载SS和ESP指向的地址。KERNEL_SS由Xen的GDT提供,ESP指向的地址取自于stack_start 。ESI寄存器指向Mini-OS的start_info_t 结构体。ESI做为参数传入到启动函数start_kerel()中。start_kerel() 是启动Mini-OS的例程。它调用了一些初始化函数,然后建立了三个内核线程。由于Mini-OS是不可抢占的并只能运行单线程的操作系统,所以这三个内核线程依次被创建。arch_init()¶
将start_info数据结构拷贝到内核映像的一片全局区中(start_info_union.start_info)将全局变量phys_to_machine_mapping(mm.c)指向现有的P2M表(start_info.mfn_list)
使用hypercall:HYPERVISOR_update_va_mapping把shared_info页映射到0x2000
注册回调句柄(callback handlers)
// 通过set_callbacks(),注册各种event和failsafe的处理函数 set_callbacks(unsigned longevent_selector, unsigned long event_address, unsigned long failsafe_selector, unsigned longfailsafe_address)
trap_init()¶
注册陷阱表(trap handler table),通常定义于Mini-OS的arch/x86/x86_32.h中。void trap_init(void) { HYPERVISOR_set_trap_table(trap_table); }
init_mm()¶
该例程初始化Mini-OS的内存管理功能。arch_init_mm()首先计算Mini-OS可以使用的页帧数。在Mini-OS中,text段起始于0x00,虚拟地址和客户物理地址是一致的。然后调用build_pagetables(start_pfg,max_pfn),建立页表。每增加一个页表项,调用HYPERVISOR_mmu_update()同步到hypervisor中。arch_init_p2m()初始化HYPERVISOR_shared_info->arch.pfg_to_mfn_frame_list结构体,它记录了客户机页帧到物理机页帧的映射。
arch_init_demand_mapping_area()创建一个额外的PTE,可以用来按需地映射大于max_pfn页地址。
Xen Library OS¶
Xen Library OS的设计与实现¶
Xen Library OS 是一个类虚拟化的操作系统,它由四部分组成:一个基于GNU工具链的cross-development环境Red Hat的newlib C库
Mini-OS内核
域间通信机制IDC,基于Xen共享内存和时间通道实现
开发工具链¶
加入一个基于GNU工具链的cross-development环境,目的是获得最大的代码兼容性。Linux上的进程可以兼容的运行在Library OS上。通过修改GNU编译器和二进制工具来支持新的目标体系结构。Library OS的编译器称作i386-minios-gcc,它的头文件、库和加载器都被重写。Library OS¶
Library OS使用Red Hat的newlib C库支持C程序。但需要修改newlib库以适应Library OS,比如一些函数fork、exec等都不能在新的目标体系结构中使用。 Library OS选择Mini-OS为其kernel,主要原因是Mini-OS有完善的支持Xen类虚拟化接口,Xen社区对其提供维护。 由于程序、库、内核都运行在一个地址空间中,所以Library OS适合运行小的可信服务,而不是一般的用户程序。域间通信IDC¶
IDC是由Xen的事件通道实现的,包含读写两个IO环。IDC做为一个内核模块,向上层应用暴露6个接口。Init: 初始化一个通道
Close: 关闭一个通道
Create: 允许用户向通道写数据,用户要有目标域的ID
Connect: 允许用户在通道中读数据
Write: 向通道中写
Read: 在通道中读
Xen Library OS的应用¶
Xen 3.0的vTPM驱动体系结构如图所示。所有的vTPM操作都有Domain0完成。
如图所示,vTPM的守护进程置于Domain0中,而vTPM的实际模拟器放入Library OS中,它们之间通过IDC联系。并且使用修改过的GNU工具链编译安装vTPM emulator。DomainU通过vTPM前段驱动将请求发往Domaoin0的后端驱动,vTPM的守护进程转发请求到Domain0的IDC,实际由Library OS处理请求。修改Domain0的vTPM守护进程大概花费了200行代码,而修改vTPM emulator更少于500行代码。该结构的缺点是显而易见的,由于每个DomU都配属相应的Trust Dom,使得一些操作变得非常繁琐,比如虚拟域热迁移等。
轻量级Xen Domain¶
轻量级Xen Domain的设计与实现¶
该轻量级Xen Domain 保留了Library OS的所有特性,包括cross-development环境、newlib库和IDC机制,并优化部分环境,更适合HPC(High Performance Computing)应用。如图所示,轻量级Xen Domain的设计思想是将Mini-OS内核、C库、IP堆栈、执行环境和单个应用程序有机的整合在一起。在技术方面看,需要安装一个plain ELF cross-compilation chain,即以plain ELF为目标建立可交叉编译的binutils和gcc。然后用交叉编译工具编译和安装各种C库,它们和Mini-OS有同样的内核C flag。LwIP提供了一个轻量级的TCP/IP协议栈,它与Mini-OS中的Network frontend相连接。Newlib提供了一个标准C库,它比庞大的GNU libc更适用于轻量级环境。但需要修改部分newlib的系统调用:Mini-OS没有传统UNIX进程概念,getpid及其相似函数只输出某特定值,比如1
Mini-OS没有使用信号,可以忽略各种sig函数
适当修改的函数:Sleep和gettimeofday必须小心的设计,使其符合虚拟化应用
Mmap只负责处理匿名内存(anonymous memory),而不用实现映射普通文件和为无关联的进程提供共享空间的功能。
该系统还实现了一个瘦虚拟文件层(thin virtual file layer),它对控制台、文件、块设备、网络设备以及TCP/IP协议函数提供统一的支持。实现思想是依靠文件描述符识别目标文件的类型,然后将操作重定向到Mini-OS的各个前端驱动或者内核模块的底层函数上。轻量级Xen Domain的进程调度完全依靠Mini-OS实现。Mini-OS提供非抢占式的多线程,并且目前只支持单虚拟CPU。这些线程由一个运行队列维护,它们之间没有优先权的差异。Mini-OS的内核也不需要支持任何自旋锁机制。 在内存管理方面借鉴了HPC(High Performance Computer)常用的sparse data机制,提供内存读写效率。为提高读写磁盘的效率,应用了类似“零拷贝”的技术,IO操作不再由缓冲区缓冲。这意味着应用程序可以直接控制各种磁盘操作,不经过Mini-OS缓冲。
轻量级Xen Domain的应用—HVM stub domain¶
剑桥团队应用该轻量级Xen Domain将 qemu移到一个单独的驱动域中。由于Mini-OS调度非常简单并且只运行qemu一个程序,大大简化了hypervisor的调度和审计工作。在stubdom 中,qemu可以直接调用系统服务,不需要经过用户、内核两态的转换,提高了效率。
Ethos - An Operating system for the Xen hypervisor¶
Ethos 是UIC(University of Illinois at Chicago)正在开发的一款基于Xen和Mini-OS的轻量级操作系统。它开发的初衷是为了避免开发驱动程序、文件系统和网络设备。Ethos做为一个内核,只向外提供进程和系统调用接口。该项目的负责人Prof. Solworth称其为"Paired-OS"。Xen上同时运行Ethos和标准linux。Ethos将文件系统、网络和设备驱动托管给linux,剩余部分由Ethos实现。目前该项工作正在进展之中。
参考文献¶
1.Satya Popuri, A tour of the Mini-OS kernel, http://www.cs.uic.edu/~spopuri/minios.html2.M.J. Anderson, M. Moffie, and C.I. Dalton. Towards Trustworthy Virtualisation Environments: Xen Library OS Security Service Infrastructure. Technical Report HPL-2007-69, Hewlett-Packard Development Company, L.P., April 2007.3.Samuel Thibault and Tim Deegan. Improving performance by embedding hpc applications in lightweight xen domains. In HPCVirt '08: Proceedings of the 2nd workshop on Systemlevel virtualization for high performance computing, pages 9--15, New York, NY, USA, 2008. ACM.4.Satya Popuri, Ethos - An Operating system for the Xen hypervisor, http://www.cs.uic.edu/~spopuri/ethos.html5.Jon A. Solworth, Ethos: an operating system which creates a culture of security,http://www.rites.uic.edu/~solworth/ethos.html来源:/article/10719644.html
相关文章推荐
- Mini-OS现有应用介绍
- [转]Mini-OS现有应用介绍
- Python os.getcwd()函数的实际应用方案介绍
- C++ dlopen mini HOWTO 一篇非常好的介绍C++ dlopen linux/mac os x 编程的资料
- 2005,Linux企业应用走向成功-OSDL专题介绍
- [tomcat] 部署Web应用方法介绍
- 第四十章 简单数据库应用的创建及相关介绍(十五)
- WMI技术介绍和应用——VC开发WMI应用的基本步骤
- OCR技术的典型应用及OCR相关工具介绍
- Java编程高手对CLASSPATH应用的详细介绍
- 生产应用系统经验介绍
- 本地连接在XP下的各种应用技巧介绍
- java应用功能简略介绍
- HTML标签上标sup、下标sub应用介绍
- uC/OS-II内核架构解析---uC/OS-II应用开发
- Android应用组件之Activity介绍2
- Android网络应用接口j介绍
- rpm包的介绍和应用
- Chef框架之Cookbook的介绍及应用
- Python学习笔记(一)-Python介绍和应用