*** 作系统中什么是强内核,什么是微内核

 *** 作系统中什么是强内核,什么是微内核,第1张

在资讯科学中,微内核(Microkernel),又称为微核心,是一个最小化的软件程式,它可以提供完整的 *** 作系统功能。微内核结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成;这些原语,仅仅包括了建立一个系统必需的几个部分;如线程管理,内存管理和进程间通信等。微核的目标是将系统服务的实现和系统的基本 *** 作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务器用于完成 *** 作系统中比较高级的 *** 作,这样的设计使内核中最内核的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分。微内核将许多OS服务放入分离的进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务。

单体内核:大内核,将OS的全部功能都做进内核中,包括调度、文件系统、网络、设备驱动器、存储管理。比如设备驱动管理、资源分配、进程间通信、进程间切换管理、文件系统、存储管理、网络等。单体内核是指在一大块代码中实际包含了所有 *** 作系统功能,并作为一个单一进程运行,具有唯一地址空间。大部分UNIX(包括Linxu)系统都采用的单体内核。
微内核:微内核与单体内核不同,微内核只是将OS中最核心的功能加入内核,包括IPC通信、地址空间分配和基本的调度,这些东西处在内核态运行。如:WINCE系统。

而其他功能如设备驱动、文件系统、存储管理、网络等作为一个个处于用户态的进程而向外提供某种服务来实现,而且这些处于用户态的进程可以针对某些特定的应用和环境需求进行定制。有时,也称这些进程为服务器。

从理论上来看,微内核的思想更好些,微内核把系统分为各个小的功能块,降低了设计难度,系统的维护与修改也容易。

谷歌的安卓系统采用的就是linux 单内核,苹果iOS 与苹果的Mac OS X *** 作系统一样,属于类Unix的单核商业 *** 作系统。

单核 *** 作系统想在所有类型的设备上都运行全新通用性系统。

谷歌目前正在开发的Fuchsia OS,完全推翻Linux架构,采用全新的Magenta内核

Fuchsia OS中的“Fuchsia”是紫红色的意思,也是一种名为“灯笼海棠”的花。该系统最早出现在媒体报道的时间是去年的9月份。当时谷歌悄悄地在GitHub上放出了该系统的代码,并上传了该项目的Logo。Fuchsia OS的Logo设计和安卓机器人不同,采用的是无限(∞)符号的变体。

在GitHub源代码中,可以看出Fuchsia OS是一个支持跨平台运行的 *** 作系统,除了智能手机外,还能在平板、PC甚至汽车娱乐系统上运行。这点和微软的“Windows One”概念以及阿里巴巴YunOS的跨设备理念不谋而合。它和前面提到的仙女座OS最大的区别在于,前者是想在所有类型的设备上都运行全新通用性系统,而后者则是将两款交互理念完全不同的系统强行杂糅在一起。

Fuchsia OS最大的亮点其实是在底层,它完全抛弃了安卓和Chrome OS系统的Linux内核,转而使用一种名为Magenta的全新核心。

Magenta具备两个Linux内核不具备的优势,一个是更为轻量级,另一个则是拥有更好的平台兼容性。Magenta同时支持ARM和X86两类架构,因此无论是手机还是PC运行从底层上就更加完善。

