Linux 内核 一 笔记

一.内核


基本简介

内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。 

现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序、设备驱动程序等)、基本的、公共的、运行频率较高的模块(如时钟管理、进程调度等)以及关键性数据结构独立开来,使之常驻内存,并对他们进行保护。通常把这一部分称之为操作系统的内核 
程序可以直接地被调入计算机中执行,这样的设计说明了设计者不希望提供任何硬件抽象和操作系统的支持,它常见于早期计算机系统的设计中。最终,一些辅助性程序,例如程序加载器和调试器,被设计到机器核心当中,或者固化在只读存储器里。这些变化发生时,操作系统内核的概念就渐渐明晰起来了。 

历史发展

Linux的第一个公开版本是1991年10月的0.02版本,两个月以后,在1991年12月,Linux发布了0.11版本,这是第一个可以不依赖于Minix就可以使用的独立内核。
0.12版本发布一个月以后,在3月,版本号跳到了0.95,反映出系统正变得成熟,不仅如此,直到两年后,也就是1994年3月,具有里程碑意义的1.0.0才完成。
大约从这时起开始使用两“路”编号方法标注内核的开发,偶数号的内核(比如1.0、2.2、2.4、2.6)是稳定的,“产品”型号,同时,奇数号的内核版本(1.1、2.3)是前沿的或者“发展中的”内核。一个稳定的内核发布以后几个月就开始新内核的开发工作。然而,2.5的开发工作是在2.4完成后几十个月以后才开始的。 
post-halloween文档的大部分讨论内容是用户需要注意的主要改变,以及需要更新的系统工具(为了利用它们)。关心这一信息人的主要是那些期望提前了解2.6内核中有哪些内容的Linux发行商,还有终端用户,这可以让他们确定为了能利用新部件是否有需要升级的程序。
KernelJanitors项目保持了一个列表,内容是需要修复的较小缺陷和解决方法。这些缺陷解决方法中大部分是由于向内核打较大的补丁时需要改动很多部分代码而导致的,比如有些地方会影响设备驱动程序。那些新近从事内核开发的人开始时的工作可以选择列表中的条目,这样让他们可以通过小项目学习如何编写内核代码,同时有机会为社区做出贡献。
还有,在另一个预发布的项目中,JohnCherry追踪了在对每个已经发布的内核版本进行编译时发现的错误和警告。这些编译统计数字随着时间的流逝一直持续下降,而且,以系统的形式来发布这些结果使得所取得的进展一目了然。在很多情况下,可以像使用KernelJanitors列表一样来利用这些警告和错误消息中的一部分,因为编译错误通常是由小的缺陷引起的,需要一些努力去修复。
最后,还有AndrewMorton的“must-fix”列表。由于他已经被选定为2.6内核发布后的维护者,他运用他的特权概括地列出了那些他认为在最终的2.6内核发布前最迫切需要解决方案的问题。must-fix列表中包含了内核Bugzilla系统中的缺陷,需要完成的部件,以及其他已知的问题,这些问题如不解决将阻碍2.6发布。这一信息可以帮助指明在新内核发布前还需要哪些步骤;对那些关心这一万众期待的2.6内核发布何时能完成的人来说,它还可以提供有价值的信息。 

内核分类

单内核

单内核(Monolithic kernel),是个很大的进程。它的内部又能够被分为若干模块(或是层次或其他)。但是在运行的时候,它是个单独的二进制大映象。其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是消息传递。 
单内核结构在硬件之上定义了一个高阶的抽象界面,应用一组原语(或者叫系统调用)来实现操作系统的功能,例如进程管理,文件系统,和存储管理等等,这些功能由多个运行在核心态的模块来完成。
尽管每一个模块都是单独地服务这些操作,内核代码是高度集成的,而且难以编写正确。因为所有的模块都在同一个内核空间上运行,一个很小的bug都会使整个系统崩溃。然而,如果开发顺利,单内核结构就可以从运行效率上得到好处。
很多现代的单内核结构内核,如LinuxFreeBSD内核,能够在运行时将模块调入执行,这就可以使扩充内核的功能变得更简单,也可以使内核的核心部分变得更简洁。
单内核结构是非常有吸引力的一种设计,由于在同一个地址空间上实现所有低级操作的系统控制代码的复杂性的效率会比在不同地址空间上实现更高些。 单核结构正趋向于容易被正确设计,所以它的发展会比微内核结构更迅速些。
单内核结构的例子:传统的UNIX内核----例如伯克利大学发行的版本,Linux内核。 

