- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统内核设计.doc
操作系统内核设计
胡亦遂
2002年8月-11月
写在前面
这是我的梦想。出于各种原因,有来自兴趣爱好的、有来自对现状的感慨、有来自外界的激励……我曾经怀着一腔热血,坚定地说“我要写OS”。
进了大学,我学到了很多、看到了很多,忽然发现自己已不像以前那样富有激情,我的热情正逐渐被理智取代,我不再说那句话,我感觉自己似乎不会这么做。
时间证明了世界上有那么多“巧”的事情。我曾经费劲心思寻找IA-32方面的资料,但一无所获,加上测试简单的保护模式代码而频繁重启计算机的恶劣环境和极低的效率,更大地打击了我的信心,“OS,那是一件遥远的事情……”。2002年7月,就在暑假开始之前,我在图书馆无意中发现了《Intel Pentium User’s Manual——Volume 3》内容涵盖了全部的IA编程细节,——这个没什么大不了的,其实我早有了《IA-32 Software Developer’s Manual》Volume 1-3电子版——我打算回家去看看,总比看电子版舒服吧。不久,同学介绍给我一个软件——Virtual PC,我第一次看到如此好玩的东西,有了它,我就可以玩转各种操作系统,轻松安全。但是我总觉得用它玩现成的OS缺了点什么,Virtual PC不仅提供我们多操作系统的管理能力,更重要的是它提供了我们一个方便安全的实验环境——忽然间,OS又近在眼前!似乎我注定要写一个OS。
于是,我开始写OS。我不清楚为什么要这么做,可能原因太多了。这是一个全新的环境,我看到了许多我从未看到也是我在以前这种传统环境下不可能看到的东西,也解决了许多无法解决的问题。我又重新找回了我刚开始学电脑时的感觉,那种感觉,现在看起来真的太好了,以至于我不再愿意编写其他的基于现有平台之上的应用程序,“那些,不过如此如此,没什么意思”。
OS的世界是一个曲曲折折世界(现在是,可能以前不是),在微软大行其道一统天下的今天,从头做一个OS意味着什么?我从未多想这些问题,因为他们会阻止我继续写我的OS。当我再次反省自己为什么写OS的时候,我发现自己的动机特别单纯,为了兴趣、为了学习、为了我曾经的梦想。
和Linus这样的高手相比,我什么都不是,我无法如此轻松地说一句“Just for fun”,现实一点,我还是说“Just for study”。
时代给了我们很多机会,现在写OS并不是一件很困难的事,至少可以看看Linux源码。我们现在用得多的是Windows,分析Windows也不困难,有了足够的Windows编程经验,读些微软的文档,加上现在琳琅满目跟踪工具(首推SoftICE),不难发现Windows的很多Solutions是很不错的。我的设计来自于实践、学习和思考,我充分借鉴了Linux和Windows的一些处理方法,根据自己的理解,设计自己的解决方案。在具体操作时,我的内核中会有一些Linux和Windows的影子,但一切都是基于我自己的理解和设计。
这部分仅讨论OS内核的问题,事实上关于OS,那是一个涉及面很广的话题,内核仅是其中的很小一部分,以下将以OS Kernel代表本文的主角。
目录
系统概述
基本组成和行为
内存格局
任务调度
文件系统
其他
内存管理
逻辑页
线性页表映射
动态请页机制
页管理
虚存管理
内存格局
内存映射
任务调度
调度模型
进程与线程模型
中断与Critical-Section问题
内核机制
文件系统
资源集中与统一
资源汇集
资源管理模块
本地文件系统
VFS接口
高速缓存
XSFS文件系统
设计思想
文件系统结构
数据块位图
流
目录结构
系统概述
OS Kernel是一个基于IA-32的纯32位内核,根据最初的设计,OS Kernel将基于Intel Pentium或更新的CPU。出于设计背景和目标考虑,OS Kernel将放弃所有兼容性(当然,会遵循现有的标准),以实验为目的,追求架构的合理和更优化。在最初的设计过程中,将基本遵循常规操作系统行为特征,除此之外,设计者可以加入合理、新颖的特性,总之,OS Kernel首先是个实验平台。
一、基本组成和行为
OS Kernel的设计目标是一个可扩展的微内核架构的操作系统内核,因此,这部分只包含必需的功能模块。根据第一期设计,包含模块如下:
内存管理: 负责内核与用户进程的内存管理,包括页管理、堆管理和维护模块;
内核控制台: 内核初始化时用到的控制台,负责屏幕的输出和键盘输入;
虚拟文件系统: 整个系统唯一的文件系统,管理了绝大多数的系统资源;
本地文件系统: 提供了本地文件系统(Native FS)层的支持(XSFS文件系统);
任务调度: 硬件层(CPU层)的任务调度;
设备
文档评论(0)