Linux *** 作系统由什么组成?

Linux *** 作系统由什么组成?,第1张

Linux系统结构一般有3个主要部分:内核kernel、命令解释层Shell或其他 *** 作环境、实用工具
1Linux内核
内核是系统的核心,是运行程序和管理磁盘、打印机等硬件设备的核心程序。 *** 作系统向用户提供一个 *** 作界面,它从用户那里接收命令,并且把命令送给内核去执行。
当 Linux安装完毕之后,一个通用的内核就被安装到主机中,这个通用内核能满足绝大部分用户的需求,但普遍适用性内核对具体的某台主机来说,可能有一些并不需要的内核程序将被安装。因此,Linux允许用户根据主机的实际配置定制 Linux的内核,从而有效地简化 Linux内核,提高系统启动速度。
2Linux Shell
Shell是系统的用户界面,提供了用户与内核进行交互 *** 作的接口。它接收用户输入的命今,并且把它送入内核执行。 *** 作系统在系统内核与用户之间提供 *** 作界面, Linux存在多种 *** 作环境,分别是基于图形界面的集成桌面环境和基于Shell命令行环境。
Shell是一个命令解释器,它解释由用户输入的命令,并且送到内核。Shell编程语言具有普通编程语言的很多特点,如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
作为命令行 *** 作界面的替代, Linux还提供了像 Windows那样的可视化图形界面X-window的图形用户界面。
3实用工具
标准的 Linux系统都有配套的实用工具程序,如编辑器、浏览器、办公套件及其它系统管理工具等,用户可以自行编写需要的应用程序。