微内核

微内核(Microkernelkernel)结构由一个非常简单的硬件抽象层和一组比较关键的原语或系统调用组成,这些原语仅仅包括了建立一个系统必需的几个部分,如线程管理,地址空间和进程间通信等。
微核的目标是将系统服务的实现和系统的基本操作规则分离开来。例如,进程的输入/输出锁定服务可以由运行在微核之外的一个服务组件来提供。这些非常模块化的用户态服务器用于完成操作系统中比较高级的操作,这样的设计使内核中最核心的部分的设计更简单。一个服务组件的失效并不会导致整个系统的崩溃,内核需要做的,仅仅是重新启动这个组件,而不必影响其它的部分
微内核将许多OS服务放入分离进程,如文件系统,设备驱动程序,而进程通过消息传递调用OS服务。微内核结构必然是多线程的,第一代微内核,在核心提供了较多的服务,因此被称为'胖微内核',它的典型代表是MACH。它既是GNU HURD也是APPLE SERVER OS的核心,可以说,蒸蒸日上.第二代为微内核只提供最基本的OS服务,典型的OS是QNX,QNX在理论界很有名,被认为是一种先进的OS。 
微内核只提供了很小一部分的硬件抽象,大部分功能由一种特殊的用户态程序服务器来完成。微核经常被用于机器人和医疗器械的嵌入式设计中,因为它的系统的关键部分都处在相互分开的,被保护的存储空间中。这对于单核设计来说是不可能的,就算它采用了运行时加载模块的方式。
微内核的例子:AIXBeOS,L4微内核系列,.Mach中用于GNU Hurd和Mac OS XMinix,MorphOS,QNX,RadiOS,VSTa。 

混合内核

混合内核它很像微内核结构,只不过它的的组件更多的在核心态中运行,以获得更快的执行速度。
混合内核实质上是微内核,只不过它让一些微核结构运行在用户空间的代码运行在内核空间,这样让内核的运行效率更高些。这是一种妥协做法,设计者参考了微内核结构的系统运行速度不佳的理论。然而后来的实验证明,纯微内核的系统实际上也可以是高效率的。大多数现代操作系统遵循这种设计范畴,微软公司开发的Windows操作系统就是一个很好的例子。另外还有XNU,运行在苹果Mac OS X上的内核,也是一个混合内核。
混合内核的例子: BeOS 内核 ,DragonFly BSD,ReactOS 内核
Windows NTWindows 2000Windows XPWindows Server 2003以及Windows Vista等基于NT技术的操作系统。 

外内核

外内核系统,也被称为纵向结构操作系统,是一种比较极端的设计方法。 
外内核这种内核不提供任何硬件抽象操作,但是允许为内核增加额外的运行库,通过这些运行库应用程序可以直接地或者接近直接地对硬件进行操作。
它的设计理念是让用户程序的设计者来决定硬件接口的设计。外内核本身非常的小,它通常只负责系统保护和系统资源复用相关的服务。
传统的内核设计(包括单核和微核)都对硬件作了抽象,把硬件资源或设备驱动程序都隐藏在硬件抽象层下。比方说,在这些系统中,如果分配一段物理存储,应用程序并不知道它的实际位置。
而外核的目标就是让应用程序直接请求一块特定的物理空间,一块特定的磁盘块等等。系统本身只保证被请求的资源当前是空闲的,应用程序就允许直接存取它。既然外核系统只提供了比较低级的硬件操作,而没有像其他系统一样提供高级的硬件抽象,那么就需要增加额外的运行库支持。这些运行库运行在外核之上,给用户程序提供了完整的功能。
理论上,这种设计可以让各种操作系统运行在一个外核之上,如Windows和Unix。并且设计人员可以根据运行效率调整系统的各部分功能。
外核设计还停留在研究阶段,没有任何一个商业系统采用了这种设计。几种概念上的操作系统正在被开发,如剑桥大学的Nemesis,格拉斯哥大学的Citrix系统和瑞士计算机科学院的一套系统。麻省理工学院也在进行着这类研究。 

单内核与微内核的比较