译内核,属于软件部分.
内核是 *** 作系统的内部核心程序,它向外部提供了对计算机设备的核心管理调用。我们将 *** 作系统的代码分成2部分。内核所在的地址空间称作内核空间。而在内核以外的统称为外部管理程序,它们大部分是对外围设备的管理和界面 *** 作。外部管理程序与用户进程所占据的地址空间称为外部空间。通常,一个程序会跨越两个空间。当执行到内河空间的一段代码时,我们称程序处于内核态,而当程序执行到外部空间代码时,我们称程序处于用户态。
从UNIX起,人们开始用高级语言(UNIX上最具有代表性的就是UNIX的系统级语言C语言)编写内核代码,使得内核具有良好的扩展性。单一内核(monolithic kernel)是当时 *** 作系统的主流, *** 作系统中所有的系统相关功能都被封装在内核中,它们与外部程序处于不同的内存地址空间中,并通过各种方式(在Intel IA-32体系中采用386保护模式)防止 外部程序直接访问内核结构。程序只有通过一套称作系统调用(system call)的界面访问内核结构。近些年来,微内核(micro kernel)结构逐渐流行起来,成为 *** 作系统的主要潮流。1986年,Tanenbaum提出Mach kernel,而后,他的minix和GNU的Hurd *** 作系统更是微内核系统的典范。
在微内核结构中, *** 作系统的内核只需要提供最基本、最核心的一部分 *** 作(比如创建和删除任务、内存管理、中断管理等)即可,而其他的管理程序(如文件系统、网络协议栈等)则尽可能的放在内核之外。这些外部程序可以独立运行,并对外部用户程序提供 *** 作系统服务,服务之间使用进程间通信机制(IPC)进行交互,只在需要内核的协助时,才通过一套接口对内核发出调用请求。
微内核系统的优点时 *** 作系统具有良好的灵活性。它使得 *** 作系统内部结构简单清晰。程序代码的维护非常之方便。但是也有不足之处。微内核系统由于核心态只实现了最基本的系统 *** 作,这样内核以外的外部程序之间由于独立运行使得系统难以进行良好的整体优化。另外,进程间互相通信的开销也较单一内核系统要大许多。从整体上看,在当前的硬件条件下,微内核在效率上的损失小于其在结构上获得的收益,故而选取微内核成为 *** 作系统的一大潮流。
然而,Linux系统却恰恰使用了单一内核结构。这是由于Linux是一个实用主义的 *** 作系统。Linux Tovarlds以代码执行效率为自己 *** 作系统的第一要务,并没有进行过一个系统的设计工作,而是任由Linux在使用中不断发展。在这样的发展过程中,参与Linux开发的程序员大多为世界各地的黑客们。比起结构的清晰,他们更加注重功能的强大和高效的代码。于是,他们将大量的精力放在优化代码上,而这样的全局性优化必然以丧失结构精简为代价,导致Linux中的每个部件都不能轻易被拆除。否则必然破坏整体效率。
虽然Linux是单一内核体系,但是它与传统的单一内核UNIX *** 作系统不同。在普通的单一内核系统中,所有的内核代码都是被静态编译联入的,而在Linux中,可以动态装入和卸载内河中的部分代码。Linux将这些代码段称为模块。(module),并对模块给予了强有力的支持。在Linux中,可以在需要时自动装入和卸载模块。
Linux不支持用户态线程。在用户态中,Linux认为线程就是共享上下文(Context)的进程。Linux通过LWP(light weight thread)的机制来实现用户态线程的概念。通过系统调用clone()创建新的线程。
Linux的内核为非抢占式的。即,Linux不能通过改变优先权来影响内核当前的执行流程。因此,Linux在实现实时 *** 作时就有问题。Linux并不是一个“硬”实时 *** 作系统。
在Linux内核中,包括了进程管理(process management)、定时器(timer)、中断管理(interrupt management)、内存管理(memory management)、模块管理(module management)、虚拟文件系统接口(VFS layer)、文件系统(file system)、设备驱动程序(device driver)、进程间通信(inter-process communication)、网络管理(network management)、系统启动(system init)等 *** 作系统功能的实现。
2、另一种便是硬件内核了,很多硬件都是有内核的.不过大体还是和软内核相联系,我这里简单的说一种内核吧.
核心(Die)又称为内核,是CPU最重要的组成部分。CPU中心那块隆起的芯片就是核心,是由单晶硅以一定的生产工艺制造出来的,CPU所有的计算、接受/存储命令、处理数据都由核心执行。各种CPU核心都具有固定的逻辑结构,一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元都会有科学的布局。
为了便于CPU设计、生产、销售的管理,CPU制造商会对各种CPU核心给出相应的代号,这也就是所谓的CPU核心类型。
不同的CPU(不同系列或同一系列)都会有不同的核心类型(例如Pentium 4的Northwood,Willamette以及K6-2的CXT和K6-2+的ST-50等等),甚至同一种核心都会有不同版本的类型(例如Northwood核心就分为B0和C1 等版本),核心版本的变更是为了修正上一版存在的一些错误,并提升一定的性能,而这些变化普通消费者是很少去注意的。每一种核心 类型都有其相应的制造工艺(例如025um、018um、013um以及009um等)、核心面积(这是决定CPU 成本的关键因素,成本与核心面积基本上成正比)、核心电压、电流大小、晶体管数量、各级缓存的大小、主频范围、流水线架构和支持 的指令集(这两点是决定CPU实际性能和工作效率的关键因素)、功耗和发热量的大小、封装方式(例如SEP、PGA、FC-PGA、FC-PGA2等等)、接口类型(例如Socket 370,Socket A,Socket 478,Socket T,Slot 1、Socket 940等等)、前端总线频率(FSB)等等。因此,核心类型在某种程度上决定了CPU的工作性能。
一般说来,新的核心类型往往比老的核心类型具有更好的性能(例如同频的Northwood核心Pentium 4 18A GHz就要比Willamette核心的Pentium 4 18GHz 性能要高),但这也不是绝对的,这种情况一般发生在新核心类型刚推出时,由于技术不完善或新的架构和制造工艺不成熟等原因,可能 会导致新的核心类型的性能反而还不如老的核心类型的性能。例如,早期 Willamette核心Socket 423接口的Pentium 4的实际性能不如Socket 370接口的Tualatin核心的Pentium III和赛扬,现在的低频Prescott核心Pentium 4的实际性能不如同频的Northwood核心Pentium 4等等,但随着技术的进步以及CPU制造商对新核心的不断改进和完善,新核心的中后期产品的性能必然会超越老核心产品。
CPU核心的发展方向是更低的电压、更低的功耗、更先进的制造工艺、集成更多的晶体管、更小的核心面积(这会降低CPU的生产成本从而最终会降低CPU 的销售价格)、更先进的流水线架构和更多的指令集、更高的前端总线频率、集成更多的功能(例如集成内存控制器等等)以及双核心和 多核心(也就是1个CPU内部有2个或更多个核心)等。CPU核心的进步对普通消费者而言,最有意义的就是能以更低的价格买到性能更强的CPU。
在CPU漫长的历史中伴随着纷繁复杂的CPU核心类型,以下分别就Intel CPU和AMD CPU的主流核心类型作一个简介。主流核心类型介绍(仅限于台式机CPU,不包括笔记本CPU和服务器/工作站CPU,而且不包括比较老的核心类型)。
Intel CPU的核心类型 :
Tualatin
这也就是大名鼎鼎的“图拉丁”核心,是Intel在Socket 370架构上的最后一种CPU核心,采用013um制造工艺,封装方式采用FC-PGA2和PPGA,核心电压也降低到了15V左右,主频范围从1GHz到14GHz,外频分别为100MHz(赛扬)和133MHz(Pentium III),二级缓存分别为512KB(Pentium III-S)和256KB(Pentium III和赛扬),这是最强的Socket 370核心,其性能甚至超过了早期低频的Pentium 4系列CPU。
Willamette
这是早期的Pentium 4和P4赛扬采用的核心,最初采用Socket 423接口,后来改用Socket 478接口(赛扬只有17GHz和18GHz两种,都是Socket 478接口),采用018um制造工艺,前端总线频率为400MHz, 主频范围从13GHz到20GHz(Socket 423)和16GHz到20GHz(Socket 478),二级缓存分别为256KB(Pentium 4)和128KB(赛扬),注意,另外还有些型号的Socket 423接口的Pentium 4居然没有二级缓存!核心电压175V左右,封装方式采用Socket 423的PPGA INT2,PPGA INT3,OOI 423-pin,PPGA FC-PGA2和Socket 478的PPGA FC-PGA2以及赛扬采用的PPGA等等。Willamette核心制造工艺落后,发热量大,性能低下,已经被淘汰掉,而被Northwood核心所取代。
Northwood
这是目前主流的Pentium 4和赛扬所采用的核心,其与Willamette核心最大的改进是采用了013um制造工艺,并都采用Socket 478接口,核心电压15V左右,二级缓存分别为128KB(赛扬)和512KB(Pentium 4),前端总线频率分别为400/533/800MHz(赛扬都只有400MHz),主频范围分别为20GHz到28GHz(赛扬),16GHz到26GHz(400MHz FSB Pentium 4),226GHz到306GHz(533MHz FSB Pentium 4)和24GHz到34GHz(800MHz FSB Pentium 4),并且306GHz Pentium 4和所有的800MHz Pentium 4都支持超线程技术(Hyper-Threading Technology),封装方式采用PPGA FC-PGA2和PPGA。按照Intel的规划,Northwood核心会很快被Prescott核心所取代。
Prescott
这是Intel最新的CPU核心,目前还只有Pentium 4而没有低端的赛扬采用,其与Northwood最大的区别是采用了009um制造工艺和更多的流水线结构,初期采用Socket 478接口,以后会全部转到LGA 775接口,核心电压125-1525V,前端总线频率为533MHz(不支持超线程技术)和800MHz(支持超线程技术),主频分别为533MHz FSB的24GHz和28GHz以及800MHz FSB的28GHz、30GHz、32GHz和34GHz,其与Northwood相比,其L1 数据缓存从8KB增加到16KB,而L2缓存则从512KB增加到1MB,封装方式采用PPGA。按照Intel的规划,Prescott核心会很快取代Northwood核心并且很快就会推出Prescott核心533MHz FSB的赛扬。
AMD CPU的核心类型:
Athlon XP的核心类型
Athlon XP有4种不同的核心类型,但都有共同之处:都采用Socket A接口而且都采用PR标称值标注。
Palomino
这是最早的Athlon XP的核心,采用018um制造工艺,核心电压为175V左右,二级缓存为256KB,封装方式采用OPGA,前端总线频率为266MHz。
Thoroughbred
这是第一种采用013um制造工艺的Athlon XP核心,又分为Thoroughbred-A和Thoroughbred-B两种版本,核心电压165V-175V左右,二级缓存为256KB,封装方式采用OPGA,前端总线频率为266MHz和333MHz。
Thorton
采用013um制造工艺,核心电压165V左右,二级缓存为256KB,封装方式采用OPGA,前端总线频率为333MHz。可以看作是屏蔽了一半二级缓存的Barton。
Barton
采用013um制造工艺,核心电压165V左右,二级缓存为512KB,封装方式采用OPGA,前端总线频率为333MHz和400MHz。
新Duron的核心类型
AppleBred
采用013um制造工艺,核心电压15V左右,二级缓存为64KB,封装方式采用OPGA,前端总线频率为266MHz。没有采用PR标称值标注而以实际频率标注,有14GHz、16GHz和18GHz三种。
Athlon 64系列CPU的核心类型
Clawhammer
采用013um制造工艺,核心电压15V左右,二级缓存为1MB,封装方式采用mPGA,采用Hyper Transport总线,内置1个128bit的内存控制器。采用Socket 754、Socket 940和Socket 939接口。
Newcastle
其与Clawhammer的最主要区别就是二级缓存降为512KB(这也是AMD为了市场需要和加快推广64位CPU而采取的相对低价政策的结果),其它性能基本相同。
至于CPU最强的内核,在笔记本方面, Dothan 是当前最强的内核,而台式电脑方面,Intel Prescott是很强的内核,AMD Athlon 64系列CPU的核心类型Clawhammer、Newcastle也很强。
上面都是网上找的,你有空也可多看看别人的资料.
祝福大家新年快乐!!!!