学院北京101407)
(版权归原作者所有)
摘要
文章介绍了作者在过击5年中在微内核技术上所做的工作.由于集成电路、计算机网络、分布式处理、多机并行处理、容错等技术的迅速发展,面向单处理机,采用内核不可抢占技术的Unix *** 作系统已经很难适应硬件技术的发展.为了适应以上技术的发展,Unix *** 作系统的内核越做越大,越做越复杂.完全丧失了其初始设计目标:系统短小精悍,容易理解.卡内基梅隆大学在美国国防部、国家科学基金的资助下,于1986年推出了一个基于微内核结构的 *** 作系统Math.口:随后.斯坦福大学等研究机构纷纷发表了他们在这个领域所做的工作, 各个大公司纷纷推出了基于微内核结构的 *** 作系统、D 微内核技术已成为新一代 *** 作系统体系结构的研究热点.
基于微内核结构的 *** 作系统和传统 *** 作系统相}匕,具有以下特点:① 内核精巧.通常内核只由任务管理、虚存管理和进程间通信3个部分组成.传统 *** 作系统内核中的许多部分都被移出内核.采取服务器方式实现;② 面向多处理机和分布式系统.基于微内核的 *** 作系统,在内核中引入了多处理机调度和管理机制,并引入了细粒度并发机制——
线程,使得多个处理机可以在同一个任务中并行地执行;③ 基于客户/服务器体系结构.在微内核结构的 *** 作系统中,任务间通信机制—— 消息机制是系统的基础, *** 作系统的各种功能都以服务器方式实现,向用户提供服务.用户对服务器的请求是以消息传递的方式传给服务器的.
“八五”期间,耪们在国家“八五攻关项目的支持下,对 *** 作系统微内核技术进行了探入研究,在微内核系统调度技术、存储管理技术、计时模型、微内核系统扩展技术及微内核 *** 作系统原型系统构造方面取得了一些研究成果.本文将介绍这些研究成果
正文
1 微内核系统调度技术
与传统的 *** 作系统内核相比,微内核调度系统中最突出的特征是增加了处理机和处理机集及线程的管理,并且向用户提供了灵活的手段来控翩自己的程序在处理机上的运行.这{羊,微内核系统就能很好地支持多处理机体系结构.同时,线程为用户提供了细粒度的并行处理机制,使得同一个用户任务中的不同线程可以同时在多个处理机上运行.
与进程相比,线程中所带的资源很少,因此,创建线程和撤消线程的开销就比进程小.线程也称为“轻进程.在系统调度中,线程的切换开销也比进程步,但是不同任务中的线程切换会引起任务的切换,在这种情况下,线程和进程的调度开销就变成一样了.为了优化系统效率,减步由于线程切换而弓I起的任务切换,在调度算法中加入了以下代码:
IF (所选中的线程和当前运行的城程属于同一十任务)
THEN 不做任务切换}
ELSE进行任务切换 *** 作}
显然,这种方法在某种情况下会对系统性能有所帮助,但是这种方法在很大程度上属于一种“被动的,或者说是一种“碰运气”的方法.另外,单纯以线程为主的调度算法对用户任务有失公平性,以线程为主的调度算法是完全参照传统 *** 作系统中的调度算法设计而成的.当线程投入运行时,系统为它分配周定大小的时间片,系统中线程按时间片轮转.这样,就产生了公平性问题:如果一个任务中有两个线程,那么,从理论上讲,它将比只用一个线程实现的任务多获得近1倍的处理机时间.在传统的进程调度系统中,一个用户可以通过创建多个进程来获得更多的处理机调度机会,但是,它是建立在增加了创建进程和进程间通讯的系统开销代价的基础上的相比之下,创建线程的开销非常小,同一任务间的线程之闭通讯开销也很小为了解决上述问题,我们提出并实现了一种将传统的任务和新的线程调度机翩相结合的方法:以任务为单位分配时间片(这样可以保证调度的公平性),在线程调度时,当一个线程不是由于任务时间片用完的原因而放弃处理机时,只要系统中没有高优先级线程,就从本任务中选取线程,从而使得由线程切换而引起的任务切换 *** 作开销达到最小.
从目前的发展来看,用户任务的并行粒度越来越小,即用户任务中的线程越来越多,而每个线程所执行的 *** 作会越来越步.因此,使用线程+任务的方法可以有效地减少单纯的以线程为主的系统调度所引起的系统开销.
2 微内核虚拟存储管理技术
微内核虚拟存储管理系统弓『入了存储对象(Memory Object)的概念,将物理内存看成外部存储对象的(如磁盘)高速缓存(Cache),实现了虚拟存储器写时拷贝(Copy onWrite)技术,引入了lazy evaluation技术.定义了虚拟存储器和硬件存储管理机制的接口(Pmap),实现了与机器无关的虚拟存储系统.
虚拟存储器写时拷贝算法是微内核虚拟存储管理系统的核心算法.它的弓f入使得虚拟存储器管理的效率大大提高了一步.但是,它的实现依赖于硬件存储管理机制的页面保护机制,对于一个具有写时拷贝共享属性的存储区,其页面保护被设置成写保护.多个用户可以共享的方式对它进行读 *** 作,但是,当用户试图对这块区域进行写 *** 作时,将产生写保护故障,页面故障管理程序将为用户进程复制物理页面.从而达到写时拷贝的目的.
在I386体系结构下,只有用户态页面允许写保护,在其他机器状态下,硬件存取机制将绕过页面保护机翩,直接对页面进行写 *** 作.在这种状态下,写时拷贝算法将失效.而在微内核体系结构中,可能有各种状态下的服务器,如在内核态下运行的服务器.为了解决这个问题。我们引入了写时拷贝和访问时拷贝(Copy oil Reference)相结合的算法.
即在用户态上使用写时拷贝算法,在其他状态下使用访问时拷贝算法来替换写时拷贝算法,以解决写时拷周算法失效的问题.访问时拷贝算法的实现依赖于页面保护机制的映页机制.这样,在其他状态下,在设置页面保护时将写保护改成映页即可.新的方法在效率上比写时拷贝算法低,但是比完全拷贝的方法高出许多,特别是与lazy evaluation技术相配合时
效率会更高.由于微内核提供的写时拷贝算法是对用户透明的,即对于用户编写的任何状态下的服务器都将使用写时拷贝算法.因此,在I386体系结构下,在非用户态上运行的用户服务器有可能出错,新的算法解决了这个问题.
3 微内核计时模型
在传统 *** 作系统中,为统计出每个进程的处理机时间使用量的单元.系统计时一般是放在处理机时钟中断服务程序中.系统
IF (当前盎程处于用户态)
增加当前进程的用户奋处理机时间使用量
在每个进程结构中都没有统计进程使用处理机时间
般采用如下代码段来进行用户进程的时间统计.
ELSE
增加当前进程的系统态处理机时闻使用量
由于在传统的 *** 作系统中, *** 作系统提供的服务完全由 *** 作系统内核来完成。用户通过系统调用进入内核来取得服务.因此,采用上述方法能比较准确地统计出用户所用的处理机时间.但是,这种计时方法是一种比较粗糙的计时方法.每次时钟中断时,它就将一个固定的时间片(时钟中断周期)加入披中断的进程中,而不管该进程是否完全使用了这些处理机对向.由于这种方法实现起来非常简单,系统开销很小,几乎所有的 *** 作系绕都采用了这种方法.在新的 *** 作系统中引入了细粒度的并行执行部件—— 线程。对于线程的计时也采用了和进程相同的方法.为了取得精确的处理机时同统计精度.一些新型 *** 作系统弓『入了新的计时机制.如MACH 3.0中引^了基于时间戳的精确计时机制.在微内核体系结构下.传统的 *** 作系统功能是通过服务器的方式来实现的.服务器和用户任务一样,也作为一个进程运行.当用户进程调用 *** 作系统服务时,微内核通过消息将系统服务的参数传递给 *** 作系统服务器,由 *** 作系统服务器来完成用户请求,并将结果通过消息传递给用户进程.这样,如果采用传统的方法来进行进程的处理机时问统十。就会将 *** 作系统为用户提供服务所用的处理机时间记入服务器中.而不是用户进程中.
为了解决这个问题,我们引^了委托线程的概念,建立了新的用户进程计时模型.在客户/服务器模型中,用户通过消息请求服务器的服务,服务器接收用户的消息完成用户的请求,再通过消息将结果传给用户.在这种体系结构下,可看成用户将自己的一部分工作委托给服务器完成,服务器是在为委托线程服务.当用户线程向服务器发出请求时,将用户线程标识传递给服务器,当服务器中的某个线程处理这个请求时,将用户线程标识记^服务器线程结构中的委托线程域中.在系统时钟中断服务程序中增加为委托线程计时的代码。就可将 *** 作系统服务器为用户进程限务的时同计算到用户进程中.
IF(当前线程结构中有委托线程)
IF(当前线程赴于用户态)
增加委托线程的用户态赴理机时间使用量
ELSE
增加委托线程的系统态处理机时间使用量
在多服务器体系结构下,一个用户请求往往需要多个服务器的协同服务,如一个文件读 *** 作,需要文件服务器的服务,如果文件服务器发现数据存放在磁盘中,它就需要请求设备服务器的眼务,设备服务器实际上是在为用户线程服务.因此,在多服务器情况下,当一个服务器向另一个服务器发出请求时,必须将自己的委托线程标识号传递给目标服务器.这样, *** 作系统为一个线程提供所有服务所使用的处理机时间都将计算到用户线程中击.为了完成以上功能,必须对微内核的消息传递机制进行扩充,使用户在请求服务时能将线程的标识传递给服务器,服务器在接收消息时能接收到委托线程标识.所有这些 *** 作必须对用户透明.微内核的消息传递机制由消息发送和消息接收两部分组成.通过在这两个原语中加入以下逻辑来实现委托线程标识的发送和接收.
SEND :
IF(当前线程结构中有委托线程标识)
将委托线程标识传递出去
ELSE
将当前线程的标识传递出击
RECEIVE:
IF(当前线程是服务器)
将委托线程号放凡服务器线程结构
在发送原语中,可将委托线程标识从一个服务器传递到另一个服务器.在接收逻辑中,通过增加服务器标识的判断可以避免非服务器线程之间的偶发通讯而导致的用户线程的计时错误.
4 结论
微内核技术是当今 *** 作系统发展的最新成果.在体系结构方面,它采用了面向对象技术来描述 *** 作系统内核对象,提出并实现了基于客户服务器体系结构的 *** 作系统.在算法方面,提出了许多高教新颖的算法,如线程及处理机调度算法、写时拷贝算法、与硬件无关的存储管理算法以及精确计时算法等等.在国产微内核 *** 作系统COSIX2.0的研制过程中,通过对国外微内核技术的消化和研究,提出并实现了一些新的算法和模型,改进了系统的性能,提高了系统的可靠性,做到了有所继承,有所刨新目前,我们正在进行基于微内核的JAVA虚拟机,支持服务质量(Quality of Services)的调度系统微内核热重启(Hot Restart)技术的研究.以上内容是我们一部分研究工作的总结.