单内核结构是非常有吸引力的一种设计,由于在同一个地址空间上实现所有复杂的低阶操作系统控制代码的效率会比在不同地址空间上实现更高些。
20世纪90年代初,单内核结构被认为是过时的。把Linux设计成为单内核结构而不是微内核,引起了无数的争议。
单核结构正倾向于设计不容易出错,所以它的发展会比微内核结构更迅速些。两个阵营中都有成功的案例。
尽管Mach是众所周知的多用途的微内核,人们还是开发了除此之外的几个微内核。L3是一个演示性的内核,只是为了证明微内核设计并不总是低运行速度。它的后续版本L4,甚至可以将Linux内核作为它的一个进程,运行在单独的地址空间。
QNX是一个从20世纪80年代,就开始设计的微内核系统。它比Mach更接近微内核的理念。它被用于一些特殊的领域;在这些情况下,由于软件错误,导致系统失效是不允许的。例如航天飞机上的机械手,还有研磨望远镜镜片的机器,一点点失误就会导致上千美元的损失。
很多人相信,由于Mach不能够解决一些提出微内核理论时针对的问题,所以微内核技术毫无用处。Mach的爱好者表明这是非常狭隘的观点,遗憾的是似乎所有人都开始接受这种观点。

二.操作系统


操作系统Operating System,简称OS)是管理和控制 计算机 硬件软件资源的 计算机程序,是直接运行在“ 裸机”上的最基本的 系统软件,任何其他软件都必须在 操作系统的支持下才能运行。
操作系统是 用户计算机接口,同时也是计算机 硬件和其他 软件的接口。 操作系统的功能包括管理 计算机系统硬件、软件及数据资源, 控制程序运行,改善 人机界面,为其它 应用软件提供支持,让 计算机系统所有资源最大限度地发挥作用,提供各种形式的 用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口等。实际上,用户是不用接触操作系统的,操作系统管理着 计算机硬件资源,同时按照 应用程序的资源请求,分配资源,如:划分 CPU时间, 内存空间的开辟,调用 打印机等。

组成部分

操作系统理论研究者有时把 操作系统分成四大部分:
  • 驱动程序:最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。
  • 内核:操作系统内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能。
  • 接口库:是一系列特殊的程序库,它们职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口( API),是最靠近 应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式。
  • 外围:是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及 UNIX/ Linux中各种守护进程都通常被划归此列。
并不是所有的操作系统都严格包括这四大部分。例如,在早期的微软视窗操作系统中,各部分耦合程度很深,难以区分彼此。而在使用外核结构的操作系统中,则根本没有驱动程序的概念。
操作系统中四大部分的不同布局,也就形成了几种整体结构的分野。常见的结构包括:简单结构、层结构、微内核结构、 垂直结构、和虚拟机结构。
内核结构
内核是操作系统最基础的构件,因而,内核结构往往对操作系统的外部特性以及应用领域有着一定程度的影响。尽管随着理论和实践的不断演进,操作系统高层特性与内核结构之间的耦合有日趋缩小之势,但习惯上,内核结构仍然是操作系统分类之常用标准!
内核的结构可以分为 单内核 微内核混合内核外内核等。
  • 单内核(Monolithic kernel),又称为 宏内核。单内核结构是操作系统中各内核部件杂然混居的形态,该结构于1960年代(亦有1950年代初之说,尚存争议),历史最长,是操作系统内核与外围分离时的最初形态。
  • 微内核(Microkernel),又称为微核心。微内核结构是1980年代产生出来的较新的内核结构,强调结构性部件与功能性部件的分离。20世纪末,基于微内核结构,理论界中又发展出了超微内核与外内核等多种结构。尽管自1980年代起,大部分理论研究都集中在以微内核为首的“新兴”结构之上,然而,在应用领域之中,以单内核结构为基础的操作系统却一直占据着主导地位。
  • 混合内核(Hybrid kernel)像微内核结构,只不过它的组件更多的在核心态中运行,以获得更快的执行速度。
  • 外内核(Exokernel)的设计理念是尽可能的减少软件的 抽象化,这使得开发者可以专注于硬件的抽象化。外核心的设计极为简化,它的目标是在于同时简化传统 微内核的讯息传递机制,以及整块性核心的软件抽象层。
在众多常用操作系统之中,除了QNX和基于Mach的UNIX等个别系统外,几乎全部采用单内核结构,例如大部分的Unix、Linux,以及Windows(微软声称Windows NT是基于改良的微内核架构的,尽管理论界对此存有异议)。 微内核和超微内核结构主要用于研究性操作系统,还有一些嵌入式系统使用外核!
基于单内核的操作系统通常有着较长的历史渊源。例如,绝大部分UNIX的家族史都可上溯至1960年代。该类操作系统多数有着相对古老的设计和实现(例如某些UNIX中存在着大量1970年代、1980年代的代码)。另外,往往在性能方面略优于同一应用领域中采用其他内核结构的操作系统(但通常认为此种性能优势不能完全归功于单内核结构)!

