Ten Years

十年一剑!
-------------------------------------------------
Operating System Research / Technique

Tuesday, September 26, 2006

(HotOS'03 Note)Hardware Works, Software Doesn't: Enforcing Modularity with Mondriaan Memory Protection


Hardware Works, Software Doesn't: Enforcing Modularity with Mondriaan Memory Protection
Emmett Witchel et al.
HotOS 2003



本文讨论(内核)模块边内存界保护的问题,基于称为Mondriaan Memory Protection(MMP)的细粒度内存保护硬件机制进行研究。MMP是作者发表在ASPLOS 2002中的Mondriaan Memory Protection一文中提出的。


MMP支持32-bit字的许可粒度,可以为内存保护提供很精确的控制。类似与TLB,MMP硬件包含称为protection lookaside buffer (PLB)的高速缓存,以提高速度。


在内核中使用MMP,需要解决几个主要的问题:
1. Memory supervisor,关于bootloader及保护域创建问题;
2. Stacks and threads,关于栈的分配和权限问题;
3. Cross-domain calls,关于跨保护边界的调用,call gate、return gate等。熟悉x86保护模式应该很容易接受这些概念。


对于硬件支持OS内存保护机制的问题,我向来兴趣不大。我认为在今天CPU arch和OS的发展现状下,同时修改任何两者难度很大,很多时候保证兼容性是压倒一切的。(当然,我也知道这样有些偏颇,更准确的应该说是我自己的研究思路是这样。)


文章中对于相关工作的总结不错。提到了各种保护机制:
1. Nooks:使用已有硬件支持驱动程序安全(我印象中是用分页);
2. Palladium:综合使用x86的分页和分段,但是share libraries很难使用分段实现,Palladium用分页实现,论文:SOSP 1999,Integrating segmentation and paging protection for safe, efficient and transparent software extensions.;
3. Capabilities:比较早,1966年,用在IBM AS400之类的系统上;
4. Lightweight remote procedure call (LRPC):类似于RPC,需要进行data marshaling and copying,在跨越保护边界时比较费;
5. Safe language:语言级别的保护,如类型安全语言(我觉得Cyclone应该算这一类),缺点是单一语言较难利用软件遗产,还有就是编译器的可信赖等问题;
6. Modern static analysis and model checking:对OS进行静态分析和模型检查(OSDI 2004上有几篇相关文章)。

0 Comments:

Post a Comment

<< Home