分类: 电脑/网络 >> *** 作系统/系统故障
问题描述:

什么是 *** 作系统的内核??能不能打个比喻?

解析:

*** 作系统内核 *** 作系统内核是指大多数 *** 作系统的核心部分。它由 *** 作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。 *** 作系统内核通常运行进程,并提供进程间的通信

C/S结构

服务器-客户机,即Client-Server(C/S)结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。客户机通过局域网与服务器相连,接受用户的请求,并通过网络向服务器提出请求,对数据库进行 *** 作。

服务器接受客户机的请求,将数据提交给客户机,客户机将数据进行计算并将结果呈现给用户。服务器还要提供完善安全保护及对数据完整性的处理等 *** 作,并允许多个客户机同时访问服务器,这就对服务器的硬件处理数据能力提出了很高的要求。

扩展资料

C/S结构的优点——

(1)应用服务器运行数据负荷较轻。

最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。

(2)数据的储存管理功能较为透明。

在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立订单这样的规则。

Linux 内核设计的理念主要有这几个点:

MutiTask,多任务

SMP,对称多处理

ELF,可执行文件链接格式

Monolithic Kernel,宏内核

MutiTask

MutiTask 的意思是多任务,代表着 Linux 是一个多任务的 *** 作系统。多任务意味着可以有多个任务同时执行,这里的「同时」可以是并发或并行:

