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

Mini-OS的应用介绍

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

* `) |" H! C3 k8 m# L! \) IIntroductionToMiniosApplications  
$ N' e. e. G& s6 @5 Q9 a
5 d# e, W; J1 F5 {6 |" N0 _$ fMini-OS现有应用介绍- X' i5 e; X- Z% U' l) k  v
Mini-OS是跟随Xen hypervisor发布的一款小内核操作系统,目前有一些基于Mini-OS的应用:HP实验室在2007年发布了基于Mini-OS的Xen Library OS;2008年剑桥大学进一步完善了HP的工作,完成了HVM stubdom并置于Xen源码树中;伊利诺伊大学芝加哥分校(UIC)正致力于开发一款基于Mini-OS的小内核系统—Ethos。7 A0 R% B' n! {& l# _
+ @/ X$ V) @9 _# T0 V4 ^
Mini-OS 启动简介
1 m! K& {& Y& ^+ Q7 Earch_init(); O0 R/ }6 m0 }7 {1 u+ N
trap_init()5 X* P  P' l  E( k
init_mm(), g. R- n/ J. ?* F& ?7 ]
Xen Library OS( i4 {. Q2 i$ V
Xen Library OS的设计与实现
* V: @0 k2 R6 s% m% c& g3 G7 z5 G开发工具链
  c5 m& p6 n. m' E* f/ c3 cLibrary OS
' \# v( J& D5 t; @% w% a8 @$ ^域间通信IDC( |- `# @3 Z2 S. z' J) j$ ]4 c% {( x9 C
Xen Library OS的应用
6 U6 l# _0 w( q; {: S: |( |) ^轻量级Xen Domain
  P1 K0 T5 r' ]  O& [轻量级Xen Domain的设计与实现8 A* }( D' [! I! e* h& M7 C. H: E
轻量级Xen Domain的应用—HVM stub domain9 t* u: m' v- f% ^2 n
Ethos - An Operating system for the Xen hypervisor
/ @0 R6 |4 K/ g5 I+ u  c参考文献" k# P# o! Y( j
5 f6 H& z- w5 [" }7 f
3 g: Y7 M+ |+ R7 V% |" E
Mini-OS 启动简介¶
' Q/ Q8 `% t7 ^9 t4 Y& zMini-OS在start 处启动,加载SS和ESP指向的地址。KERNEL_SS由Xen的GDT提供,ESP指向的地址取自于stack_start 。ESI寄存器指向Mini-OS的start_info_t 结构体。ESI做为参数传入到启动函数start_kerel()中。
8 V0 _' v! {; w
$ v3 f& s4 d5 I- o$ Z7 N4 O& ^start_kerel() 是启动Mini-OS的例程。它调用了一些初始化函数,然后建立了三个内核线程。由于Mini-OS是不可抢占的并只能运行单线程的操作系统,所以这三个内核线程依次被创建。
' S4 M! B' ?7 p! i9 z, P" ^0 b- \: R2 `
arch_init()¶7 S. l+ m+ U. S8 f0 R# M
将start_info数据结构拷贝到内核映像的一片全局区中(start_info_union.start_info)
( V8 ^( m- @" a- ~" }# r) N/ h2 Z将全局变量phys_to_machine_mapping(mm.c)指向现有的P2M表(start_info.mfn_list)2 n7 X+ n7 A/ s
使用hypercall:HYPERVISOR_update_va_mapping把shared_info页映射到0x2000
5 O; O+ j4 n6 S注册回调句柄(callback handlers). y. c, x% ?  c- f- D. t5 L! \: G
// 通过set_callbacks(),注册各种event和failsafe的处理函数  set_callbacks(unsigned longevent_selector, unsigned long event_address, unsigned long failsafe_selector, unsigned longfailsafe_address)
3 Y2 u0 I2 L# t& m5 T3 R6 Qtrap_init()¶& f/ O. g' d7 s% N9 X' L' X
注册陷阱表(trap handler table),通常定义于Mini-OS的arch/x86/x86_32.h中。  A+ ?& I: ^+ K/ X  T6 |( w9 A# a
3 l5 O; u' J1 b$ u3 Y. d
void trap_init(void)  {      HYPERVISOR_set_trap_table(trap_table);  }  f' G* b. q  a
init_mm()¶% X8 \; A0 Q9 w/ y9 k: G
该例程初始化Mini-OS的内存管理功能。
/ }3 u$ p( c& T# |3 R. P5 G' C* m" ~. f# f! j
arch_init_mm()  W* ~0 F# D# y& Q' V' J- H) e" y& |
首先计算Mini-OS可以使用的页帧数。在Mini-OS中,text段起始于0x00,虚拟地址和客户物理地址是一致的。然后调用build_pagetables(start_pfg,max_pfn),建立页表。每增加一个页表项,调用HYPERVISOR_mmu_update()同步到hypervisor中。
1 @3 S$ x" U3 parch_init_p2m()
+ _: B0 g( t5 x( i初始化HYPERVISOR_shared_info->arch.pfg_to_mfn_frame_list结构体,它记录了客户机页帧到物理机页帧的映射。1 d0 x/ a' M; Z/ i
arch_init_demand_mapping_area()
8 J. l7 X5 G- J& m+ \4 f创建一个额外的PTE,可以用来按需地映射大于max_pfn页地址。
+ K6 s; [1 X# f! Q0 [" [+ |! jXen Library OS¶
( L7 l$ {+ o1 FXen Library OS的设计与实现¶
1 a, P7 k2 A7 t* tXen Library OS 是一个类虚拟化的操作系统,它由四部分组成:
- c& @7 v+ j% p8 D, w) L3 ^6 Y
$ _  n8 X- p0 ?& d( z1 M1 D5 E一个基于GNU工具链的cross-development环境
5 O8 y- u% G. bRed Hat的newlib C库) m" p' q& W  d& O; p. L( u
Mini-OS内核
( ~0 j8 e' I! p% w$ J域间通信机制IDC,基于Xen共享内存和时间通道实现
9 b- r2 ]9 F7 R' t1 U/ M
4 z+ v/ Q. ^+ a8 E- m: O开发工具链¶
  @( D# B1 c$ A. p0 v2 B加入一个基于GNU工具链的cross-development环境,目的是获得最大的代码兼容性。Linux上的进程可以兼容的运行在Library OS上。通过修改GNU编译器和二进制工具来支持新的目标体系结构。Library OS的编译器称作i386-minios-gcc,它的头文件、库和加载器都被重写。
' d1 T9 ?, y& V3 [3 q# ]2 ^  J+ E. N* X3 S1 j9 [$ P' b
Library OS¶
# \3 b8 N5 P. U2 n7 B$ ], `5 RLibrary OS使用Red Hat的newlib C库支持C程序。但需要修改newlib库以适应Library OS,比如一些函数fork、exec等都不能在新的目标体系结构中使用。 Library OS选择Mini-OS为其kernel,主要原因是Mini-OS有完善的支持Xen类虚拟化接口,Xen社区对其提供维护。 由于程序、库、内核都运行在一个地址空间中,所以Library OS适合运行小的可信服务,而不是一般的用户程序。
1 f1 J6 |% z0 B: H- w" q
0 T# {% i& ~: p9 G- _) y域间通信IDC¶
& Q+ f! q" {, Z( K* P( O7 l2 U5 a$ Y: p9 g8 F
IDC是由Xen的事件通道实现的,包含读写两个IO环。IDC做为一个内核模块,向上层应用暴露6个接口。
0 L+ e. V. f. @: E0 R
& E# Y4 \: p( N+ k# I$ C! iInit: 初始化一个通道) w6 V, p* F8 I
Close: 关闭一个通道% F% g4 C' q  k, t! h
Create: 允许用户向通道写数据,用户要有目标域的ID, Z0 ]5 j( u" w# |
Connect: 允许用户在通道中读数据
% @% ^( w4 K  b! p0 A' `6 k5 {, w& d0 {Write: 向通道中写
6 ~# L# l! @0 x' }3 uRead: 在通道中读
$ R3 e1 ?* ]8 k' q . }/ ?2 V6 i; g( n: s

8 p6 h, y9 r# h+ M' E( z- sXen Library OS的应用¶1 H# l  J. R  z

0 ~1 i# S2 t0 U" a2 G2 qXen 3.0的vTPM驱动体系结构如图所示。所有的vTPM操作都有Domain0完成。
; }  O6 {1 f+ o& F. U  d" t9 J( T% _+ v+ H2 c6 z

) H8 D; W: L% T" m1 i  L5 ]如图所示,vTPM的守护进程置于Domain0中,而vTPM的实际模拟器放入Library OS中,它们之间通过IDC联系。并且使用修改过的GNU工具链编译安装vTPM emulator。DomainU通过vTPM前段驱动将请求发往Domaoin0的后端驱动,vTPM的守护进程转发请求到Domain0的IDC,实际由Library OS处理请求。8 B. W! o2 @  B6 q2 J3 i3 I# b

* R4 {5 `' u, ]. ]修改Domain0的vTPM守护进程大概花费了200行代码,而修改vTPM emulator更少于500行代码。6 A& k$ k3 w2 T  r$ [! z
" A7 D  R% e2 @2 f2 y
该结构的缺点是显而易见的,由于每个DomU都配属相应的Trust Dom,使得一些操作变得非常繁琐,比如虚拟域热迁移等。, g$ l7 r/ a* f8 b: h* A' |/ G

# P6 H2 I' ^) e1 m轻量级Xen Domain¶
8 n- H- G2 [; f轻量级Xen Domain的设计与实现¶. s9 E6 T4 q  s$ g4 B7 j
该轻量级Xen Domain 保留了Library OS的所有特性,包括cross-development环境、newlib库和IDC机制,并优化部分环境,更适合HPC(High PeRFormance Computing)应用。
3 ^5 d; H7 ^( |
8 ?( b# d# u/ Y* I+ e/ W2 f% ^' P
  K# h# p2 ?$ N7 x1 w  d/ Y( y如图所示,轻量级Xen Domain的设计思想是将Mini-OS内核、C库、IP堆栈、执行环境和单个应用程序有机的整合在一起。在技术方面看,需要安装一个plain ELF cross-compilation chain,即以plain ELF为目标建立可交叉编译的binutils和gcc。然后用交叉编译工具编译和安装各种C库,它们和Mini-OS有同样的内核C flag。& ]# c, H9 P4 K5 N* a4 e

! x6 _9 d+ s; Z9 yLwIP提供了一个轻量级的TCP/IP协议栈,它与Mini-OS中的Network frontend相连接。Newlib提供了一个标准C库,它比庞大的GNU libc更适用于轻量级环境。但需要修改部分newlib的系统调用:
2 ]5 E) z7 Q1 n: Z- b! M/ v* K, q# ^* ^, k0 z; Y( E% D
Mini-OS没有传统UNIX进程概念,getpid及其相似函数只输出某特定值,比如12 n" c4 ^% s' h
Mini-OS没有使用信号,可以忽略各种sig函数0 c$ N' S6 p; }- h& V7 p
适当修改的函数:
( n2 h$ D& \4 R( {) PSleep和gettimeofday必须小心的设计,使其符合虚拟化应用
  t9 r9 ^4 t8 U* dMmap只负责处理匿名内存(anonymous memory),而不用实现映射普通文件和为无关联的进程提供共享空间的功能。- {$ E4 Z+ T& g  F6 \) Y* C# p
该系统还实现了一个瘦虚拟文件层(thin virtual file layer),它对控制台、文件、块设备、网络设备以及TCP/IP协议函数提供统一的支持。实现思想是依靠文件描述符识别目标文件的类型,然后将操作重定向到Mini-OS的各个前端驱动或者内核模块的底层函数上。: m/ [4 E0 g, ^' L) n% m& s8 A

6 M: c( ?( a" d轻量级Xen Domain的进程调度完全依靠Mini-OS实现。Mini-OS提供非抢占式的多线程,并且目前只支持单虚拟CPU。这些线程由一个运行队列维护,它们之间没有优先权的差异。Mini-OS的内核也不需要支持任何自旋锁机制。 在内存管理方面借鉴了HPC(High Performance Computer)常用的sparse data机制,提供内存读写效率。
# F1 o: m) w& z. s2 Y, H
2 X$ l# }4 ?, E) W为提高读写磁盘的效率,应用了类似“零拷贝”的技术,IO操作不再由缓冲区缓冲。这意味着应用程序可以直接控制各种磁盘操作,不经过Mini-OS缓冲。  G2 f% y9 H( R" n5 F& J
7 I: K2 b0 P6 Z
轻量级Xen Domain的应用—HVM stub domain¶* [8 c; F4 Y+ i
2 F2 D3 }! J  u  S3 S" ^1 C
剑桥团队应用该轻量级Xen Domain将 qemu移到一个单独的驱动域中。由于Mini-OS调度非常简单并且只运行qemu一个程序,大大简化了hypervisor的调度和审计工作。在stubdom 中,qemu可以直接调用系统服务,不需要经过用户、内核两态的转换,提高了效率。( f8 ?2 Y! Y6 f* t& m; K- s, u
8 e. R2 w( b4 P4 h. P7 f
Ethos - An Operating system for the Xen hypervisor¶
$ x" v0 l4 u5 Y7 AEthos 是UIC(University of Illinois at Chicago)正在开发的一款基于Xen和Mini-OS的轻量级操作系统。它开发的初衷是为了避免开发驱动程序、文件系统和网络设备。Ethos做为一个内核,只向外提供进程和系统调用接口。该项目的负责人Prof. Solworth称其为"Paired-OS"。5 C  Q$ M. M# C3 {  ~* W

* D# P8 W, x, E& x
4 f4 L# @" }0 n( l: h1 c. eXen上同时运行Ethos和标准linux。Ethos将文件系统、网络和设备驱动托管给linux,剩余部分由Ethos实现。
8 J" R8 _" J  |- S! h2 K. E+ c7 K" b/ }1 M+ e9 c( W+ P
目前该项工作正在进展之中。6 S  n( W. h. H* N9 p1 {" Q
3 [' k7 N. X3 f3 @
参考文献¶; n4 |. c/ d5 B$ W$ z
1.Satya Popuri, A tour of the Mini-OS kernel, http://www.cs.uic.edu/~spopuri/minios.html% j0 r6 g6 R. `$ N2 o& R

! T% A% {0 _/ L+ B2 i7 W' R2.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.
2 B/ D! d7 K* ?6 p
" `& N1 Q  c0 F+ @. g. G3.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.* h$ f$ X2 s% K

& }" }: _8 c; p8 _/ ?; k4.Satya Popuri, Ethos - An Operating system for the Xen hypervisor, http://www.cs.uic.edu/~spopuri/ethos.html2 ~) @+ i; w: f' G- ~. }4 A
) s8 K& C6 k7 N5 |0 R8 {5 n
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 17:36 , Processed in 0.171875 second(s), 24 queries , Gzip On.

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

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

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