主要功能

操作系统的主要功能是资源管理, 程序控制人机交互等。计算机系统的资源可分为设备资源和信息资源两大类。设备资源指的是组成计算机的硬件设备,如 中央处理器,主存储器, 磁盘存储器,打印机,磁带存储器,显示器,键盘输入设备和鼠标等。信息资源指的是存放于计算机内的各种数据,如文件,程序库,知识库,系统软件和应用软件等。
操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。以现代观点而言,一个标准 个人电脑的OS应该提供以下的功能:
  • 进程管理(Processing management)
  • 内存管理(Memory management)
  • 文件系统(File system)
  • 网络通讯(Networking)
  • 安全机制(Security)
  • 用户界面(User interface)
  • 驱动程序(Device drivers)

资源管理

系统的设备资源和信息资源都是操作系统根据用户需求按一定的策略来进行分配和调度的。操作系统的存储管理就负责把内存单元分配给需要内存的程序以便让它执行,在程序执行结束后将它占用的内存单元收回以便再使用。对于提供虚拟存储的计算机系统,操作系统还要与硬件配合做好页面调度工作,根据执行程序的要求分配页面,在执行中将页面调入和调出内存以及回收页面等。
处理器管理或称处理器调度,是操作系统资源管理功能的另一个重要内容。在一个允许多道程序同时执行的系统里,操作系统会根据一定的策略将处理器交替地分配给系统内等待运行的程序。一道等待运行的程序只有在获得了处理器后才能运行。一道程序在运行中若遇到某个事件,例如启动外部设备而暂时不能继续运行下去,或一个外部事件的发生等等,操作系统就要来处理相应的事件,然后将处理器重新分配。
操作系统的设备管理功能主要是分配和回收外部设备以及控制外部设备按用户程序的要求进行操作等。对于非存储型外部设备,如 打印机显示器等,它们可以直接作为一个设备分配给一个用户程序,在使用完毕后回收以便给另一个需求的用户使用。对于存储型的外部设备,如磁盘、磁带等,则是提供存储空间给用户,用来存放文件和数据。存储性外部设备的管理与信息管理是密切结合的。
信息管理是操作系统的一个重要的功能,主要是向用户提供一个 文件系统。一般说,一个文件系统向用户提供创建文件,撤销文件,读写文件,打开和关闭文件等功能。有了文件系统后,用户可按文件名存取数据而无需知道这些数据存放在哪里。这种做法不仅便于用户使用而且还有利于用户共享公共数据。此外,由于文件建立时允许创建者规定使用权限,这就可以保证数据的安全性。

程序控制

一个用户程序的执行自始至终是在操作系统控制下进行的。一个用户将他要解决的问题用某一种程序设计语言编写了一个程序后就将该程序连同对它执行的要求输入到计算机内,操作系统就根据要求控制这个用户程序的执行直到结束。操作系统控制用户的执行主要有以下一些内容:调入相应的编译程序,将用某种程序设计语言编写的源程序编译成计算机可执行的目标程序,分配内存储等资源将程序调入内存并启动,按用户指定的要求处理执行中出现的各种事件以及与操作员联系请示有关意外事件的处理等。

人机交互

操作系统的人机交互功能是决定计算机系统“友善性”的一个重要因素。人机交互功能主要靠可输入输出的外部设备和相应的软件来完成。可供人机交互使用的设备主要有键盘显示、鼠标、各种模式识别设备等。与这些设备相应的软件就是操作系统提供人机交互功能的部分。人机交互部分的主要作用是控制有关设备的运行和理解并执行通过人机交互设备传来的有关的各种命令和要求。

进程管理

不管是常驻程序或者应用程序,他们都以进程为标准执行单位。当年运用冯纽曼架构建造电脑时,每个中央处理器最多只能同时执行一个进程。早期的OS(例如 DOS)也不允许任何程序打破这个限制,且DOS同时只有执行一个进程(虽然DOS自己宣称他们拥有终止并等待驻留(TSR)能力,可以部分且艰难地解决这问题)。现代的操作系统,即使只拥有一个 CPU,也可以利用多进程(multitask)功能同时执行复数进程。进程管理指的是操作系统调整复数进程的功能。
由于大部分的电脑只包含一颗中央处理器,在 单内核(Core)的情况下多进程只是简单迅速地切换各进程,让每个进程都能够执行,在多内核或多处理器的情况下,所有进程通过许多协同技术在各处理器或内核上转换。越多进程同时执行,每个进程能分配到的时间比率就越小。很多OS在遇到此问题时会出现诸如音效断续或鼠标跳格的情况(称做崩溃(Thrashing),一种OS只能不停执行自己的管理程序并耗尽系统资源的状态,其他使用者或硬件的程序皆无法执行)。进程管理通常实现了分时的概念,大部分的OS可以利用指定不同的特权等级(priority),为每个进程改变所占的分时比例。特权越高的进程,执行优先级越高,单位时间内占的比例也越高。交互式OS也提供某种程度的回馈机制,让直接与使用者交互的进程拥有较高的特权值。