对于单核 CPU 时,可以让每个任务执行一小段时间,时间到就切换另外一个任务,从宏观角度看,一段时间内执行了多个任务,这被称为并发。

对于多核 CPU 时,多个任务可以同时被不同核心的 CPU 同时执行,这被称为并行。

SMP

SMP 的意思是对称多处理,代表着每个 CPU 的地位是相等的,对资源的使用权限也是相同的,多个 CPU 共享同一个内存,每个 CPU 都可以访问完整的内存和硬件资源。

这个特点决定了 Linux *** 作系统不会有某个 CPU 单独服务应用程序或内核程序,而是每个程序都可以被分配到任意一个 CPU 上被执行。

ELF

ELF 的意思是可执行文件链接格式,它是 Linux *** 作系统中可执行文件的存储格式;

ELF 文件格式

ELF 把文件分成了一个个分段,每一个段都有自己的作用,具体每个段的作用这里就不详细说明了,感兴趣的同学可以去看《程序员的自我修养——链接、装载和库》这本书。

另外,ELF 文件有两种索引,Program header table 中记录了「运行时」所需的段,而 Section header table 记录了二进制文件中各个「段的首地址」。

那 ELF 文件怎么生成的呢?

我们编写的代码,首先通过「编译器」编译成汇编代码,接着通过「汇编器」变成目标代码,也就是目标文件,最后通过「链接器」把多个目标文件以及调用的各种函数库链接起来,形成一个可执行文件,也就是 ELF 文件。

那 ELF 文件是怎么被执行的呢?

执行 ELF 文件的时候,会通过「装载器」把 ELF 文件装载到内存里,CPU 读取内存中宏内核的特征是系统内核的所有模块,比如进程调度、内存管理、文件系统、设备驱动等,都运行在内核态。

不过,Linux 也实现了动态加载内核模块的功能,例如大部分设备驱动是以可加载模块的形式存在的,与内核其他模块解藕,让驱动开发和驱动加载更为方便、灵活。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12956471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存