新增资源及索引表-王辉静项目5拓展资源_Linux、FreeBSD、Solaris三大系统内核比较.docx

新增资源及索引表-王辉静项目5拓展资源_Linux、FreeBSD、Solaris三大系统内核比较.docx

ID:35974531

大小:91.87 KB

页数:6页

时间:2019-04-29

新增资源及索引表-王辉静项目5拓展资源_Linux、FreeBSD、Solaris三大系统内核比较.docx_第1页
新增资源及索引表-王辉静项目5拓展资源_Linux、FreeBSD、Solaris三大系统内核比较.docx_第2页
新增资源及索引表-王辉静项目5拓展资源_Linux、FreeBSD、Solaris三大系统内核比较.docx_第3页
新增资源及索引表-王辉静项目5拓展资源_Linux、FreeBSD、Solaris三大系统内核比较.docx_第4页
新增资源及索引表-王辉静项目5拓展资源_Linux、FreeBSD、Solaris三大系统内核比较.docx_第5页
资源描述:

《新增资源及索引表-王辉静项目5拓展资源_Linux、FreeBSD、Solaris三大系统内核比较.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Linux、FreeBSD、Solaris三大系统内核比较1、我个人认为作者MAX对Linux的了解不像他对Solaris那样深入,我不知道也没法知道他的下列关于Linux的内容来自自己的代码阅读分析还是只是来自第三方的文档资料而未经自己实地验证;2、我已经尽量符合原意地翻译了,当然中间实在忍不住的地方也插两句自己的话;3、无论是只阅读这一篇文章,还是看其他东西,我都觉得,保持自己头脑清醒很重要;MaxBruning是一名教师/资讯专家,他的教授内容包括Solaris内部组织,设备驱动,内核和应用的crash分析及调试,网络组织和其他一些特定科目(他的blog在blogspot,不

2、费点劲可能访问不了,所以也可以看看www.bruningsystems.com)。在解释这些子系统在Solaris中是如何实现的时候,他的学生们总会问“Linux里它是怎么工作的?”或者“FreeBSD里是这样,Solaris里呢?”这种经历最终让Max在OpenSolaris网站写了这篇AComparisonofSolaris,Linux,andFreeBSDKernels。文章里讨论了调度,内存管理和文件系统架构--这3个子系统在任何操作系统中都有普遍应用,而且他们是最well-understood的组件。目前很多分析或对比文章所引用的材料及代码都比较老,与现实脱节,Max推荐

3、如下几个多少比较uptodate的网站:SolarisVs.LinuxComparing MySQL PerformanceFastTracktoSolaris10AdoptionSolaris10HeadsforLinuxTerritory其实抛开3个系统之间的差别,他们也有很多相似之处。除了那些不同的命名习惯,这些OS在实现不同概念的时候采用了非常相似的方法。他们都支持线程的分时调度,支持最近未使用页面替换算法实现请求调页,支持虚拟文件系统层允许不同文件系统架构。这个系统里的一个好概念在另一个系统里也会采用。比如Linux也接受并实现了Solarisslab内存分配算法的概念。

4、FreeBSD代码里的很多术语在Solaris里也出现了(快去看看代码。。。)。考虑到这3个系统的源代码都能得到了,fxr.watson.org提供了系统源码的交叉阅读浏览,可能会发现很多有趣的地方。好了,温情默默的套近乎结束,进入正题。调度和调度器Solaris的调度单位是kthread_t,FreeBSd是thread,Linux是task_struct。抬高一级,Solaris的进程是proc_t,当然每个进程里的线程就是kthread_t;Linux的进程和线程都由task_struct表示,单线程的进程在Linux里是一个task_struct。单线程的进程在Solari

5、s里有一个proc_t,一个kthread_t,还有一个klwp_t表示。klwp_t提供了用户和内核模式线程切换的存储区。FreeBSD里的单线程进程有一个proc,一个thread和一个ksegrp。ksegrp是“内核调度的实体组kernelschedulingentitygroup”。三个系统的线程表示结构不同,不过都支持调度线程。和大家熟悉的基本一样,调度是基于优先级的。小小的数学问题是,在Linux和FreeBSD里,数字越小,优先级越高;而SUN的宝贝却喜欢数字越大,优先级越高。参考下表三个系统都更推崇interactive线程/进程(下面会提到interactive

6、怎么回事)。Interactive线程比compute-bound线程优先级要高,不过得到的时间片要少一些。Solaris,FreeBSD和Linux都使用每CPU的“运行队列runqueue”。FreeBSD和Linux有一个active队列和一个expired队列。名字说得很清楚了--系统从active上按照优先级选择线程进行调度。用完自己时间片的线程就从active搬到expired上(或者为了避免“饿死”的其他情况),active空以后,内核交换active和expired。FreeBSD还多一个idle队列--其他两个queue都空的时候才轮到这个。Solaris的概念是

7、每CPU“调度队列dispatchqueue”。线程用完时间片后,内核给其一个新优先级然后放回调度队列。所有3个系统的runqueue,对不同优先级的可运行线程都分别有链表。FreeBSD四个优先级共享一个链表,Solaris和Linux则每个优先级一个链表Linux和FreeBSD结合运行时间和睡眠时间计算线程的interactive-ness,Solaris查表。他们都不支持“gangscheduling”(有兴趣查Google即知,并行计算上的调度算法,大白话说

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。