Linux与其他商用Unix内核竞争的优势

1、单块结构的内核:它是一个庞大、复杂的自我构建(do-it-yourself)程序,由几个逻辑上独立的成份构成,在这一点上,它是相当传统的深入理解 linux 内核,大多数商用Unix变体也是单块结构。

2、编译并静态链接的传统Unix内核:大部份现代操作系统内核可以动态地装载和卸载部份内核代码,一般把这部份代码也称模块(module)。Linux对模块的支持挺好,可以手动按须要安装或卸载模块。

3、内核线程:一些Unix内核如Solaris被组织成一组内核线程(kernelthread),内核线程是一个能被独立调度的执行环境(context);其实它与用户程序有关深入理解 linux 内核,其实仅仅执行一些内核函数。线程之间的上下文切换比普通进程之间的上下文切换耗费的代价要少很多,由于后者一般在同一个地址空间执行。

4、多线程应用程序支持:大多数现代操作系统在某种程度上都支持多线程应用程序,也就是说那些用户程序是按照好多相对独立的执行流来设计的,而这种执行流之间共享应用程序的大部份数据结构。一个多线程用户程序由好多轻量级进程(lightweightprocess)组成,这种进程可能对共同的地址空间、共同的化学显存页、共同的打开文件等等进行操作。

5、抢占式内核:当采用“可占据的内核”选项来编译内核时,可以随便交错执行处于特权模式的执行流。

6、多处理器支持:几种Unix内核变体都借助了多处理器系统。几个处理器可以无区别地处理任何一个任务。

7、文件系统:Linux标准文件系统呈现出多种风格。有普通的Ext2文件系统,防止系统崩溃后繁琐的文件系统检测的Ext3,有好多小文件时用ReiserFS。

8、STREAMS:虽然大部份的Unix内核内包含了SVR4引入的STREAMSI/O子系统,并且Linux并没有与此类似的子系统。

多用户系统

多用户系统(multiusersystem)就是一台能并发和独立地执行分别属于两个或多个用户的若干应用程序的计算机。“并发”(concurrently)意味着几个应用程序能同时处于活动状态并竞争各类资源,如CPU、内存、硬盘等等。“独立”(independenctly)意味着每位应用程序能执行自己的任务,而无需考虑其他用户的应用程序在干哪些。

多用户操作系统必须包含以下几个特征:

查证用户身分的认证机制;

避免错误的用户程序阻碍其他应用程序在系统运行的保护机制;

避免有恶意的用户程序干涉或窥探其他用户活动的保护机制;

限制分配给每位用户的资源数的记帐机制。

深入解析linux内核_《深入理解linux内核》_深入理解 linux 内核

用户和组

在多用户系统中,每位用户在机器上都有私用空间;典型地,他拥有一定数目的c盘空间来储存文件、接受私人电邮等。操作系统须要保证所有用户的私有空间仅仅对该用户可见。

所有的用户由一个惟一的数字来标示,这个数字叫UserID,UID。一般一个计算机系统只能由有限的人使用,用户的UID会匹配一个口令。

为了和其他用户选择地共享资料,每位用户是一个或多个用户组的一名成员,组由惟一的用户UserGroupID来标示。每位文件也正好与一个组相对应。拥有文件的用户具有对文件的读写权限,同组用户仅有只读权限,而系统中的其他用户没有对文件的任何访问权限。

任何Unix操作系统都有个特殊的用户,称作root,即超级用户。系统的管理员必须以root身分登入,可以访问每位文件,干涉每一个正在执行任务的用户程序。

进程

所有的操作系统都使用一种基本的具象:进程(process)。一个进行可以定义为:“程序执行的一个实例”,或则一个运行程序的“执行上下文”。传统的操作系统一个进程是指在连续的地址空间内执行一个单独的指令序列;现代操作系统容许具有多个执行流的进程。Unix是具有占据式进程的多处理器操作系统。

类Unix操作系统采用进程/内核模式。每位进程都以为它是系统中惟一的进程,可以独占操作系统所提供的服务。只要进程发出系统调用,硬件都会把特权模式由用户态转为内核态,之后进程以特别有限的目的开始一个内核过程的执行。这样,操作系统在进程的执行上下文中起作用,以满足进程的恳求。一旦这个请求完全得到满足,内核过程将促使硬件回到用户态,之后进程从系统调用的下一条指令继续执行。

内核体系结构

如前所述,大部份Unix内核时单模块结构:每一个内核层都被集成到整个内核程序中,并代表当前进程在内核态下运行。相反,微内核(microkernel)操作系统只须要内核有一个很小的函数集,一般包括几个同步子句、一个简单的调度程序和进程间通讯机制。运行在微内核之上的几个系统进程实现从前操作系统级实现的功能linux移植,如显存分配、设备驱动、系统调用处理程序等。

虽然关于操作系统的学术研究都是面向微内核的,并且这样的操作系统比单块模块效率低。微内核的操作系统促使系统程序员采用模块化的方式,由于任何操作系统层都是一个相对独立的程序,这些程序必须通过定义明晰而清晰的软件插口与其他层交互。为了达到微内核理论上的好多优点而又不影响性能,Linux内核提供了模块(module)。模块是一个目标文件,其代码可以在运行时链接到内核或从内核解除链接。这些目标代码一般由一组函数组成,拿来实现文件系统、驱动程序或其他内核下层功能。与微内核操作系统的内层不同,模块不是作为一个特殊的进程执行的,相反linux虚拟主机,与任何其他静态链接的内核函数一样,它代表当前进程在内核态下执行。

使用模块的主要优点包括:

模块化方式:由于任何模块都可以在运行时被链接或解除链接,因而系统程序员必须提出明晰的软件插口以访问由模块处理的数据结构。

平台无关性:不依赖某个硬件平台。

节约显存使用:当须要模块功能时,把它链接到正在运行的内核中,否则解除链接。

无性能损失:模块的目标代码一旦被链接到内核,其作用与静态链接的内核的目标代码完全的等价。因而,当模块被调用时,无需显式地进行消息传递。

本文原创地址:https://www.linuxprobe.com/lyqtsyunhdjz.html编辑:刘遄,审核员:暂无