找回密码
 注册
关于网站域名变更的通知
查看: 327|回复: 1
打印 上一主题 下一主题

Mini-OS的应用介绍

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-10 10:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
. r6 D  ^5 B! b- o7 x. ?" j% ^
IntroductionToMiniosApplications  
# i7 |, u- l4 r  v( O9 l" @
) D  L6 H6 H* O9 q! dMini-OS现有应用介绍
! U/ ^" ]# \, e* i$ x& VMini-OS是跟随Xen hypervisor发布的一款小内核操作系统,目前有一些基于Mini-OS的应用:HP实验室在2007年发布了基于Mini-OS的Xen Library OS;2008年剑桥大学进一步完善了HP的工作,完成了HVM stubdom并置于Xen源码树中;伊利诺伊大学芝加哥分校(UIC)正致力于开发一款基于Mini-OS的小内核系统—Ethos。, E2 ^  i# \+ f1 q7 s
, r; V  v. |( X! B: z9 H
Mini-OS 启动简介0 K9 [5 L9 b  y' s, I3 v/ Q& ~# E
arch_init()9 _6 e( b! ?8 x* f5 F' v+ t
trap_init()
3 T5 p: e# a  i5 S* q3 dinit_mm()
! l) E# [8 @# w2 tXen Library OS; w9 K& `+ r5 F! a- f1 {" ~
Xen Library OS的设计与实现$ {. Z# J: p3 R# d0 K( @8 O4 M
开发工具链
) e% X) Y* S# V7 V5 jLibrary OS
3 g2 Q( Y$ G: P# n' H; q域间通信IDC
; P6 f' E$ S$ d- z( R; pXen Library OS的应用
8 u5 T0 o- z* h轻量级Xen Domain
, P$ t* `% i8 M# v轻量级Xen Domain的设计与实现9 r' F, N  p) G8 H% p  _
轻量级Xen Domain的应用—HVM stub domain
. r3 Z- m  B2 l$ h; X: C7 K; BEthos - An Operating system for the Xen hypervisor
' k. D6 Y# L# J: S9 B5 `参考文献; U# c- \- b, k8 a* d' z+ Q- m: x

* ], W& ^  B4 n, j; {% d5 D; G; a8 ]0 b8 {! S( D
Mini-OS 启动简介¶
! c8 T$ G$ ]$ o3 }, d  I6 Q% hMini-OS在start 处启动,加载SS和ESP指向的地址。KERNEL_SS由Xen的GDT提供,ESP指向的地址取自于stack_start 。ESI寄存器指向Mini-OS的start_info_t 结构体。ESI做为参数传入到启动函数start_kerel()中。
- p+ T* T3 R6 Y! |
" ^0 K- Z$ N5 b* Estart_kerel() 是启动Mini-OS的例程。它调用了一些初始化函数,然后建立了三个内核线程。由于Mini-OS是不可抢占的并只能运行单线程的操作系统,所以这三个内核线程依次被创建。) g' `% e$ Y" q8 S2 q. l! b' i
- I9 q  F1 C$ [+ a) m9 J* @
arch_init()¶
9 E0 C# x8 v. y+ j5 [将start_info数据结构拷贝到内核映像的一片全局区中(start_info_union.start_info)
. s0 t' j* t  e8 g3 b8 S9 C将全局变量phys_to_machine_mapping(mm.c)指向现有的P2M表(start_info.mfn_list)
# C9 y) P) ^. l使用hypercall:HYPERVISOR_update_va_mapping把shared_info页映射到0x2000
2 V. r- {& H! G6 `% V注册回调句柄(callback handlers)
! P' y% C" i3 Y" y6 F8 Y$ ~2 M// 通过set_callbacks(),注册各种event和failsafe的处理函数  set_callbacks(unsigned longevent_selector, unsigned long event_address, unsigned long failsafe_selector, unsigned longfailsafe_address)7 W  a/ s5 Y" L+ ]
trap_init()¶
- _0 j6 n+ e; o  \( a注册陷阱表(trap handler table),通常定义于Mini-OS的arch/x86/x86_32.h中。* Q; ]/ U# Y5 W. Z

$ x% O7 _& S8 [void trap_init(void)  {      HYPERVISOR_set_trap_table(trap_table);  }; l. X# r# c; t5 x" Y: ~% O  y. r
init_mm()¶
$ j/ E/ ^6 ?: z- p该例程初始化Mini-OS的内存管理功能。, W% U" K- t( ^- h# L8 v- R

# `' V& L% K6 jarch_init_mm()
9 t1 f/ O: F4 x* T) X) |1 P" P首先计算Mini-OS可以使用的页帧数。在Mini-OS中,text段起始于0x00,虚拟地址和客户物理地址是一致的。然后调用build_pagetables(start_pfg,max_pfn),建立页表。每增加一个页表项,调用HYPERVISOR_mmu_update()同步到hypervisor中。
& c5 J+ M. a6 Qarch_init_p2m(): f/ O1 v0 D4 u( g1 o3 w- T- R! w
初始化HYPERVISOR_shared_info->arch.pfg_to_mfn_frame_list结构体,它记录了客户机页帧到物理机页帧的映射。
* O- ]& Y& p: B6 f+ iarch_init_demand_mapping_area()
: M: x$ }' I6 g; H: H创建一个额外的PTE,可以用来按需地映射大于max_pfn页地址。& _) S6 }+ K8 ~: t+ w$ C3 U
Xen Library OS¶
$ v1 o( ?2 c% ?' G, d" ^Xen Library OS的设计与实现¶0 k8 N' q, ?6 J4 G; R- s8 V
Xen Library OS 是一个类虚拟化的操作系统,它由四部分组成:
" E4 M; S  z8 Q0 ?
  I7 d) Q( @' B一个基于GNU工具链的cross-development环境0 X2 J% u- [" A% t2 [) Q/ \
Red Hat的newlib C库
) d9 ]- P+ z3 S0 AMini-OS内核
4 V4 N. z+ K8 \7 H# F域间通信机制IDC,基于Xen共享内存和时间通道实现. a+ A+ \: J# P* `' C0 U

