Linux与其他类Unix内核的比较

单块内核(Monolithic kernel)
它是一个庞大、复杂的自己做(do-it-yourself)程序,构成几个逻辑上独立的成分。在这一点上,它是相当传统的,大多数商用Unix变体也是单块结构。(一个显著的例外是卡耐基-梅隆大学的Mach 3.0,它遵循微内核(microkernel)的方法。)关于Linux内核结构的疑问,在我们99年分析内核就进行了分析。原来,Linux采用了一种原始的结构方式,所谓的单块结构,就是我们所说的模块结构。整个内核就是一个大的模块,各个子系统就是一个个小模块,模块之间可以直接互相调用(如此简单的东西,曾困惑了我好长时间)

编译和静态连接的传统Unix内核
大部分现代操作系统内核可以动态地装载和卸载部分内核代码(如设备驱动程序就是典型),通常把这种结构叫做模块(module)。Linux对模块的支持是很好的,因为它能动态地按需装载或卸载模块。在主要商用Unix变体中,只有SVR4.2和Solaris内核有类似特点。这一特点简直是太好了。内核就像一个大的圆球。对它的修改,如果,每修改一下,就编译一次,多麻烦。现在好了,你写一个驱动程序,你只需要把它编译成模块,然后插入到内核就好了

内核线程
一些现代Unix内核,如Solaris 2.x和SVR4.2/MP,被组织成一组内核线程(kernelthread)。内核线程是一个能被独立调度的可执行上下文;也许它与用户程序相关,也许仅仅执行一些内核函数。线程之间的上下文切换比普通进程之间的上下文切换花费的代价要少得多,因为前者通常在同一个地址空间执行。Linux内核线程以一种十分受限的方式来周期性地执行几个内核函数;因为Linux内核线程不能执行用户程序,因此,它们并不代表基本的可执行上下文的抽象。solaris内核中,主体就是内核线程。所谓内核线程,其实就是运行在内核态能独立运行的函数。你自己也可以写内核线程了,所调用的函数都是内核函数,其运行在内核态,想想,效率有多高。

多线程应用程序支持
大多数现代操作系统在某种程度上都支持多线程应用程序,也就是说,这些用户程序是根据很多相对独立的执行流来设计的,而这些执行流之间用共享应用程序的大部分数据结构。一个多线程用户程序由很多轻量级进程(lighweightprocess,LWP)组成,这些进程可能对共同的地址空间、共同的物理内存页、共同的打开文件等等进行操作。Linux定义了自己的轻量级进程版本,这与SVR4、Solaris等其他系统上所使用的类型有所不同。当LWP的所有商用Unix变体都基于内核线程时,Linux却把轻量级线程当作基本的可执行上下文,通过非标准的系统调用clone( )来处理它们。

抢占式内核
当采用“可抢占的内核”选项来编译内核时,Linux2.6可以随意交错执行处于特权模式的执行流。除了Linux2.6,还有一些传统的、通用的Unix系统(如Solaris和Mach3.0)是完全的抢占式内核。

如果进程进入TASK_RUNNING状态,内核检查它的动态优先级是否大于当前运行进程的优先级。如果是,当前执行的进程被中断,并调用调度程序选择优先级搞的进程执行。例如,如果一个文本编辑程序和一个编译程序正在执行。文本编辑程序是一个交互式程序,因此它的动态优先级高于编译程序。不过因为编辑程序交替于用户暂停思考与数据输入之间,因此它经常被挂起;此外,两次击键之间的平均延迟相对较长。然而,只要用户一按键,中断就发生,内核唤醒文本编辑程序。内核也确定编辑程序的动态优先级高于编译程序,因此,编辑进程的TIF_NEED_RESCHED标志被设置,如此来强迫内核处理完中断时激活调度程序选择编辑进程并执行进程切换。

多处理器支持
几种Unix内核变体都利用了多处理器系统。Linux 2.4支持对称多处理器(SMP):系统不仅可以使用多处理器,而且任何一个处理器可以处理任何一个任务,任务之间没有任何区别。尽管通过一个单独的“大内核锁”使得内核中的少数代码依然串行执行,但公平地说,Linux2.4接近优化使用SMP。

文件系统
Linux标准文件系统呈现出多种风格。如果你没有特殊需要,就可以使用普通的Ext2文件系统。如果你想避免系统崩溃后冗长的文件系统检查,就可以切换到Ext3。如果你不得不处理很多小文件, ReiserFS文件系统可能就是最好的选择。 除了Ext3和ReiserFS,还可以在Linux中使用另外几个日志文件系统,即使它们没有包含在香草Linux树中;这些文件系统包括IBMAIX的日志文件系统(Journaling FileSystem,JFS)和SGI公司Irix系统上的XFS文件系统。有了强大的面向对象虚拟文件系统技术(出自于Solaris和SVR4),把外部文件系统移植到Linux就变得相对容易。Linux的文件系统完全继承了Unix的技术风格,精简而又别具一个。Unix在二十多年前所设计的文件系统,不管是安全还是支持网络方面,依然独领风骚。

流(STREAMS)
尽管在现在大部分的Unix内核内包含了SRV4引入的I/O流子系统,并且已变成编写设备驱动程序、终端驱动程序及网络协议的首选接口,但是Linux并没有与此类似的子系统。

 

你可能感兴趣的:(Linux,内核,linux,unix,solaris,linux内核,文本编辑,多线程)