内存管理

根据 帕金森定律:“你给程序再多内存,程序也会想尽办法耗光”,因此程序员通常希望系统给他无限量且无限快的存储器。大部分的现代计算机存储器架构都是层次结构式的,最快且数量最少的暂存器为首,然后是高速缓存、存储器以及最慢的磁盘存储设备。而操作系统的存储器管理提供查找可用的记忆空间、配置与释放记忆空间以及交换存储器和低速存储设备的内含物……等功能。此类又被称做虚拟内存管理的功能大幅增加每个进程可获得的记忆空间(通常是4GB,即使实际上RAM的数量远少于这数目)。然而这也带来了微幅降低运行效率的缺点,严重时甚至也会导致进程崩溃。
存储器管理的另一个重点活动就是借由CPU的帮助来管理虚拟位置。如果同时有许多进程存储于记忆设备上,操作系统必须防止它们互相干扰对方的存储器内容(除非通过某些协定在可控制的范围下操作,并限制可访问的存储器范围)。分区存储器空间可以达成目标。每个进程只会看到整个存储器空间(从0到存储器空间的最大上限)被配置给它自己(当然,有些位置被操作系统保留而禁止访问)。CPU事先存了几个表以比对虚拟位置与实际存储器位置,这种方法称为标签页(paging)配置。
借由对每个进程产生分开独立的位置空间,操作系统也可以轻易地一次释放某进程所占据的所有存储器。如果这个进程不释放存储器,操作系统可以退出进程并将存储器自动释放。

虚拟内存

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

用户接口

用户接口包括作业一级接口和程序一级接口。作业一级接口为了便于用户直接或间接地控制自己的作业而设置。它通常包括联机用户接口与脱机用户接口。程序一级接口是为用户程序在执行中访问系统资源而设置的,通常由一组系统调用组成。
在早期的单用户单任务操作系统(如DOS)中,每台计算机只有一个用户,每次运行一个程序,且次序不是很大,单个程序完全可以存放在实际内存中。这时虚拟内存并没有太大的用处。但随着程序占用存储器容量的增长和多用户多任务操作系统的出现,在程序设计时,在程序所需要的存储量与计算机系统实际配备的主存储器的容量之间往往存在着矛盾。例如,在某些低档的计算机中,物理内存的容量较小,而某些程序却需要很大的内存才能运行;而在多用户多任务系统中,多个用户或多个任务更新全部主存,要求同时执行独断程序。这些同时运行的程序到底占用实际内存中的哪一部分,在编写程序时是无法确定的,必须等到程序运行时才动态分配。  

用户界面

用户界面(User Interface,简称 UI,亦称使用者界面[1])是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。
用户界面是介于用户与硬件而设计彼此之间交互沟通相关软件,目的在使得用户能够方便有效率地去操作硬件以达成双向之交互,完成所希望借助硬件完成之工作,用户界面定义广泛,包含了人机交互与图形用户接口,凡参与人类与机械的信息交流的领域都存在着用户界面。用户和系统之间一般用面向问题的受限自然语言进行交互。目前有系统开始利用多媒体技术开发新一代的用户界面。

分类方法

操作系统的种类相当多,各种设备安装的操作系统可从简单到复杂,可分为 智能卡操作系统实时操作系统、传感器节点操作系统、 嵌入式操作系统、个人计算机操作系统、多处理器操作系统、 网络操作系统和大型机操作系统。  

应用领域

所支持用户数

可分为 单用户操作系统(如MSDOS、OS/2.Windows)、 多用户操作系统(如UNIX、Linux、MVS);

源码开放程度

可分为 开源操作系统(如Linux、FreeBSD)和闭源操作系统(如Mac OS X、Windows);

硬件结构

可分为 网络操作系统(Netware、Windows NT、OS/2 warp)、 多媒体操作系统(Amiga)、和 分布式操作系统等;