% C4 D- K2 I7 o* j$ z8 c( U) ^开发工具链¶. w$ _* ^/ _. w! A6 B
加入一个基于GNU工具链的cross-development环境,目的是获得最大的代码兼容性。Linux上的进程可以兼容的运行在Library OS上。通过修改GNU编译器和二进制工具来支持新的目标体系结构。Library OS的编译器称作i386-minios-gcc,它的头文件、库和加载器都被重写。
5 H8 e( \8 m( j/ P: J4 _# ]% u1 w& E6 O( k( K/ n& `
Library OS¶7 ~+ w; O( K+ [7 q2 v( f" t
Library OS使用Red Hat的newlib C库支持C程序。但需要修改newlib库以适应Library OS,比如一些函数fork、exec等都不能在新的目标体系结构中使用。 Library OS选择Mini-OS为其kernel,主要原因是Mini-OS有完善的支持Xen类虚拟化接口,Xen社区对其提供维护。 由于程序、库、内核都运行在一个地址空间中,所以Library OS适合运行小的可信服务,而不是一般的用户程序。8 P+ s- h) J  Q/ E

7 _- \2 a  h; I2 g% B域间通信IDC¶
$ o# b8 l  S; @+ Z8 ]/ S+ Z
# D0 f: L/ }# e! m/ F5 EIDC是由Xen的事件通道实现的,包含读写两个IO环。IDC做为一个内核模块,向上层应用暴露6个接口。
- a( q. L2 Y7 V- x* c& l" ~2 n) @  l0 w$ j/ p) R1 H8 p6 B
Init: 初始化一个通道; k. t% t" s, M5 p5 Y
Close: 关闭一个通道
. i+ M1 t/ D2 q. _; ICreate: 允许用户向通道写数据,用户要有目标域的ID4 |+ y$ l2 C+ ?+ u+ b
Connect: 允许用户在通道中读数据, }8 x# u1 u' h+ q  l( u3 D
Write: 向通道中写# u$ y' p  i/ |  J
Read: 在通道中读, b+ A7 s8 g# R! T  _; k0 H" d
! N  T5 P7 v  \! a! h
  u9 q; i+ `2 |$ h" C
Xen Library OS的应用¶; ^8 M" y* i4 b) q
+ q  _% Z8 B: ?  @2 N
Xen 3.0的vTPM驱动体系结构如图所示。所有的vTPM操作都有Domain0完成。( E6 j" H) a) F. k4 l2 J% t& |

% W& X1 H: z; M$ M& W. z7 t5 z! n* v, O$ J
如图所示,vTPM的守护进程置于Domain0中,而vTPM的实际模拟器放入Library OS中,它们之间通过IDC联系。并且使用修改过的GNU工具链编译安装vTPM emulator。DomainU通过vTPM前段驱动将请求发往Domaoin0的后端驱动,vTPM的守护进程转发请求到Domain0的IDC,实际由Library OS处理请求。- B$ V2 D" _% N

" A" H7 B, p, m2 |8 B$ A修改Domain0的vTPM守护进程大概花费了200行代码,而修改vTPM emulator更少于500行代码。
5 L, u5 [; m. S- U, K- z: L. U
4 R! O0 \! m; O! F4 I, h该结构的缺点是显而易见的,由于每个DomU都配属相应的Trust Dom,使得一些操作变得非常繁琐,比如虚拟域热迁移等。, [) G7 R8 l, P+ f% u) [! q6 B

' ?' K& B8 ~. D; B轻量级Xen Domain¶  i5 l- \$ x7 d5 f0 C
轻量级Xen Domain的设计与实现¶* Y3 l" i4 v6 i
该轻量级Xen Domain 保留了Library OS的所有特性,包括cross-development环境、newlib库和IDC机制,并优化部分环境,更适合HPC(High PeRFormance Computing)应用。* F0 ~' V0 ]+ w! W+ T( d; a$ e( r. B
) ?  ]. N% B  z, t5 K( l9 g

+ x& c* p9 Z0 z如图所示,轻量级Xen Domain的设计思想是将Mini-OS内核、C库、IP堆栈、执行环境和单个应用程序有机的整合在一起。在技术方面看,需要安装一个plain ELF cross-compilation chain,即以plain ELF为目标建立可交叉编译的binutils和gcc。然后用交叉编译工具编译和安装各种C库,它们和Mini-OS有同样的内核C flag。
6 H- T! q7 G4 E3 ?# k2 `# \+ G' S7 v* k9 S1 v8 J- j  o1 R( W
LwIP提供了一个轻量级的TCP/IP协议栈,它与Mini-OS中的Network frontend相连接。Newlib提供了一个标准C库,它比庞大的GNU libc更适用于轻量级环境。但需要修改部分newlib的系统调用:8 c- L) s! G- g1 a* A, A! C

; H* M3 S/ k3 ^* }- {Mini-OS没有传统UNIX进程概念,getpid及其相似函数只输出某特定值,比如1
" P& y3 M7 B- W9 U" j2 k9 IMini-OS没有使用信号,可以忽略各种sig函数
' B# s# W- Q* i8 n9 L5 t适当修改的函数:, F& A' N7 U$ O0 g& h
Sleep和gettimeofday必须小心的设计,使其符合虚拟化应用
' G$ p4 C( L7 B2 MMmap只负责处理匿名内存(anonymous memory),而不用实现映射普通文件和为无关联的进程提供共享空间的功能。; d' k( E0 \; y7 ]8 P% k
该系统还实现了一个瘦虚拟文件层(thin virtual file layer),它对控制台、文件、块设备、网络设备以及TCP/IP协议函数提供统一的支持。实现思想是依靠文件描述符识别目标文件的类型,然后将操作重定向到Mini-OS的各个前端驱动或者内核模块的底层函数上。
( k; p( [/ [/ u/ a* m7 t0 d
$ e0 \. J  l1 t7 G+ H  x轻量级Xen Domain的进程调度完全依靠Mini-OS实现。Mini-OS提供非抢占式的多线程,并且目前只支持单虚拟CPU。这些线程由一个运行队列维护,它们之间没有优先权的差异。Mini-OS的内核也不需要支持任何自旋锁机制。 在内存管理方面借鉴了HPC(High Performance Computer)常用的sparse data机制,提供内存读写效率。: R9 g  @, n% e* h
% G- o3 g0 k4 U3 N( A! v5 @  w
为提高读写磁盘的效率,应用了类似“零拷贝”的技术,IO操作不再由缓冲区缓冲。这意味着应用程序可以直接控制各种磁盘操作,不经过Mini-OS缓冲。
6 N( A& N& d) k2 }2 K0 u+ C9 w$ N( C4 p8 @# i( {  n
轻量级Xen Domain的应用—HVM stub domain¶
$ X  g& S$ Y# k% v: b9 [
" q. l3 F8 k! m6 c6 k剑桥团队应用该轻量级Xen Domain将 qemu移到一个单独的驱动域中。由于Mini-OS调度非常简单并且只运行qemu一个程序,大大简化了hypervisor的调度和审计工作。在stubdom 中,qemu可以直接调用系统服务,不需要经过用户、内核两态的转换,提高了效率。4 S- a6 i3 x1 F

; Z7 y& G! T( n0 J' @- q5 @Ethos - An Operating system for the Xen hypervisor¶8 O, n+ R! ]2 e7 [1 X) r6 M# S
Ethos 是UIC(University of Illinois at Chicago)正在开发的一款基于Xen和Mini-OS的轻量级操作系统。它开发的初衷是为了避免开发驱动程序、文件系统和网络设备。Ethos做为一个内核,只向外提供进程和系统调用接口。该项目的负责人Prof. Solworth称其为"Paired-OS"。
" x# S# F- _  o1 h% s9 n4 O. Q6 o/ @# {( E' d% ]( k4 f
& c# V1 n) a, U
Xen上同时运行Ethos和标准linux。Ethos将文件系统、网络和设备驱动托管给linux,剩余部分由Ethos实现。( T6 X* _& C  _, v
8 p9 g6 I6 r4 p1 F0 V
目前该项工作正在进展之中。& |) r8 k! g" i7 ?4 K- r4 `
, |, e3 S2 N( p3 K, K
参考文献¶" s, h" h! j# q  A  x! U( i
1.Satya Popuri, A tour of the Mini-OS kernel, http://www.cs.uic.edu/~spopuri/minios.html6 z* t) P7 k/ \$ }; R8 Y

; O4 Z, i, L; o, u2.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.
- C5 _2 G- F0 T0 O7 a1 M
* Z2 N. s8 Q, w. Q" ]; Z% r3.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.! b- v4 ?- N$ ]5 k
3 Q& U& w  U* F& G
4.Satya Popuri, Ethos - An Operating system for the Xen hypervisor, http://www.cs.uic.edu/~spopuri/ethos.html5 p+ d; h6 d1 ?  y7 }" L. ?7 t5 B
( A8 n( z( a7 p6 N; f
5.Jon A. Solworth, Ethos: an operating system which creates a culture of security,http://www.rites.uic.edu/~solworth/ethos.html
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-3-10 16:43 | 只看该作者
    Mini-OS的应用介绍
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-25 20:07 , Processed in 0.171875 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表