应当指出,在微内核OS中,由于采用了非常小的内核,以及客户/服务器模式和消息传递机制,这些虽给微内核OS带来了许多优点,但由此也使微内核OS存在着潜在的缺点。其中最主要的是,较之早期OS,微内核OS的运行效率有所降低。
效率降低的最主要的原因是,在完成一次客户对OS提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式及上下文的多次切换。然而,在早期的OS中,用户进程在请求取得OS服务时,一般只需进行两次上下文的切换:一次是在执行系统调用后,由用户态转向系统态时;另一次是在系统完成用户请求的服务后,由系统态返回用户态时。在微内核OS中,由于客户和服务器及服务器和服务器之间的通信,都需通过微内核,致使同样的服务请求至少需要进行四次上下文切换。第一次是发生在客户发送请求消息给内核,以请求取得某服务器特定的服务时;第二次是发生在由内核把客户的请求消息发往服务器时;第三次是当服务器完成客户请求后,把响应消息发送到内核时;第四次是在内核将响应消息发送给客户时。
实际情况是往往还会引起更多的上下文切换。例如,当某个服务器自身尚无能力完成客户请求,而需要其它服务器的帮助时,其中的文件服务器还需要磁盘服务器的帮助,这时就需要进行八次上下文的切换。
为了改善运行效率,可以重新把一些常用的 *** 作系统基本功能,由服务器移入微内核中。这样可使客户对常用 *** 作系统功能的请求所发生的用户/内核模式和上下文的切换的次数,由四次或八次降为两次。但这又会使微内核的容量明显地增大,在小型接口定义和适应性方面的优点也有所下降,同时也提高了微内核的设计代价。

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)技术的研究.以上内容是我们一部分研究工作的总结