操作系统环境

可分为 批处理操作系统(如MVX、DOS/VSE)、 分时操作系统( 如Linux、UNIX、XENIX、Mac OS X)、 实时操作系统(如iEMX、VRTX、RTOS,RT WINDOWS);

存储器寻址宽

可以将操作系统分为8位、16位、32位、64位、128位的操作系统。早期的操作系统一般只支持8位和16位存储器寻指宽度,现代的操作系统如Linux和Windows 7都支持32位和64位。

主要类型

批处理

批处理操作系统(Batch Processing Operating System)的工作方式是:用户将作业交给系统 操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,然后启动操作系统,系统自动、依次执行每个 作业。最后由操作员将作业结果交给用户。批处理操作系统的特点是:多道和成批处理。

分时

分时操作系统(Time Sharing Operating System,简称 TSOS)的工作方式是:一台主机连接了若干个终端,每个终端有一个用户在使用。用户交互式地向系统提出命令请求,系统接受每个用户的命令,采用时间片轮转方式处理服务请求,并通过交互方式在终端上向用户显示结果。用户根据上步结果发出下道命令。分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。每个用户轮流使用一个时间片而使每个用户并不感到有别的用户存在。分时系统具有多路性、交互性、“独占”性和及时性的特征。多路性指,伺时有多个用户使用一台计算机,宏观上看是多个人同时使用一个CPU,微观上是多个人在不同时刻轮流使用CPU。交互性是指,用户根据系统响应结果进一步提出新请求(用户直接干预每一步)。“独占”性是指,用户感觉不到计算机为其他人服务,就像整个系统为他所独占。及时性指,系统对用户提出的请求及时响应。它支持位于不同终端的多个用户同时使用一台计算机,彼此独立互不干扰,用户感到好像一台计算机全为他所用。
常见的通用操作系统是分时系统与批处理系统的结合。其原则是:分时优先,批处理在后。“前台”响应需频繁交互的作业,如终端的要求; “后台”处理时间性要求不强的作业。

实时

实时操作系统(Real Time Operating System,简称 RTOS)是指使计算机能及时响应外部事件的请求在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作的操作系统。实时操作系统要追求的目标是:对外部请求在严格时间范围内做出反应,有高可靠性和完整性。其主要特点是资源的分配和调度首先要考虑实时性然后才是效率。此外,实时操作系统应有较强的容错能力。

网络

网络操作系统(Network Operating System,简称 NOS)通常运行在服务器上的操作系统,是基于计算机网络的,是在各种计算机操作系统上按网络体系结构协议标准开发的 软件,包括网络管理、通信、安全、资源共享和各种网络应用。其目标是相互通信及资源共享。在其支持下,网络中的各台计算机能互相通信和共享资源。其主要特点是与网络的硬件相结合来完成网络的通信任务。网络操作系统被设计成在同一个网络中(通常是一个局部区域网络LAN,一个专用网络或其他网络)的多台计算机中的可以共享文件和 打印机访问 。 流行的网络操作系统有Linux,UNIX,BSD,Windows Server, Mac OS X Server,Novell NetWare等。

分布式

分布式操作系统(Distributed Software Systems)是为分布计算 系统配置的操作系统。大量的计算机通过网络被连结在一起,可以获得极高的运算能力及广泛的数据共享。这种系统被称作分布式系统(DistributedSystem) 。它在资源管理,通信控制和操作系统的结构等方面都与其他操作系统有较大的区别。由于分布计算机系统的资源分布于系统的不同计算机上,操作系统对用户的资源需求不能像一般的操作系统那样等待有资源时直接分配的简单做法而是要在系统的各台计算机上搜索,找到所需资源后才可进行分配。对于有些资源,如具有多个副本的文件,还必须考虑一致性。所谓一致性是指若干个用户对同一个文件所同时读出的数据是一致的。为了保证一致性,操作系统须控制文件的读、写、操作,使得多个用户可同时读一个文件,而任一时刻最多只能有一个用户在修改文件。分布操作系统的通信功能类似于网络操作系统。由于分布计算机系统不像网络分布得很广,同时分布操作系统还要支持并行处理,因此它提供的通信机制和网络操作系统提供的有所不同,它要求通信速度高。分布操作系统的结构也不同于其他操作系统,它分布于系统的各台计算机上,能并行地处理用户的各种需求,有较强的容错能力。
分布式操作系统是网络操作系统的更高形式,它保持了 网络操作系统的全部功能,而且还具有透明性、可靠性和高性能等。网络操作系统和分布式操作系统虽然都用于管理分布在不同地理位置的计算机,但最大的差别是:网络操作系统知道确切的网址,而分布式系统则不知道计算机的确切地址;分布式操作系统负责整个的资源分配,能很好地隐藏系统内部的实现细节,如对象的物理位置等。这些都是对 用户透明的。

