结构图
操作系统的功能包括管理
计算机系统的硬件、软件及数据资源;控制程序运行;改善人机界面;为其它
应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的
服务界面。
许多操作系统制造者对OS的定义也不大一致,例如有些OS集成了
图形用户界面,而有些OS仅使用文本接口,而将图形界面视为一种非必要的
应用程序。
操作系统理论在
计算机科学中为历史悠久而又活跃的分支,而操作系统的设计与实现则是软件工业的基础与内核。
1980年代前
第一部计算机并没有操作系统。这是由于早期个人电脑的建立方式(如同建造机械算盘)与效能不足以执行如此程序。
但在1947年发明了晶体管,以及
莫里斯·威尔克斯(Maurice Vincent Wilkes)发明的
微程序方法,使得电脑不再是机械设备,而是
电子产品。系统
管理工具以及简化硬件操作流程的程序很快就出现了,且成为操作系统的基础。
到了1960年代早期,商用电脑制造商制造了批次处理系统,此系统可将工作的建置、调度以及执行序列化。此时,厂商为每一台不同型号的电脑创造不同的操作系统,因此为某电脑而写的程序无法移植到其他电脑上执行,即使是同型号的电脑也不行。
到了1964年,
IBM推出了一系列用途与价位都不同的大型电脑IBM System/360,大型主机的经典之作。而它们都共享代号为
OS/360的操作系统(而非每种产品都用量身订做的操作系统)。让单一操作系统适用于整个系列的产品是System/360成功的关键,且实际上IBM目前的大型系统便是此系统的后裔;为System/360所写的应用程序依然可以在现代的IBM机器上执行!
OS/360也包含另一个优点:永久贮存设备—硬盘
驱动器的面世(IBM称为DASD(Direct access storage device))。另一个关键是分时概念的建立:将大型电脑珍贵的时间资源适当分配到所有使用者身上。分时也让使用者有独占整部机器的感觉;而
Multics的
分时系统是此时众多新操作系统中实践此观念最成功的。
1963年,奇异公司与
贝尔实验室合作以
PL/I语言建立的Multics,是激发1970年代众多操作系统建立的灵感来源,尤其是由
AT&T贝尔实验室的丹尼斯·里奇与
肯·汤普逊所建立的
Unix系统,为了实践
平台移植能力,此操作系统在1969年由C语言重写;另一个广为市场采用的小型电脑操作系统是
VMS。
20世纪80年代
第一代微型计算机并不像大型电脑或小型电脑,没有装设操作系统的需求或能力;它们只需要最基本的操作系统,通常这种操作系统都是从ROM读取的,此种程序被称为监视程序(Monitor)。
1980年代,
家用电脑开始普及。通常此时的电脑拥有8-bit处理器加上64KB内存、屏幕、
键盘以及低音质喇叭。而80年代早期最著名的套装电脑为使用
微处理器6510(6502
芯片特别版)的Commodore C64。此电脑没有操作系统,而是以一8KB只读内存BIOS初始化彩色屏幕、键盘以及软驱和打印机。它可用8KB只读内存
BASIC语言来直接操作BIOS,并依此撰写程序,大部分是游戏。此BASIC语言的解释器勉强可算是此电脑的操作系统,当然就没有内核或软硬件保护机制了。此电脑上的游戏大多跳过BIOS层次,直接控制硬件。
早期最著名的磁盘启动型操作系统是
CP/M,它支持许多早期的微电脑,且被
MS-DOS大量抄袭其功能。
最早期的IBM PC其架构类似C64。当然它们也使用了BIOS以初始化与抽象化硬件的操作,甚至也附了一个BASIC解释器!但是它的BASIC优于其他公司产品的原因在于他有可携性,并且兼容于任何符合IBM PC架构的机器上。这样的PC可利用Intel-8088处理器(16-bit寄存器)寻址,并最多可有1MB的内存,然而最初只有640KB。软式磁盘机取代了过去的磁带机,成为新一代的储存设备,并可在他512KB的空间上读写。为了支持更进一步的文件读写概念,
磁盘操作系统(Disk Operating System,
DOS)因而诞生。此操作系统可以合并任意数量的磁区,因此可以在一张磁盘片上放置任意数量与大小的文件。文件之间以档名区别。IBM并没有很在意其上的DOS,因此以向外部公司购买的方式取得操作系统。
1980年
微软公司利用骗术取得了与IBM的合约,并且收购了一家公司出产的操作系统,在将之修改后以MS-DOS的名义出品,此操作系统可以直接让程序操作BIOS与文件系统。到了Intel-80286处理器的时代,才开始实作基本的储存设备保护措施。MS-DOS的架构并不足以满足所有需求,因为它同时只能执行最多一个程序(如果想要同时执行程式,只能使用TSR的方式来跳过OS而由程序自行处理多任务的部份),且没有任何内存保护措施。对驱动程序的支持也不够完整,因此导致诸如音效设备必须由程序自行设置的状况,造成不兼容的情况所在多有。某些操作的效能也是可怕地糟糕。许多应用程序因此跳过MS-DOS的服务程序,而直接存取硬件设备以取得较好的效能。虽然如此,但MS-DOS还是变成了IBM PC上面最常用的操作系统(IBM自己也有推出DOS,称为IBM-DOS或
PC-DOS)。MS-DOS的成功使得微软成为地球上最赚钱的公司之一。
而1980年代另一个崛起的操作系统异数是
Mac OS,此操作系统紧紧与
麦金塔电脑捆绑在一起。此时一位施乐帕罗奥托研究中心员工Dominik Hagen访问了
苹果电脑的
史蒂夫·乔布斯,并且向他展示了此时施乐发展的图形化使用者界面。
苹果电脑惊为天人,并打算向施乐购买此技术,但因帕罗奥托研究中心并非商业单位而是研究单位,因此施乐回绝了这项买卖。在此之后苹果一致认为个人电脑的未来必定属于图形使用者界面,因此也开始发展自己的图形化操作系统。现今许多我们认为是基本要件的图形化接口技术与规则,都是由苹果电脑打下的基础(例如下拉式菜单、桌面
图标、拖曳式操作与双点击等)。但正确来说,图形化使用者界面的确是施乐创始的。
20世纪90年代
Apple I电脑,苹果电脑的第一代产品。延续80年代的竞争,1990年代出现了许多影响未来个人电脑市场深厚的操作系统。由于图形化使用者界面日趋繁复,操作系统的能力也越来越复杂与巨大,因此强韧且具有弹性的操作系统就成了迫切的需求。此年代是许多套装类的个人电脑操作系统互相竞争的时代。
上一年代于市场崛起的苹果电脑,由于旧系统的设计不良,使得其后继发展不力,苹果电脑决定重新设计操作系统。经过许多失败的项目后,苹果于1997年释出新操作系统——MacOS的
测试版,而后推出的正式版取得了巨大的成功。让原先失意离开苹果的Steve Jobs风光再现。
除了商业主流的操作系统外,从1980年代起在开放原码的世界中,
BSD系统也发展了非常久的一段时间,但在1990年代由于与AT&T的法律争端,使得远在芬兰赫尔辛基大学的另一股
开源操作系统——
Linux兴起。Linux
内核是一个标准
POSIX内核,其血缘可算是Unix家族的一支。Linux与BSD家族都搭配
GNU计划所发展的应用程序,但是由于使用的许可证以及历史因素的作弄下,Linux取得了相当可观的开源操作系统市占率,而BSD则小得多。
相较于MS-DOS的架构,Linux除了拥有傲人的可移植性(相较于Linux,MS-DOS只能运行在Intel CPU上),它也是一个分时多进程内核,以及良好的内存空间管理(普通的进程不能存取内核区域的内存)。想要存取任何非自己的内存空间的进程只能通过
系统调用来达成。一般进程是处于使用者模式(User mode)底下,而执行系统调用时会被切换成内核模式(Kernel mode),所有的特殊指令只能在内核模式执行,此措施让内核可以完美管理系统内部与外部设备,并且拒绝无权限的进程提出的请求。因此理论上任何应用程序执行时的错误,都不可能让
系统崩溃(Crash)。
另一方面,微软对于更强力的操作系统呼声的回应便是
Windows NT于1993年的面世。
1983年开始微软就想要为MS-DOS建构一个图形化的操作系统应用程序,称为Windows(有人说这是比尔·盖茨被苹果的
Lisa电脑上市所刺激)。
一开始Windows并不是一个操作系统,只是一个应用程序,其背景还是纯MS-DOS系统,这是因为当时的BIOS设计以及MS-DOS的架构不甚良好之故。
在1990年代初,微软与IBM的合作破裂,微软从
OS/2(早期为命令行模式,后来成为一个很成功但是曲高和寡的图形化操作系统)项目中抽身,并且在1993年7月27日推出
Windows NT 3.1,一个以OS/2为基础的图形化操作系统。
并在1995年8月15日推出
Windows 95。
直到这时,Windows系统依然是建立在MS-DOS的基础上,因此消费者莫不期待微软在2000年所推出的
Windows 2000上,因为它才算是第一个脱离MS-DOS基础的图形化操作系统。
Windows NT系统的架构为:在硬件阶层之上,有一个由微内核直接接触的硬件抽象层(HAL),而不同的驱动程序以模块的形式挂载在内核上执行。因此微内核可以使用诸如输入输出、文件系统、网络、信息安全机制与
虚拟内存等功能。而
系统服务层提供所有统一规格的函数调用库,可以统一所有副系统的实作方法。例如尽管POSIX与OS/2对于同一件服务的名称与调用方法差异甚大,它们一样可以无碍地实作于系统服务层上。在系统服务层之上的副系统,全都是使用者模式,因此可以避免使用者程序执行非法行动。
DOS副系统将每个DOS程序当成一进程执行,并以个别独立的MS-DOS
虚拟机器承载其运行环境。另外一个是Windows 3.1 NT 模拟系统,实际上是在Win32副系统下执行Win16程序。因此达到了安全掌控为MS-DOS与早期Windows系统所撰写之旧版程序的能力。然而此架构只在Intel 80386处理器及后继机型上实作。且某些会直接读取硬件的程序,例如大部分的Win16游戏,就无法套用这套系统,因此很多早期游戏便无法在Windows NT上执行。
Windows NT有3.1.3.5.3.51与4.0版。
Windows 2000是Windows NT的改进系列(事实上是Windows NT 5.0)、
Windows XP(Windows NT 5.1)以及
Windows Server 2003(Windows NT 5.2)、
Windows Vista(Windows NT 6.0)、Windows 7(Windows NT 6.1)也都是立基于Windows NT的架构上。
而本年代渐渐增长并越趋复杂的
嵌入式设备市场也促使嵌入式操作系统的成长。
现代操作系统通常都有一个使用的绘图设备的图形化使用者界面,并附加如鼠标或触控面版等有别于键盘的输入设备。旧的OS或效能导向的服务器通常不会有如此亲切的接口,而是以命令行接口(CLI)加上键盘为输入设备。以上两种接口其实都是所谓的壳,其功能为接受并处理使用者的指令(例如按下一按钮,或在命令提示列上键入指令)。
选择要安装的操作系统通常与其硬件架构有很大关系,只有Linux与BSD几乎可在所有硬件架构上执行,而Windows NT仅移植到了DEC Alpha与MIPS Magnum。
在1990年代早期,个人电脑的选择就已被局限在Windows家族、类Unix家族以及Linux上,而以Linux及Mac OS X为最主要的另类选择,直至今日。
大型机与嵌入式系统使用很多样化的操作系统。大型主机近期有许多开始支持Java及Linux以便共享其他平台的资源。嵌入式系统近期百家争鸣,从给Sensor Networks用的Berkeley Tiny OS到可以操作Microsoft Office的
Windows CE都有。
2000年以后
至2005年为止,用于通用计算机上的分布的操作系统主要两个家族:类Unix家族和微软Windows家族。而主机系统和嵌入式操作系统使用多样的系统,并且很多和Windows、Unix都没有直接的联系。类Unix家族包括多个组织的操作系统,其中有几个主要的子类包括System V、BSD和Linux。这里'Unix'是一个商标,开发组织允许使用操作系统在一个定义前提下自由地开发。这名字是通用大型设置操作系统类似组织 Unix。Unix系统运行在从巨型机到嵌入式系统的多种机器架构上。Unix主要使用于重要的商务服务器系统以及学院和工程环境中的工作站之上。和 AT&T Unix不同,自由软件比如Linux和BSD逐步开始流行,并且开始进入桌面操作系统领域。和一些Unix操作系统不同,像
惠普公司的HPUX和IBM 公司的AIX是设计仅运行在客户购买的设备上,其中有一些特殊的(比如SUN公司的Solaris)可以运行在客户购买设备和基于工业标准的PC上。 APPLE公司的Mac OS X是一个BSD特例,以取代早期小型市场上的苹果公司Mac OS,众多流行的Unix操作系统正在走向一体。 微软公司的Windows操作系统家族起源于早期的IBM PC环境中的MS-DOS,现在版本是基于新的Windows NT内核,第一次是在OS/2中制定。和Unix不同,Windows只能运行在32位和64位的x86 CPU(如Intel或者AMD的芯片)上,尽管早期有版本运行于DEC Alpha,MIPS 和 PowerPC体系结构。今天Windows是一个流行的操作系统,在全球桌面市场中占有90%左右的份额,同时在中低端服务器市场也有广泛的应用,如 Web服务器和
数据库服务器。
大型机系统,比如IBM公司的Z/OS,和嵌入式操作系统比如QNX、eCOs和PalmOS都是和Unix和Windows无关的操作系统,而 Windows CE、Windows NT Embedded 4.0和Windows XP Embedded都是和Windows相关的。
老的操作系统停留在市场包括类似IBM Windows的OS/2.来自惠普的VMS(以前的DEC);苹果公司的Mac OS操作系统、非Unix先驱苹果公司Mac OS X,以及AmigaOS,第一个图形用户界面的操作系统,包括对于普通用户的高级的多媒体能力。
年表
年份 |
系统名称 |
1956年 |
GM-NAA I/O |
1959年 |
SHARE Operating System |
1960年 |
IBSYS |
1961年 |
CTSS
MCP (Burroughs Large Systems) |
1962年 |
GCOS |
1964年 |
EXEC 8
OS/360 (宣称)
TOPS-10 |
1965年 |
Multics (宣称)
OS/360 (上市)
Tape Operating System (TOS) |
1966年 |
DOS/360 (IBM)
MS/8 |
1967年 |
ACP (IBM)
CP/CMS
ITS
WAITS |
1969年 |
TENEX
Unix |
1970年 |
DOS/BATCH 11 (PDP-11) |
1971年 |
OS/8 |
1972年 |
MFT (operating system)
MVT
RDOS
SVS
VM/CMS |
1973年 |
Alto OS
RSX-11D
RT-11
VME |
1974年 |
MVS (MVS/XA) |
1975年 |
BS2000 |
1976年 |
CP/M
TOPS-20 |
1978年 |
Apple DOS 3.1 (苹果公司第一个操作系统)
TripOS
VMS
Lisp Machine (CADR) |
1979年 |
POS
NLTSS |
1980年 |
OS-9
QDOS
SOS
XDE (Tajo)
Xenix |
1981年 |
MS-DOS |
1982年 |
Commodore DOS
SunOS (1.0)
Ultrix |
1983年 |
Lisa OS
Coherent
Novell NetWare
ProDOS |
1984年 |
Macintosh OS (系统 1.0)
MSX-DOS
QNX
UniCOS |
1985年 |
AmigaOS
Atari TOS
MIPS OS
Oberon operating system
Microsoft Windows 1.0 (Windows第一版) |
1986年 |
AIX
GS-OS
HP-UX |
1987年 |
Arthur
IRIX (SGI推出的第一个版本号是3.0)
Minix
OS/2 (1.0)
Microsoft Windows 2.0 |
1988年 |
A/UX (苹果电脑)
LynxOS
MVS/ESA
OS/400 |
1989年 |
1989年
NeXTSTEP (1.0)
RISC OS
SCO Unix (第三版) |
1990年 |
Amiga OS 2.0
BeOS (v1)
OSF/1
Microsoft Windows 3.0 |
1991年 |
SunOS 4.1.x
Linux |
1992年 |
386BSD 0.1
Amiga OS 3.0
Solaris 2.0 (SunOS 4.x的继承者,以SVR4为基础,而非BSD)
Microsoft Windows 3.1 |
1993年 |
Solaris 2.1
Solaris 2.2
Solaris 2.3
Plan 9 (第一版)
FreeBSD
NetBSD
Microsoft Windows NT 3.1 (第一版NT) |
1994年 |
Solaris 2.4 |
1995年 |
Solaris 2.5
Digital UNIX (aka Tru64)
OpenBSD
OS/390
Microsoft Windows 95 |
1996年 |
Microsoft Windows95 OSR2(OSR=OEMServicerelease) (即:Windows 97)
Microsoft Windows NT 4.0 |
1997年 |
Solaris 2.6
Inferno
Mac OS 7.6 (第一版官方正式命名为Mac OS)
SkyOS |
1998年 |
Solaris 7 (第一款64位元Solaris版本,是2.7舍弃主版本号的称谓)
Microsoft Windows 98 |
1999年 |
AROS
Mac OS 8
Microsoft Windows 98 Second Edition |
2000年 |
Solaris 8
AtheOS
Mac OS 9
MorphOS
Microsoft Windows 2000
Microsoft Windows Me
Mac OS X Public Beta (公开测试版)(2000年9月13日) |
2001年 |
Mac OS X 10.0 Cheetah(印度豹)(2001年3月24日)
Amiga OS 4.0 (2001年5月)
Mac OS X 10.1 Puma(美洲狮)(2001年9月25日)
Microsoft Windows XP
z/OS |
2002年 |
Solaris 9 for SPARC
Microsoft Windows XP 64-bit Edition
Windows XP Tablet PC Edition
Windows XP Media Center Edition
Syllable
Mac OS X 10.2 Jaguar(美洲虎)(2002年8月23日) |
2003年 |
Solaris 9 for x86
Microsoft Windows Server 2003 (2003年3月28日)
Microsoft Windows XP 64-bit Edition - 以Microsoft Windows Server 2003为基础,同一天释出。
Mac OS X 10.3 Panther(黑豹)(2003年10月24日) |
2004年 |
Microsoft Windows XP Media Center Edition |
2005年 |
Solaris 10
Microsoft Windows XP Professional x64 Edition
Mac OS X 10.4 Tiger(老虎)(2005年4月29日) |
2006年 |
Microsoft Windows Vista |
2007年 |
Mac OS X 10.5 Leopard(美洲豹)(2007年10月26日) |
2008年 |
Ubuntu 8.04 LTS
OpenSolaris 08/05
Ubuntu 8.10
OpenSolaris 08/11
Windows Server 2008 |
2009年 |
Ubuntu 9.04
Mac OS X v10.6 Snow Leopard (雪豹)(2009年8月28日)
Windows Server 2008 R2
windows 7
Ubuntu 9.10
Chrome OS |
2010 年 |
ubuntu 10.04
ubuntu 10.10 |
2011年 |
Ubuntu11.04
Ubuntu11.10
Mac OS X 10.7 Lion |
2012年 |
OS X 10.8 Mountain Lion Ubuntu12.04
Microsoft Windows 8 |
操作系统的主要功能是资源管理,程序控制和人机交互等。计算机系统的资源可分为设备资源和信息资源两大类。设备资源指的是组成计算机的硬件设备,如中央处理器,主存储器,磁盘存储器,打印机,磁带存储器,显示器,键盘输入设备和鼠标等。信息资源指的是存放于计算机内的各种数据,如文件,程序库,知识库,系统软件和应用软件等。
操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。以现代观点而言,一个标准个人电脑的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也提供某种程度的回馈机制,让直接与使用者交互的进程拥有较高的特权值。
内存管理
根据帕金森定律:“你给程序再多内存,程序也会想尽办法耗光”,因此程序设计师通常希望系统给他无限量且无限快的内存。大部分的现代电脑内存架构都是阶层式的,最快且数量最少的寄存器为首,然后是高速
缓存、内存以及最慢的磁盘储存设备。而OS的内存管理提供寻找可用的记忆空间、配置与释放记忆空间以及交换内存和低速储存设备的内含物……等功能。此类又被称做虚拟内存管理的功能大幅增加每个进程可获得的记忆空间(通常是4GB,即使实际上RAM的数量远少于这数目)。然而这也带来了微幅降低执行效率的缺点,严重时甚至也会导致进程崩溃。
内存管理的另一个重点活动就是借由CPU的帮助来管理虚拟位置。如果同时有许多进程储存于记忆设备上,操作系统必须防止它们互相干扰对方的内存内容(除非通过某些
协议在可控制的范围下操作,并限制可存取的内存范围)。分割内存空间可以达成目标。每个进程只会看到整个内存空间(从0到内存空间的最大上限)被配置给它自己(当然,有些位置被OS保留而禁止存取)。CPU事先存了几个表以比对虚拟位置与实际内存位置,这种方法称为分页(paging)配置。
借由对每个进程产生分开独立的位置空间,OS也可以轻易地一次释放某进程所占据的所有内存。如果这个进程不释放内存,OS可以退出进程并将内存自动释放。
操作系统理论研究者有时把
操作系统分成四大部分:
驱动程序- 最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。
内核- 操作系统之最内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能。
接口库- 是一系列特殊的程序库,它们职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近
应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式。
外围- 所谓外围,是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。
当然,本节所提出的四部结构观也绝非放之四海皆准。例如,在早期的微软视窗操作系统中,各部分耦合程度很深,难以区分彼此。而在使用外核结构的操作系统中,则根本没有驱动程序的概念。因而,本节的讨论只适用于一般情况,具体特例需具体分析。
操作系统中四大部分的不同布局,也就形成了几种整体结构的分野。常见的结构包括:简单结构、层结构、微内核结构、
垂直结构、和虚拟机结构。
内核是操作系统最内核最基础的构件,因而,内核结构往往对操作系统的外部特性以及应用领域有着一定程度的影响。尽管随着理论和
实践的不断演进,操作系统高层特性与内核结构之间的耦合有日趋缩小之势,但习惯上,内核结构仍然是操作系统分类之常用标准。
内核的结构可以分为单内核、微内核、超微内核、以及外核等。
单内核结构是操作系统中各内核部件杂然混居的形态,该结构于1960年代(亦有1950年代初之说,尚存争议),历史最长,是操作系统内核与外围分离时的最初形态。
微内核结构是1980年代产生出来的较新的内核结构,强调结构性部件与功能性部件的分离。20世纪末,基于微内核结构,理论界中又发展出了超微内核与外内核等多种结构。尽管自1980年代起,大部分理论研究都集中在以微内核为首的“新兴”结构之上,然而,在应用领域之中,以单内核结构为基础的操作系统却一直占据着主导地位。
在众多常用操作系统之中,除了QNX和基于Mach的UNIX等个别系统外,几乎全部采用单内核结构,例如大部分的Unix、Linux,以及Windows(微软声称Windows NT是基于改良的微内核架构的,尽管理论界对此存有异议)。 微内核和超微内核结构主要用于研究性操作系统,还有一些嵌入式系统使用外核。
基于单内核的操作系统通常有着较长的历史渊源。例如,绝大部分UNIX的家族史都可上溯至1960年代。该类操作系统多数有着相对古老的设计和实现(例如某些UNIX中存在着大量1970年代、1980年代的代码)。另外,往往在性能方面略优于同一应用领域中采用其他内核结构的操作系统(但通常认为此种性能优势不能完全归功于单内核结构)。
目前的操作系统种类繁多,很难用单一标准统一分类。根据应用领域来划分,可分为
桌面操作系统、
服务器操作系统、
主机操作系统、
嵌入式操作系统;
根据所支持的用户数目,可分为单用户(MSDOS、OS/2.Windows)、
多用户系统(UNIX、MVS);
根据源码开放程度,可分为
开源操作系统(Linux、Chrome OS)和不开源操作系统(Mac OS、Windows);
根据硬件结构,可分为
网络操作系统(Netware、Windows NT、OS/2 warp)、
分布式系统(Amoeba)、多媒体系统(Amiga)、网络操作系统和
分布式操作系统等;
根据操作系统的使用环境和对作业处理方式来考虑,可分为
批处理系统(MVX、DOS/VSE)、分时系统( Linux、UNIX、XENIX、Mac OS)、
实时系统(iEMX、VRTX、RTOS,RT WINDOWS);
根据操作系统的技术复杂程度,可分为简单操作系统、智能操作系统(见
智能软件)。所谓简单操作系统,指的是计算机初期所配置的操作系统,如IBM公司的磁盘操作系统DOS/360和微型计算机的操作系统CP/M等。这类操作系统的功能主要是操作命令的执行,文件服务,支持高级
程序设计语言编译程序和控制外部设备等;
根据指令的长度分为8bit, 16bit, 32bit, 64bit的操作系统。
编辑本段流行的主要操作系统
个人电脑
个人电脑市场从硬件架构上来说目前分为两大阵营,PC机与Apple电脑。它们支持的操作系统:
1
[1]
LINUX吉祥物
由微软公司生产
Windows徽标
2 Unix类操作系统
如
SOLARIS,
BSD系列(
FREEBSD,
openbsd,
netbsd,
pcbsd)
3 Linux类操作系统
如
Ubuntu,
Suse Linux,
Fedora,等
4
Mac操作系统
由苹果公司生产(Darwin),一般安装于MAC电脑。
大型电脑
最早的操作系统是针对20世纪60年代的大型主结构开发的,由于对这些系统在软件方面做了巨大投资,因此原来的计算机厂商继续开发与原来操作系统相兼容的硬件与操作系统。这些早期的操作系统是现代操作系统的先驱。现在仍被支持的大型主机操作系统包括:
Burroughs MCP-- B5000,1961 to Unisys Clearpath/MCP, present.
IBM OS/360 -- IBM System/360, 1964 to IBM zSeries, present
UNIVAC EXEC 8 -- UNIVAC 1108, 1964, to Unisys Clearpath IX, present.
现代的大型主机一般也可运行Linux或Unix变种。
批处理操作系统
批处理(Batch Processing)操作系统的工作方式是:用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,然后启动操作系统,系统自动、依次执行每个作业。最后由操作员将作业结果交给用户。
批处理操作系统的特点是:多道和成批处理。
分时操作系统
分时(Time Sharing)操作系统的工作方式是:一台主机连接了若干个
终端,每个终端有一个用户在使用。用户交互式地向系统提出命令请求,系统接受每个用户的命令,采用时间片轮转方式处理服务请求,并通过交互方式在终端上向用户显示结果。用户根据上步结果发出下道命。分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。每个用户轮流使用一个时间片而使每个用户并不感到有别的用户存在。分时系统具有多路性、交互性、“独占”性和及时性的特征。多路性指,伺时有多个用户使用一台计算机,宏观上看是多个人同时使用一个CPU,微观上是多个人在不同时刻轮流使用CPU。交互性是指,用户根据系统响应结果进一步提出新请求(用户直接干预每一步)。“独占”性是指,用户感觉不到计算机为其他人服务,就像整个系统为他所独占。及时性指,系统对用户提出的请求及时响应。它支持位于不同终端的多个用户同时使用一台计算机,彼此独立互不干扰,用户感到好像一台计算机全为他所用。
常见的通用操作系统是分时系统与批处理系统的结合。其原则是:分时优先,批处理在后。“前台”响应需频繁交互的作业,如终端的要求; “
后台”处理时间性要求不强的作业。
实时操作系统
实时操作系统(RealTimeOperatingSystem,RTOS)是指使计算机能及时响应外部事件的请求在规定的严格时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作的操作系统。实时操作系统要追求的目标是:对外部请求在严格时间范围内做出反应,有高可靠性和完整性。其主要特点是资源的分配和调度首先要考虑实时性然后才是效率。此外,实时操作系统应有较强的容错能力。
网络操作系统
网络操作系统是基于计算机网络的,是在各种计算机操作系统上按
网络体系结构协议标准开发的软件,包括
网络管理、通信、安全、资源共享和各种网络应用。其目标是相互通信及资源共享。在其支持下,网络中的各台计算机能互相通信和共享资源。其主要特点是与网络的硬件相结合来完成网络的通信任务。
分布式操作系统
它是为
分布计算系统配置的操作系统。大量的计算机通过网络被连结在一起,可以获得极高的运算能力及广泛的数据共享。这种系统被称作分布式系统(DistributedSystem) 。它在资源管理,通信控制和操作系统的结构等方面都与其他操作系统有较大的区别。由于分布计算机系统的资源分布于系统的不同计算机上,操作系统对用户的资源需求不能像一般的操作系统那样等待有资源时直接分配的简单做法而是要在系统的各台计算机上搜索,找到所需资源后才可进行分配。对于有些资源,如具有多个副本的文件,还必须考虑一致性。所谓一致性是指若干个用户对同一个文件所同时读出的数据是一致的。为了保证一致性,操作系统须控制文件的读、写、操作,使得多个用户可同时读一个文件,而任一时刻最多只能有一个用户在修改文件。分布操作系统的通信功能类似于网络操作系统。由于分布计算机系统不像网络分布得很广,同时分布操作系统还要支持并行处理,因此它提供的通信机制和网络操作系统提供的有所不同,它要求通信速度高。分布操作系统的结构也不同于其他操作系统,它分布于系统的各台计算机上,能并行地处理用户的各种需求,有较强的容错能力。
分布操作系统是网络操作系统的更高形式,它保持了网络操作系统的全部功能,而且还具有透明性、可靠性、和高性能等。网络操作系统和分布式操作系统虽然都用于管理分布在不同地理位置的计算机,但最大的差别是:网络操作系统知道确切的网址,而分布式系统则不知道计算机的确切地址;分布之操作系统负责整个的资源分配,能很好地隐藏系统内部的实现细节,如对象的物理位置等。这些都是对用户透明的。
通用与专用、嵌入式
通用操作系统是面向一般没有特定应用需求的操作系统。由于没有特定的应用需求,通用操作系统为了适应更广泛的应用,需要支持更多的硬件与软件,需要针对所有的用户体验,对系统进行更新。通用操作系统是一个工程量繁重的操作系统。
即时与非即时
“即时作业系统”(Real Time OS)泛指所有据有一定实时资源调度以及通讯能力的操作系统。而所谓“实时”,不同语境中往往有着非常不同的意义。某些时候仅仅用作“高性能”的同义词。但在操作系统理论中“即时性”所指的通常是特定操作所消耗的时间(以及空间)的上限是可预知的。比如,如果说某个操作系统提供实时内存分配操作,那也就是说一个内存分配操作所用时间(及空间)无论如何也不会超出操作系统所承诺的上限。即时性在某些领域非常重要,比如在工业控制、医疗器材、影音频合成、以及军事领域,即时性都是无可或缺的特性。
常用即时操作系统有
QNX、
VxWorks、
RTLinux等等,而Linux、多数
UNIX、以及多数Windows家族成员等都属于非实时操作系统。操作系统整体的即时性通常依仗内核的即时能力,但有时也可在非即时内核上创建即时操作系统,很多在Windows上创建的即时操作系统就属于此类。
在
POSIX标准中专有一系用于规范即时操作系统的API,其中包括POSIX.4、POSIX.4a、POSIX.4b(合称POSIX.4)以及POSIX.13等等。符合POSIX.4的操作系统通常被认可为即时操作系统(但即时操作系统并不需要符合POSIX.4标准)。
寻址宽度
xp系统
所谓8位、16位、32位、64位、128位等术语有时指总线宽度,有时指指令宽度(在定长指令集中),而在操作系统理论中主要是指存储器寻址的宽度。如果存储器的寻址宽度是16位,那么每一个存储器地址可以用16个二进制位来表示,也就是说可以在64KB的范围内寻址。同样道理32位的宽度对应4GB的寻址范围,64位的宽度对应16 Exabyte的寻址范围。存储器寻址范围并非仅仅是对操作系统而言的,其他类型的软件的设计有时也会被寻址范围而影响。但是在操作系统的设计与实现中,寻址范围却有着更为重要的意义。
在早期的16位操作系统中,由于64KB的寻址范围太小,大都都采用“段”加“线性地址”的二维平面地址空间的设计。分配存储器时通常需要考虑“段置换”的问题,同时,应用程序所能够使用的地址空间也往往有比较小的上限。
在32位操作系统中,4GB的寻址范围对于一般应用程序来说是绰绰有余的,因而,通常使用一维的线性地址空间,而不使用“段”。
研究与建立未来的操作系统依旧进行著。操作系统朝提供更省电、网络化、华丽的使用者界面的方向来改进。Linux及一些类UNIX OS正努力让自己成为个人用户舒适的环境。GNU Hurd是一个企图完全兼容Unix并加强许多功能的微内核架构。微软Singularity是一个奠基于.Net并以建立较佳内存保护机制为目标的研究计划。