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

Mini-OS的应用介绍

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
" E. x. x/ I3 F
IntroductionToMiniosApplications  
3 C6 x1 }, o, F* E& X- L2 |, p5 P( u+ t5 Q' a; K: `: n
Mini-OS现有应用介绍: k: _2 A6 B3 I( O! [! s4 F9 k
Mini-OS是跟随Xen hypervisor发布的一款小内核操作系统,目前有一些基于Mini-OS的应用:HP实验室在2007年发布了基于Mini-OS的Xen Library OS;2008年剑桥大学进一步完善了HP的工作,完成了HVM stubdom并置于Xen源码树中;伊利诺伊大学芝加哥分校(UIC)正致力于开发一款基于Mini-OS的小内核系统—Ethos。9 ^5 _+ K0 p3 ^
+ Q, o! d) B8 y& D& x8 @  i& Z( g' i
Mini-OS 启动简介% {4 g  m+ d& p8 Z7 D, @
arch_init()
; v% U0 r" O! ^: m6 htrap_init()
0 R$ I7 t% t: R: u0 finit_mm()' w8 n1 g4 D9 D7 U; ~' j- k
Xen Library OS
; u$ |6 [! c8 j$ @Xen Library OS的设计与实现5 s1 R8 d* F; h, N' ^, O% e8 A
开发工具链: f  L3 S! X7 O% M& U6 l; c: W
Library OS
9 B- `; l0 _. {4 Z2 w域间通信IDC
) d' V+ l9 D! |4 }( @. n6 ?Xen Library OS的应用* Q# y- H0 k) S
轻量级Xen Domain' [& Y$ t- f" |- v7 H% i( W4 W
轻量级Xen Domain的设计与实现
' T8 y4 e% [4 w0 v, Y; C) m轻量级Xen Domain的应用—HVM stub domain* A  ^+ q1 Z/ ?) U
Ethos - An Operating system for the Xen hypervisor! T6 z9 T% L  @: _% Q) G% a3 n6 q
参考文献
" y; w' e7 Z( f, r
  ^5 P; R$ Y; x7 X! U/ H
" C3 v0 u/ x3 A7 R+ tMini-OS 启动简介¶+ v. x, A- ~* `) [
Mini-OS在start 处启动,加载SS和ESP指向的地址。KERNEL_SS由Xen的GDT提供,ESP指向的地址取自于stack_start 。ESI寄存器指向Mini-OS的start_info_t 结构体。ESI做为参数传入到启动函数start_kerel()中。
) T# Z9 N! `; l0 h. H& d$ T2 V) x% Z: f4 l! n
start_kerel() 是启动Mini-OS的例程。它调用了一些初始化函数,然后建立了三个内核线程。由于Mini-OS是不可抢占的并只能运行单线程的操作系统,所以这三个内核线程依次被创建。6 ~& ]3 X& v3 Q& ?9 b8 j; u8 Y

9 j7 Q" [3 z7 v6 U8 \arch_init()¶7 ~% N" L" _5 R$ ^# J
将start_info数据结构拷贝到内核映像的一片全局区中(start_info_union.start_info)
# V1 p' q+ C: d- c- n$ ~3 r7 p9 k7 e将全局变量phys_to_machine_mapping(mm.c)指向现有的P2M表(start_info.mfn_list)$ e! T% h+ V2 H% O" j
使用hypercall:HYPERVISOR_update_va_mapping把shared_info页映射到0x2000
) f, I( q8 \9 c, h3 O, C7 W注册回调句柄(callback handlers)
4 A, \( r+ Z/ l) w8 f2 h! c0 _. J// 通过set_callbacks(),注册各种event和failsafe的处理函数  set_callbacks(unsigned longevent_selector, unsigned long event_address, unsigned long failsafe_selector, unsigned longfailsafe_address)3 u) D6 @! O( j6 ]$ v
trap_init()¶
0 h5 s3 d( y5 h, q9 P注册陷阱表(trap handler table),通常定义于Mini-OS的arch/x86/x86_32.h中。( O8 F2 D/ g% T; e( l+ y9 S$ X

, Y" h3 T+ o* y/ Jvoid trap_init(void)  {      HYPERVISOR_set_trap_table(trap_table);  }) }5 ^% F$ m5 X: [. H
init_mm()¶
+ R6 A' z, p# j! f& F6 z该例程初始化Mini-OS的内存管理功能。
/ w: U/ \8 ~$ o( v  h7 O
5 g& w$ E5 F. S- r2 X0 e3 Karch_init_mm()$ |5 S  I; F0 `7 w/ Z! F
首先计算Mini-OS可以使用的页帧数。在Mini-OS中,text段起始于0x00,虚拟地址和客户物理地址是一致的。然后调用build_pagetables(start_pfg,max_pfn),建立页表。每增加一个页表项,调用HYPERVISOR_mmu_update()同步到hypervisor中。9 L& ~, ]" B9 g/ q% _
arch_init_p2m()
: R' C) y4 n, Q初始化HYPERVISOR_shared_info->arch.pfg_to_mfn_frame_list结构体,它记录了客户机页帧到物理机页帧的映射。% W1 I$ q+ V% v! |4 A
arch_init_demand_mapping_area()
1 {+ A3 g2 e' R, Q# e, {  }创建一个额外的PTE,可以用来按需地映射大于max_pfn页地址。9 a$ Y. }1 h; w0 {, s4 r
Xen Library OS¶" s" k5 g- T2 S- z, {/ ]
Xen Library OS的设计与实现¶
% ]5 ~/ O' h% o1 S6 x, XXen Library OS 是一个类虚拟化的操作系统,它由四部分组成:: _9 d5 T3 w9 Q/ P# F) {. t
/ V5 r6 U( Z) @% |1 P. G
一个基于GNU工具链的cross-development环境
& t; X, i' D! H8 Q6 fRed Hat的newlib C库
* M$ {1 I1 W; U+ }1 ~" Q# W$ MMini-OS内核6 N( |% u9 \" v
域间通信机制IDC,基于Xen共享内存和时间通道实现; j  z3 M; N; K/ b3 ?

8 r2 }% J5 r: [9 h: A! |开发工具链¶  i2 g  _; t6 o" D' w
加入一个基于GNU工具链的cross-development环境,目的是获得最大的代码兼容性。Linux上的进程可以兼容的运行在Library OS上。通过修改GNU编译器和二进制工具来支持新的目标体系结构。Library OS的编译器称作i386-minios-gcc,它的头文件、库和加载器都被重写。
- F8 H2 ^! I8 W# y1 a9 r# i. p; O
Library OS¶7 f% k1 N' ~0 z( f* F8 S
Library OS使用Red Hat的newlib C库支持C程序。但需要修改newlib库以适应Library OS,比如一些函数fork、exec等都不能在新的目标体系结构中使用。 Library OS选择Mini-OS为其kernel,主要原因是Mini-OS有完善的支持Xen类虚拟化接口,Xen社区对其提供维护。 由于程序、库、内核都运行在一个地址空间中,所以Library OS适合运行小的可信服务,而不是一般的用户程序。
4 a4 Q  e# h+ w& u: q8 h# x: W1 Q, {; `/ O
域间通信IDC¶2 ^- l6 Q: E" h. d' Q3 N
1 H& S4 z* J  V: w: T5 J
IDC是由Xen的事件通道实现的,包含读写两个IO环。IDC做为一个内核模块,向上层应用暴露6个接口。7 N2 i  O% n' h. E2 J- e

; o" \) {3 w5 `* Y! r! {- w1 @7 F% eInit: 初始化一个通道) _3 y, s! N2 _* N
Close: 关闭一个通道) O. @9 f& q' t- Q" W
Create: 允许用户向通道写数据,用户要有目标域的ID, J- R# U; R# N
Connect: 允许用户在通道中读数据
4 ~6 X& n! B& o3 OWrite: 向通道中写9 T! _# j% ?2 J7 M2 u4 {
Read: 在通道中读
3 ]: E. |1 n2 R9 C! n8 V. C, F
7 f1 V" O% j3 ^
) t4 P4 @7 R+ w% P$ [Xen Library OS的应用¶8 u/ V; w/ a0 \( l# @5 C; f

9 w! q0 C6 [% p. s5 _3 G3 C3 sXen 3.0的vTPM驱动体系结构如图所示。所有的vTPM操作都有Domain0完成。+ k! b. i$ P* B( `) k  M9 a
2 L+ }0 P% B% k& ~! s3 _

5 n+ ^1 P+ e" [9 ]/ |如图所示,vTPM的守护进程置于Domain0中,而vTPM的实际模拟器放入Library OS中,它们之间通过IDC联系。并且使用修改过的GNU工具链编译安装vTPM emulator。DomainU通过vTPM前段驱动将请求发往Domaoin0的后端驱动,vTPM的守护进程转发请求到Domain0的IDC,实际由Library OS处理请求。
* o2 j( h$ M7 ~* h. Z( ]% X* X  ?
! X: H' {4 M6 `$ s' e修改Domain0的vTPM守护进程大概花费了200行代码,而修改vTPM emulator更少于500行代码。
- h/ b6 P3 S: M, f& G0 X9 T5 D1 }0 }  |: |7 v
该结构的缺点是显而易见的,由于每个DomU都配属相应的Trust Dom,使得一些操作变得非常繁琐,比如虚拟域热迁移等。
9 A6 R% x( T7 [; }7 A
/ @, f0 l" G; Q" {/ q轻量级Xen Domain¶( t( A, y7 B" ~$ R0 @, B
轻量级Xen Domain的设计与实现¶
) [( H5 Z- ]' b3 ]该轻量级Xen Domain 保留了Library OS的所有特性,包括cross-development环境、newlib库和IDC机制,并优化部分环境,更适合HPC(High PeRFormance Computing)应用。: g$ d/ l" q6 q) |8 h
9 l" c+ |9 [7 b& g, i& J

8 ]( r1 \9 W9 W6 j9 i) Y$ _如图所示,轻量级Xen Domain的设计思想是将Mini-OS内核、C库、IP堆栈、执行环境和单个应用程序有机的整合在一起。在技术方面看,需要安装一个plain ELF cross-compilation chain,即以plain ELF为目标建立可交叉编译的binutils和gcc。然后用交叉编译工具编译和安装各种C库,它们和Mini-OS有同样的内核C flag。6 P* B8 c! J- i; |

! X0 ]" I) ]& _LwIP提供了一个轻量级的TCP/IP协议栈,它与Mini-OS中的Network frontend相连接。Newlib提供了一个标准C库,它比庞大的GNU libc更适用于轻量级环境。但需要修改部分newlib的系统调用:+ B( k" I5 [1 d& |1 m: c. \# L
  `3 h5 Z% I% y2 V6 i. Y
Mini-OS没有传统UNIX进程概念,getpid及其相似函数只输出某特定值,比如15 ]$ v1 w# p# [/ H- a
Mini-OS没有使用信号,可以忽略各种sig函数
, Z4 F& q2 n% b. ]% i$ `适当修改的函数:
. f# I2 o7 S) U* X; U. eSleep和gettimeofday必须小心的设计,使其符合虚拟化应用; P7 ?( M" U8 y
Mmap只负责处理匿名内存(anonymous memory),而不用实现映射普通文件和为无关联的进程提供共享空间的功能。
7 W: p) a9 \6 O. |& F6 E该系统还实现了一个瘦虚拟文件层(thin virtual file layer),它对控制台、文件、块设备、网络设备以及TCP/IP协议函数提供统一的支持。实现思想是依靠文件描述符识别目标文件的类型,然后将操作重定向到Mini-OS的各个前端驱动或者内核模块的底层函数上。* b' Y0 }5 u5 i' M" c& _2 ?$ @
* q1 P2 q7 l5 t3 }- A8 p. }2 U* W( Z
轻量级Xen Domain的进程调度完全依靠Mini-OS实现。Mini-OS提供非抢占式的多线程,并且目前只支持单虚拟CPU。这些线程由一个运行队列维护,它们之间没有优先权的差异。Mini-OS的内核也不需要支持任何自旋锁机制。 在内存管理方面借鉴了HPC(High Performance Computer)常用的sparse data机制,提供内存读写效率。
& z& p! F# ?6 E: v3 J# K6 j2 `9 Y. U. X
为提高读写磁盘的效率,应用了类似“零拷贝”的技术,IO操作不再由缓冲区缓冲。这意味着应用程序可以直接控制各种磁盘操作,不经过Mini-OS缓冲。. s- y) Z3 y% y* u+ r

+ b  _* i" m4 J( ~" a轻量级Xen Domain的应用—HVM stub domain¶
. g; k2 [* X- {6 h- e# u9 s- D' M4 w+ {" S
剑桥团队应用该轻量级Xen Domain将 qemu移到一个单独的驱动域中。由于Mini-OS调度非常简单并且只运行qemu一个程序,大大简化了hypervisor的调度和审计工作。在stubdom 中,qemu可以直接调用系统服务,不需要经过用户、内核两态的转换,提高了效率。
4 l* `' y6 F* t! H% E( I/ e# Y7 N
- P3 v, I$ R) dEthos - An Operating system for the Xen hypervisor¶
6 @+ h3 B) C/ {) MEthos 是UIC(University of Illinois at Chicago)正在开发的一款基于Xen和Mini-OS的轻量级操作系统。它开发的初衷是为了避免开发驱动程序、文件系统和网络设备。Ethos做为一个内核,只向外提供进程和系统调用接口。该项目的负责人Prof. Solworth称其为"Paired-OS"。
# O+ o- B* |  K" u9 A  k5 ?
7 Z5 x% D; v8 `- P0 @( e/ G' s
5 E$ k5 ^. D8 k" c: V  r* lXen上同时运行Ethos和标准linux。Ethos将文件系统、网络和设备驱动托管给linux,剩余部分由Ethos实现。
% M) {; u' j5 ]# v9 B# j4 M/ f* G6 O6 Y3 H
目前该项工作正在进展之中。
( Z* J$ a. e; A# z) K! l! C; c: Y: D9 v0 I5 N% O
参考文献¶  c/ r) F' u+ \7 ~. y
1.Satya Popuri, A tour of the Mini-OS kernel, http://www.cs.uic.edu/~spopuri/minios.html
) b/ P4 K* m5 z- ]
( B- P# y/ P7 q) h% F2.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.0 [; q- ]5 c( g( I+ K8 [# G! E3 T
8 n+ U7 p/ j& F/ T  H
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.  C7 q& e8 H- W# F- T1 s; h
6 Z+ a- q+ m' ~) L6 x1 [
4.Satya Popuri, Ethos - An Operating system for the Xen hypervisor, http://www.cs.uic.edu/~spopuri/ethos.html3 ^+ w! k/ R& l& [4 H) t
* {. |/ v6 a; d
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 15:22 , Processed in 0.171875 second(s), 24 queries , Gzip On.

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

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

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