大型机

大型机(Mainframe Computer),也称为大型主机。大型机使用专用的处理器指令集、操作系统和应用 软件。最早的操作系统是针对20世纪60年代的大型主结构 开发的,由于对这些系统在软件方面做了巨大投资,因此原来的计算机厂商继续开发与原来操作系统相兼容的硬件与操作系统。这些早期的操作系统是现代操作系统的先驱。现代的大型主机一般也可运行 Linux或Unix变种。

嵌入式

嵌入式操作系统(Embedded Operating System)是用在嵌入式系统的操作系统。嵌入式系统使用非常广泛的操作系统。嵌入式 设备一般专用的嵌入式操作系统(经常是实时操作系统,如 VxWorks、eCos)或者指定程序员移植到这些新系统。以及某些功能缩减版本的Linux(如Android, Tizen, MeeGo, webOS)或者其他操作系统。某些情况下,嵌入式操作系统指称的是一个自带了固定应用软件的巨大泛用程序。在许多最简单的嵌入式系统中,所谓的操作系统就是指其上唯一的应用程序。

桌面

桌面操作系统主要用于个人计算机上。个人计算机市场从硬件架构上来说主要分为两大阵营, PC机Mac机,从软件上可主要分为两大类,分别为类 Unix操作系统和 Windows操作系统:
  1. Unix和类Unix操作系统: Mac OS XLinux发行版(如 DebianUbuntuLinux MintopenSUSEFedora,Mandrake, Red Hat,Centos 等);
  2. 微软公司 Windows 操作系统:   Windows 98 ,Windows 2000, Windows XP Windows Vista Windows 7 Windows 8 Windows 8.1 ,Windows10等

服务器

服务器操作系统一般指的是安装在 大型计算机上的操作系统,比如Web 服务器、应用服务器和 数据库服务器等。服务器操作系统主要集中在三大类:
  1. Unix系列:SUN Solaris,IBM-AIX,HP-UX, FreeBSDOS X Server等;
  2. Linux系列: Red Hat LinuxCentOSDebianUbuntuServer等;
  3. Windows系列:Windows NT Server, Windows Server 2003Windows Server 2008,Windows Server 2008 R2,windows server 2012,windows server technical等。

简单操作系统

简单操作系统,指的是计算机初期所配置的操作系统,如IBM公司的磁盘操作系统DOS/360和微型计算机的操作系统CP/M等。这类操作系统的功能主要是操作命令的执行,文件服务,支持高级 程序设计语言 编译程序和控制外部设备等。

典型系统

UNIX

UNIX 是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统。UNIX 最早由 Ken Thompson和Dennis Ritchie于1969年在美国 AT&T贝尔实验室开发。
类Unix(Unix-like)操作系统指各种传统的Unix以及各种与传统Unix类似的系统。它们虽然有的是自由软件,有的是商业软件,但都相当程度地继承了原始UNIX的特性,有许多相似处,并且都在一定程度上遵守POSIX规范。类Unix系统可在非常多的处理器架构下运行,在服务器系统上有很高的使用率,例如大专院校或工程应用的工作站。

Linux

基于 Linux的操作系统是20世纪1991年推出的一个多用户、多任务的操作系统。它与UNIX完全兼容。Linux最初是由 芬兰赫尔辛基大学计算机系学生 Linus Torvalds在基于UNIX的基础上开发的一个操作系统的内核程序,Linux的设计是为了在 Intel微处理器上更有效的运用。其后在 理查德·斯托曼的建议下以 GNU通用公共许可证发布,成为 自由软件Unix变种。它的最大的特点在于他是一个源代码公开的自由及开放源码的操作系统,其内核源代码可以自由传播。  
 经历数年的披荆斩棘,自由开源的Linux系统逐渐蚕食以往专利软件的专业领域,例如以往计算机动画运算巨擘──SGI的IRIX系统已被Linux家族及贝尔实验室研发小组设计的九号计划与Inferno系统取代,皆用于分散表达式环境。它们并不像其他Unix系统,而是选择自带图形用户界面。九号计划原先并不普及,因为它刚推出时并非自由软件。Linux有 untu桌面 各类发行版,通常为 GNU/Linux ,如Debian(及其衍生系统Ubuntu、Linux Mint)、Fedora、openSUSE等。Linux发行版作为个人计算机操作系统或服务器操作系统,在服务器上已成为主流的操作系统。