简析Windows XP体系结构
Windows XP是一个把消费型 *** 作系统(Windows 9x核心系列)和商业型 *** 作系统(Windows NT核心系列)融合为统一系统代码的新型Windows *** 作系统,它的发布标志着微软在 *** 作系统领域“两条腿走路”的研发和营销策略的结束。
毫不夸张地说,Windows XP是 *** 作系统历史上的全才,既有华丽堂皇的外表,更有卓越不凡的性能。对于广大的电脑爱好者而言,除了关心Windows XP友好的界面、简易的 *** 作和齐全的功能外,是否还有更进一步认识它的兴趣呢?怎样开始我们对Windows XP的深层次认识呢——它的体系结构就是最佳的着眼点。
*** 作系统作为一种大型软件,在它的发展过程中,出现过多种多样的体系结构,概括起来,大致可以分为以下四种类型:模块组合结构、分层结构、虚拟机结构和客户/服务器结构(又称微内核结构)。历史上的众多 *** 作系统不外乎都采用了这些体系结构,例如我们熟知的DOS就是“模块组合结构”的代表。作为一个实际应用型的 *** 作系统,Windows XP没有单纯地采用某一种体系结构,而是把分层结构 *** 作系统和客户/服务器结构 *** 作系统的特点融合到了一起。
所谓分层结构,指的是把 *** 作系统的所有功能模块按照调用的次序分别划分为若干层,各层之间的模块只能单向依赖或单向调用。这样做的好处是:既把复杂的整体问题分解成了若干易于解决的相对独立的子模块;同时又使得各个子模块之间的结构关系很清晰明了,不容易隐藏潜在的逻辑错误,而且也便于在不同的硬件环境中移植。可以说,Windows XP的可靠性、稳定性和可移植性都跟它采用了分层的体系结构是有密切联系的。
当然,Windows XP采用的最主要的体系结构是客户/服务器结构,因为采用这种结构的 *** 作系统将非常适于应用在网络环境下。作为面向网络的 *** 作系统,Windows XP没有理由不采用客户/服务器结构来设计。该结构的内核只提供了 *** 作系统最基本的功能,如基本调度 *** 作和中断处理等。微内核结构的优点是可靠、灵活以及适宜于网络计算机环境,但也存在工作效率不高的缺陷。Windows XP在设计上没有一味地承袭微内核结构,而是把效率问题更多地考虑了进去,做了很多改进和优化,例如把文件服务、图形引擎等功能组件植入到微内核中,使得Windows XP在效率与稳定之间找到了一个最佳的平衡点。实际的测试也表明,Windows XP的高效性并没有导致其稳定性的降低。
下面,需要引入两个重要的概念:核心态(kernel mode)和用户态(user mode),它们各自代表程序不同的运行状态。计算机里运行的程序,不是处于核心态就是处于用户态。当程序处于用户态时,它为用户服务。例如,当你使用Office系列软件办公时,这些软件就在为你服务,所以其运行状态就处于用户态。当程序处于核心态时,既可为用户服务,又可为系统服务。例如,内存管理器和安全控制程序,它们并非是用户直接需要的,但却必不可少,因为它们的任务是维护系统不出问题,所以要运行在核心态。可见,系统服务是用户服务的前提,因为首先要保证计算机系统能正常地运行,才谈得上为用户提供可靠的服务。也就是说,如果你用的 *** 作系统经常出现“蓝屏”或者死机的现象,那你还能很好地工作吗?因此,保证核心态的稳定可靠,是 *** 作系统在设计上必须着重考虑的。
Windows XP通过硬件机制现实了核心态以及用户态,并为前者赋予了很高的特权,允许处于核心态的程序调用特权指令来封杀任何用户态的程序,而用户态的程序只能调用常规的指令。一般来说,只有那些至关重要的、对性能影响很大的代码和组件才运行在核心态。例如,内存管理器、高速缓存管理器、安全管理器、网络协议、进程管理以及文件系统等就运行在核心态。而用户的应用程序都只准运行在用户态,而且不允许直接访问 *** 作系统的特权代码和数据,以免被恶意的应用程序侵扰。当用户的应用程序试图调用特权指令时, *** 作系统会借助硬件提供的保护机制剥夺这些程序的控制权并将它们强制关闭。有了这样的保护措施,Windows XP既可作为一般的工作平台,又可成为坚固稳定的服务器。
有了对核心态和用户态的认识,Windows XP体系结构的框架也应运而生,图1所示的就是以核心态和用户态为划分原则的Windows XP体系结构示意框图。
图1中的粗线将Windows XP分为用户态和核心态两部分。粗线上部的、处于用户态的方框分别代表的是四种基本类型的用户进程:系统支持进程、服务进程、应用程序、环境子系统。另外,子系统动态链接库也归类于用户态。
在介绍上述四种类型的用户进程之前,需要先来认识一下“进程”的概念,凡是研究 *** 作系统,都不能不涉及这个概念。简而言之,“进程”就是程序的执行过程。程序通常是以文件形式静态地存放在磁盘上的,而当程序被执行时,会产生一个动态的执行过程,如何来描述这个动态的过程呢?于是就引入了“进程”的概念。所以,一个处于运行状态的程序都对应了一个相应的进程。例如,你在使用Microsoft Word时,系统就会创建一个映像名称为WINWORDEXE的进程。为了能更细致地描述程序的执行过程,又引入了“线程”的概念,一个进程可以被细化为一个或多个线程。用线程来描述程序的执行过程,显得更深入、更精确。一般来说,从用户角度,线程是观察不到的。
1系统支持进程(system support process)
属于“系统支持进程”类型的进程,虽然处于用户态,但它们却是由 *** 作系统启动的。在Windows XP中,属于该类型的进程主要有:System Idle进程,用于统计CPU的空闲时间;System进程,是系统核心 *** 作的载体;会话管理器(smssexe),主要用于系统初始化工作;登录进程(winlogonexe),用于处理用户的登录和注销请求,按下“Ctrl+Alt+Del”组合键时,可以激活该进程;本地安全身份验证服务器(lsassexe),该进程用于接收来自登录进程的身份验证请求,然后调用适当的身份验证机制来完成实际的验证。
2服务进程(service process)
属于“服务进程”类型的进程,其对应的程序实体应该是Win32模式的程序。在客户/服务器结构的Windows XP系统中,这些服务进程其实完成的是服务器的功能。例如,Servicesexe、Spoolsvexe、Svchostexe、Winmgmtexe等程序,在执行时都归类于服务进程。
3应用程序(user application)
这个概念应该是最容易理解的,因为所有由用户启动的、被用户直接使用的程序都属于应用程序的范畴。Windows XP支持的应用程序的类型包括Win32模式、Windows31模式和MS-DOS模式。例如,上网用的IE浏览器、办公用的Office系列软件、听音乐用的Winamp以及用于进程查看的任务管理器(taskmgrexe)等都属于应用程序。
4环境子系统(environment subsystem)
简而言之,环境子系统的作用是向应用程序提供必要的运行环境。也就是说,应用程序的执行,实际上是通过调用环境子系统提供的功能函数实现的。在此前的Windows 2000 *** 作系统中,提供了三种环境子系统:Win32、POSIX(UNIX类型的子系统)和OS/2(用于x86系统的);而在Windows XP中,去掉了后两者,只保留了Win32环境子系统。
Win32环境子系统的程序实体是csrssexe文件,而且它必须始终处于运行状态,否则Windows XP就不能正常工作。同时,Win32子系统还包括以下重要组件:各种可供调用的函数;核心态设备驱动程序(Win32ksys),用于控制窗口显示、屏幕输出以及收集来自鼠标、键盘的输入信息;图形设备接口(Graphics Device Interface,GDI),提供文本、图形输出的各种函数;子系统动态链接库(subsystem DLLs),它是服务进程、应用程序与核心态的系统组件之间交互的中介。其具体的作用是将文档形式的函数转换成Windows XP内部的系统调用,相当于一个再编译的过程。例如,Ntdlldll、User32dll、Gdi32dll、Kernel32dll等都是该链接库的成员。
以上是Windows XP体系中的用户态的概况。其中列举了不少具体的程序文件,它们都可以在Windows XP的系统目录下找到;如果它们处于运行状态,那么在任务管理器中还能观察到它们(图2)。
粗线以下的部分是Windows XP的核心态组件,它们都运行在统一的核心地址空间中。核心态组件包括以下五项:核心、硬件抽象层、执行体、设备驱动程序以及图形引擎。
1核心(Kernel)
Windows XP的核心(程序实体是Ntoskrnlexe)始终运行在核心态,其代码短小紧凑,可移植性很好,主要提供下列功能:线程安排和调度;异常情况处理和调度;中断处理和调度;多处理器同步;为执行体提供“内核对象”调用。
2硬件抽象层(Hardware Abstraction Layer,HAL)
在多种硬件平台上的可移植性是Windows XP设计的一个至关重要的方面,除了核心以外,硬件抽象层(HAL)是完善可移植性的另一个关键部分。在实际的系统中,HAL表现为一个可加载的核心态模块haldll,它运行在最靠近硬件的地方,将核心、设备驱动程序以及执行体同硬件分隔开,从而使Windows XP能适应多种硬件平台。
3执行体(Executive)
执行体是核心的上层,作用是为用户态的用户进程提供函数的调用,使用户进程的功能得以实现。从外部看,用户交给的任务都好像是在执行体中完成的。而实际上,执行体的功能又是建立在调用核心的“内核对象”的基础上的。这样就避免了用户进程直接调用核心的情况的出现,减少了不稳定因素的产生。
4.设备驱动程序(Device Drivers)
设备驱动程序是一系列可加载的、以SYS为扩展名的核心态模块,它们负责I/O系统和相关硬件之间的交互。但Windows XP的设备驱动程序又并非是直接控制硬件的,而是通过硬件抽象层(HAL)来间接实现的。
Windows XP对“即插即用”和“高级电源选项”有很强大的支持,它使用Windows驱动程序模型(Windows Driver Model,WDM)作为标准驱动程序模型。WDM是微软专门为NT核心的Windows研发的一种分层化的驱动程序模型,并在Windows 2000系统中首次应用。从WDM的角度看,Windows XP中的驱动程序可分三种:总线驱动程序,负责硬件设备与总线控制器的连接;功能驱动程序,用于硬件自身内部的驱动;过滤器驱动程序,用于为现有硬件设备添加新的功能。在Windows XP中,每一个硬件设备都至少有总线驱动程序和功能驱动程序,前者负责与总线的交互,后者控制内部的运转。这是Windows XP的设备驱动程序机制的一大重要特点。
5图形引擎(Graphics Engine)
简言之,图形引擎的用处就是提供实现图形用户界面(Graphical User Interface,GUI)的基本函数。前面提到过,在Win32子系统中已经包含了图形设备接口(GDI),但其图形功能毕竟有限,不能满足高质量的图形应用的要求。为此,就采取了将图形系统移入到核心态来运行的策略,以提高图形处理能力。可以说,核心态的图形引擎是塑造出Windows XP华丽外表的艺术师。
到此,我们对Windows XP的体系结构应该有了一个概括性的认识。实际上,对于Windows XP这种庞大的 *** 作系统而言,其体系结构细节的复杂程度是难以想象的。如果用程序语言来描述的话,岂止一本书能够涵盖。为大家简析Windows XP体系结构旨在于增长见识、了解一点 *** 作技巧之外的知识。


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

原文地址:https://54852.com/zz/10591387.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存