Mac OS


Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统。Mac OS是首个在商用领域成功的图形用户界面。Macintosh组包括比尔·阿特金森(Bill Atkinson)、杰夫·拉斯金(Jef Raskin)和安迪·赫茨菲尔德(Andy Hertzfeld)。Mac OS X 于 2001年 首次在商场上推出。它包含两个主要的部分:Darwin,是以 BSD 原始代码和 Mach 微核心 为基础,类似 Unix 的开放原始码环境。

Windows

Windows是由 微软公司成功开发的操作系统.Windows是一个多任务的操作系统,他采用图形窗口界面,用户对计算机的各种复杂操作只需通过点击 鼠标就可以实现。  
Microsoft Windows系列操作系统是在微软给IBM机器设计的MS-DOS的基础上设计的图形操作系统。Windows系统,如Windows 2000、Windows XP皆是创建于现代的Windows NT内核。NT内核是由OS/2和OpenVMS等系统上借用来的。Windows可以在32位和64位的Intel和AMD的处理器上运行,但是早期的版本也可以在DEC Alpha、MIPS与PowerPC架构上运行。 虽然由于人们对于开放源代码作业系统兴趣的提升,Windows的市场占有率有所下降,但是到2004年据库服务等一些功能。
Windows XP在2001年10月25日发布,2004年8月24日发布服务包2,2008年4月21日发布最新的服务包3。 微软上一款操作系统 Windows Vista(开发代码为Longhorn)于2007年1月30日发售[4]。Windows Vista增加了许多功能,尤其是系统的安全性和网络管理功能,并且其拥有界面华丽的Aero Glass。但是整体而言,其在全球市场上的口碑却并不是很好。 Windows 8微软在2012年10月正式推出,系统有着独特的metro开始界面和触控式交互系统,2013年10月17日晚上7点,Windows 8.1在全球范围内,通过Windows上的应用商店进行更新推送。2014年1月22日,微软在美国旧金山举行发布会,正式发布了Windows 10消费者预览版。

iOS

iOS操作系统是由 苹果公司开发的手持设备操作系统。iOS与苹果的Mac OS X操作系统一样,它也是以Darwin为基础的,因此同样属于类Unix的商业操作系统。原本这个系统名为iPhone OS,直到2010年6月7日WWDC大会上宣布改名为iOS。截止至2011年11月,根据Canalys的数据显示,iOS已经占据了全球智能手机系统市场份额的30%,在美国的市场占有率为43%。

Android

Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。   Android操作系统最初由 Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年11月数据显示,Android占据全球智能 手机 操作系统市场76%的份额,中国市场占有率为90%。  

WP

Windows Phone(简称: WP)是 微软发布的一款 手机操作系统,它将微软旗下的 Xbox Live游戏、 Xbox Music音乐与独特的视频体验集成至手机中。微软公司于2010年10月11日晚上9点30分正式发布了智能手机操作系统Windows Phone,并将其使用接口称为“ Modern”接口。2011年2月,“ 诺基亚”与微软达成全球战略同盟并深度合作共同研发。2011年9月27日,微软发布 Windows Phone 7.5。2012年6月21日,微软正式发布 Windows Phone 8,采用和 Windows 8相同的 Windows NT内核,同时也针对市场的Windows Phone 7.5发布 Windows Phone 7.8。2014年4月2日,微软在旧金山召开Build2014开发者大会。大会上微软推出Windows Phone 8.1更新,2014年8月4日晚,微软正式向WP开发者推送了WP8.1 GDR1预览版,即WP8.1 Update。

Chrome OS

Chrome OS是由谷歌开发的一款基于Linux的操作系统,发展出与互联网紧密结合的 云操作系统,工作时运行Web应用程序。谷歌在2009年7月7日发布该操作系统,并在2009年11月19日以Chromium OS之名推出相应的开源项目,并将Chromium OS代码开源。  
Chrome OS同时支持Intel x86以及ARM处理器,软件结构极其简单,可以理解为在Linux的内核上运行一个使用新的窗口系统的Chrome浏览器。对于开发人员来说,web就是平台,所有现有的web应用可以完美的在Chrome OS中运行,开发者也可以用不同的开发语言为其开发新的web应用。

三.Linux内核


  参看:http://baike.baidu.com/view/573460.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值