简介:
Plan 9 是什么?
最新的Plan9 发行有什么?
它和其它操作系统有什么关系?
它的关键思想是什么?
这些方法有什么优势?
硬件和软件 :
它运行在哪些平台上?
有人为我的系统做一个移植吗?
它支持对称多处理(symmetric multiprocessing)吗?
应用程序和工具怎么样?
有fortran 语言的编译程序吗?
在哪儿可以获得更多的 Plan 9 软件?
它是面向对象(object-oriented)的吗?
应用软件的可移植性如何?
它需要哪些资源?
它支持什么图形用户界面(GUIs)?
如何用2键的鼠标作切割和粘贴?
Plan 9 有类 Unix的终端模拟程序吗?
它使用什么字符集?
安全和用户鉴别方面如何呢?
它是怎样和其它系统通信的?
它对实时控制合适吗?
安装和管理:
Plan 9可以在很好地工作在哪些PC 硬件上?
我如何安装 Plan 9?
若不起作用,如何解决问题呢?
如何设置视频图形适配器(VGA)?
如何控制引导时启动的服务?
如何设置网络服务?
如何关闭我的终端/cpu服务器 系统?
如何重新启动我的系统?
综合信息:
Plan 9这个名字是从哪来的?
如何获得Plan 9?
我如何参与进来?
如何得到更多详细的技术信息?
我能在Unix下模拟 Plan 9吗?
有Plan 9 用户组吗?
--------------------------------------------------------------------------------
简介:
主题: Plan 9是什么?
Plan 9 是一个新的计算机操作系统和相关程序的名字。它由 Lucent Technologies 公司下属的Bell Laboratories的计算科学研究中心(Computing Science Research Center)构建,是开发了Unix, C, 及C++的同一组织。
Plan 9 是一个分布式系统。 以最通常的配置,它使用三种组成部分:放在用户桌上的终端,存储永久数据的文件服务器,和其它提供快速的CPUs,用户鉴别,和网络入口的服务器。这些组成部分用不同的网络连接,包括Ethernet, 专用的光纤网络, 普通的调制解调器连接,和ISDN。典型的使用方式是,用户和运行在他们的终端或CPU服务器上的应用程序交互,而应用程序从文件服务器上获得它们的数据。尽管如此,设计是高度可配置的;它可以配置到联网的工作站的具体模型和中央的机器服务器。
主题: 最新的Plan9 发行有什么?
Plan 9第三版的出版发行新闻稿在 http://www.bell-labs.com/news/2000/june/7/2.html
Plan 9本次发行的变化中有一个修改过的核心,它现在有解析歧义文件名的方法;一个改进的图形环境; 一组更新的名令;和扩充的库。系统的创建者也安装了"plumbing," 在交互程序间传递消息的一个新机制, 它是用户接口的一部分。
新的发行可以在遵守一个开放源代码协议的条件下免费下载。与以前的发行相比这是相当重要的一步。
在实际安装之前,如果你想浏览发布软件包,你就需要这里的工具unix/。
主题: 对历史有兴趣的
Plan 9 的第一版在1993年发行,只有大学可以获得。
在1995,如果遵守压缩包许可证,就可以通过购买获得第二版。
本常见问答的第二版备档在plan9v2faq.html
主题: 它和其它操作系统有什么关系?
Plan 9 本身是一个操作系统;它不是运行在另一个系统下的一个应用程序。它是从头开始写成的且不包含其它人的代码。尽管对应程序的操作系统接口强烈地受到 Unix方法的影响,但它不是Unix的替代者;它是一个全新的设计。
主题:它的关键思想是什么?
Plan 9 尽可能地开拓三个基本的技术上的考虑:首先,所有的系统对象本身被表示成命名的文件,这些文件通过 读/写操作修改;第二,所有这些文件可以存在本地或者远程,且响应于一个标准协议;第三,文件系统名字空间 - 一个程序可见的对象集合 - 对于运行在具体机器上的每一个程序可以动态的和独立的调整。这些想法的前两个已经在 Unix 上有所预示,其它系统中这种程度更低,然而第三个是新的:它提供了一个解决分布式计算和图形的工程方案。Plan 9的方法意味着应用程序不必知道它们运行在那台机器上;什么地点,以及在哪一种机器上,运行 Plan 9 程序是一个经济的选择-它不影响应用程序本身的构造。
主题: 这些方法有什么优势?
Plan 9的方法改进了应用程序设计的通用性和模快化,通过鼓励服务器让呈现给用户和应用程序的任何一种信息就像普通文件的收集一样。这里有一些例子。
Plan 9 窗口系统(称为 rio)是小而干净的部分地是因为它的设计集中于为运行在它下面的每一个应用程序提供一个虚拟的键盘,鼠标和屏幕,而使用操作系统提供的真实键盘, 鼠标,和屏幕。也就是说 - 除了创建,删除,和布置窗口本身之外 - 它的工作是作为一个为客户提供某种资源的服务器。作为一方面的好处,这个方法意味着窗口系统可以嵌套地运行在它的一个窗口中,或者甚至在另一台机器上。
Plan 9 用户通过运行一个本地程序进行因特网FTP,它让在任何FTP服务器(因特网上的任何地点)上的所有文件呈现为本地文件。 Plan 9 的PC 用户-在他们的磁盘上有一个 DOS/Windows 分区-也可以使用存储在那里的文件。 ISO 9660 CD-ROM 和tar 以及 cpio 磁带的行为都好像他们是本地文件系统一样。任何应用程序的全部的I/O 行为和性能可以通过把它运行在服务器上监视,服务器察看所有的它的交互。调试程序在另一个机器上检查一个程序,即使这个程序运行在一个不同的硬件体系结构上。
另一个例子是网络使用的方法。在Plan 9中,每一个网络把它本身表示成一组用于连接创建,I/O,和控制的文件。用于操作的一个公共语义核心是和一个通用服务器一起被同意的,此服务器把机器可读的地址翻译成特定网络的地址 。这样的结果就是应用程序不在意它们在使用哪一种网络(TCP/IP,ISDN, modem)。实际上, 应用程序甚至不知道他们使用的网络是否物理地连接到应用程序多运行的机器: 网络接口文件可以从另一台机器导入。
硬件和软件:
主题: 它运行在哪些平台上?
Plan 9 的核心和应用程序是高度可移植的。Plan 9 运行在四种主要的机器体系结构上: Intel 386/486/Pentium, MIPS, Alpha, 和 PowerPC. 数据结构和协议是为在不同设计的机器上进行分布式计算而设计的。除了核心中必要的机器相关部分, 编译器以及一些库之外,对每一种体系都用单一的源代码表示。
要察看Plan 9 是否支持你的硬件, 请阅读The Various Ports 和 Supported PC Hardware.
主题: 有人在为我的系统作移植工作吗?
可能 ... 让我们等等看吧.
主题: 它支持对称多处理吗?
是. The SGI Challenge 系列的多处理器和多个处理器的 Pentiums 被支持。要小心基于Intel的SMP 系统对多处理器规范的遵从是相当出名地易变,当系统有问题时还常会让人头疼。
已经可以运行系统的机器从双 Pentium 90's 一直到 4个 Xeon 400 和 8 processor Pentium Pro Axil系统。默认地,刚从包装中取出的发行软件中SMP 运行plan9.ini 配置文件中的一个选项关闭。
主题: 应用程序和工具怎么样?
Plan 9 有自带的C语言编译程序和其它语言工具,还有所有的命令和Unix 环境中原来先驱的程序开发工具。它也提供新设计的软件。 Acid 是一个接受多进程程序的可编程调试程序,被调试的程序可能运行在和它本身不同的硬件平台上。Acme 是一个新的用户接口,在其中,屏幕上的任何单词通过点击可被解释成一个命令, 任意字符串可以指明一个要显示的文件。
主题: 有fortran 语言编译程序吗?
没有, Plan 9 没有fortran 编译程序。如果你有 想要运行的fortran 语言程序,你可以试试 f2c (fortran to C) 转换程序,在此地址可得 ftp://netlib.bell-labs.com/netlib/f2c/
主题: 在哪可以得到更多的 Plan 9 软件?
Charles Forsyth 有原来的而且仍然是最长的软件列表
http://www.caldo.demon.co.uk/plan9/soft/index.html
Russ Cox 有许多cd 播放程序, mp3 播放程序和许多其他小工具
http://www.eecs.harvard.edu/~rsc/plan9.html
Tad Hunt 可以帮助你平衡你的银行户头, 引导你的笔记本电脑(laptop)还可以听音乐
http://csh-east.org/~tad/plan9/
Nemo (Francisco Ballesteros) 有一组驱动程序和实用程序
http://plan9.escet.urjc.es/usr/nemo/9.html
Kenji Arisawa's ftp 站点
ftp://plan9.aichi-u.ac.jp/
Boyd Roberts 在不对Plan 9爱好者(9fans)夸夸其谈时写了一些 rc 脚本
http://mapage.noos.fr/~repo/
以下地址有一个 Python 移植
http://csociety-ftp.ecn.purdue.edu/pub/plan9/python/
The wiki 的用户贡献的软件网页也是有用的
http://plan9.bell-labs.com/wiki/plan9/35/index.html
主题: 它是面向对象的吗?
不,不在传统的观念上。 它是用一个严格的本地化的 ISO/ANSI C写成的。更广泛的意义上说, 它的让所有对象像文件一样看待的通用设计对以良好定义的设计来讲就展示了一个相关的方法。
主题: 应用软件移植性如何?
Plan 9 带有一个库,它使得导入POSIX-遵从的应用程序很容易。还有一个模拟 Berkeley socket接口的库。
主题: 它需要哪些资源?
就像所期望的一样,答案取决于你想做什么。核心, 窗口系统,和基本应用程序能够顺利地运行在 8MB内存的PC上 。
另一方面,系统可以增加。Bell 实验室的安装包括作为CPU服务器的多处理器SGI Challenge 和Pentium 机器, 和一个用于文件服务器的350GB Sony WORM 磁盘柜。
主题: 它支持什么图形用户接口?
标准的接口不使用图标(icons)或拖放(drag-n-drop); 使用Plan 9 的人们倾向于面向文本。但是窗口系统,编辑程序,和通常的观感也非常鼠标化,常用指定和点击(point-and-click): Plan 9 窗口不只是一大群玻璃终端(TTYs)。系统支持图形原语和用于构造图形用户接口的基本软件的库。
一张屏幕快照可以在此得到 http://plan9.bell-labs.com/plan9dist/screenshot.html
主题: 如何用2键的鼠标作切割和粘贴?
只有用3键鼠标,Plan 9 才能实际很好地工作。同时,Shift-Right-button 会模拟中间键,但是这样的协调对于 Acme是不够的
主题: Plan 9 有任何类Unix的终端仿真程序吗?
Plan 9 窗口系统不接受任何内嵌的光标控制,因为没有一个本地应用程序使用光标定位(cursor-addressing)。在 rio, acme 和sam中的所有光标控制都通过鼠标。
若要参考一些优秀的论文对此重要的且对立的用户接口问题的讨论,请阅读 http://www.asktog.com/readerMail/1999-12ReaderMail.html.
如果你想从Plan 9进入 Unix 系统;你可以在你的一个窗口中运行 /bin/vt, 用telnet/rlogin 登录到 Unix, 然后根据Unix的终止设置term/TERM 变量. 更多细节请参考 vt(1) ;注意 vt(1)可以模拟一个 VT100,VT220 或者ANSI 终端。
主题: 它使用什么字符集?
使用的字符集是Unicode,用 ISO 10646 标准统一的16位集,此标准意图表示全球使用的语言。系统和实用程序支持一个用字节流表示的Unicode(称为UTF-8),它和ASCII兼容。在Plan 9上,用户可以用日本名字为一个文件中的西里尔字符串进行grep, 察看正确地显示在终端上的结果。
主题: 安全和用户鉴别如何?
Plan 9的 鉴别设计和 MIT 的 Kerberos是类似的.口令从不跨网络传送;相反却从鉴别服务器上获得加密的票据(tickets)。它还没有`设置 UID'程序的概念。除了在它自己的控制台之外,文件服务器不运行用户程序,除了被鉴别的所有者以外不允许对受保护文件的访问。特殊的`root' 用户的概念没有了。
主题: 它是如何和其它系统通信的?
发布软件包括一个 u9fs 服务器,它运行在 Unix-兼容的系统上且接受本地的Plan 9远程文件协议,因此Unix 机器的文件系统可以导入到Plan 9。还有一个运行在Plan 9上的NFS-兼容服务器,因此Plan 9 文件系统可以从其它支持 NFS的系统上访问。它包括全套的 Internet 协议(telnet, rlogin, ftp)。
主题: 它适合实时控制吗?
不,它不适合。它是通用操作系统,没有中断优先级机制和实时调度。
安装和管理:
主题: Plan 9可以很好地工作在哪些PC 硬件上?
如果你不想花时间乱搞和交换PC 硬件,那么你宁愿购买哪些Bell Labs所使用的硬件 支持的 PC硬件.
最大的问题来源是获得配置了VGA 的PC终端。为了达到最佳的性能和功能,推荐你使用可以运行16 bits每像素或更高的卡, 且带有硬件加速的图形支持;当前只有 Mach64 和S3 Virge 支持这个扩充。现在最好购买的应当是 ATI 8Meg Xpert 98 cards.
对于一台cpu服务器或文件服务器,那么任何可以达到CGA 的程度就足够了。
主题: 如何安装Plan 9?
安装被设计成从PC上运行
阅读 "支持的硬件 " 确认你的 PC 硬件符合要求。
备份你的系统。
确认你已经备份你的系统。
阅读 "安装Plan 9 发布软件" URL是 http://plan9.bell-labs.com/sys/doc/install.html
在http://plan9.bell-labs.com/plan9dist/errata.html 检查errata 页,可以发现自发布以来的发现的问题和解决。
在Plan 9爱好者群组中有更多的已经回答的问题:
IP 设置
如果你在/lib/ndb/local中设置一个适当的入口点,ndb/cd会设置系统名称。你必须指定一个'ether=' 入口点, 而且地址应当都为小写。如果都做好了,ip/ipconfig就会设置 IP。
名字服务
如果有了问题,首先检查ndb/dns 是否正在运行。它应当在/rc/bin/termrc 或者 /rc/bin/cpurc中被启动。还要注意只支持完全合格的名字,那里没有一个独立的解析器(resolver)。
绑定(Binding)和安装(Mounting)设备
注意 # 是 shell 的注释字符,所以你必须用单引号括住。例如: bind -a '#R6' /dev
鉴别服务器
当引导一个没有鉴别服务器的 cpu服务器时,如果你给鉴别服务器的地址为0.1.0.0 而不是cpu 服务器自己的地址 ,你就不必等待到cpu服务器超时。
主题:如果系统无法工作,我该如何解决问题呢?
如果是 SCSI 方面的问题,检查你的线缆和终结器(terminators)。 通常这是古怪的SCSI问题的唯一最大来源。活动的终结器是最好的。如果你使用外部线缆,你应当用高质量的。 而且不必为卡的速度而生气。
主题: 如何设置视频图形适配器?
如果VGA无用,阅读 "安装Plan 9 发布软件" 的最后两部分(设置和解决难题)。
你可以找到更多设置卡的信息。相关的手册页是: vga(3), vgadb(6), vga(8), 和 9load(8).
如果你的 VGA 卡不被支持,你可以尝试 http://mapage.noos.fr/philippe.anel/ 上 Matrox G200 G400 和 G450 驱动程序,由Philippe Anel所写 ,或者参考 http://plan9.bell-labs.com/wiki/plan9/39/index.html 上面 Nicholas Waples提供的Riva TNT 驱动程序。
把
debug=1
(第1行)放到plan9.ini 然后再试一下。这可能不是很有用但是允许问一个更具体的问题。
主题: 我如何控制引导时启动的服务?
这由shell脚本控制,它大致相当于Unix系统的/etc/rc等文件:
用于终端的/rc/bin/termrc文件
用于cpu 服务器的/rc/bin/cpurc 文件。
详细信息请参考cpurc(8) 。
主题: 如何设置网络服务?
对于UDP 服务, 你必须在适当的 cpurc(8)文件中启动他们。 对于TCP或者IL 服务,你必须使用listen(8) 守护程序。
主题: 如何关闭我的终端/cpu服务器系统?
如果你是从一个 实际的 文件服务器引导的, 你只要关掉它就行了。
如果你使用kfs, 你必须在一个提示符上通过输入
disk/kfscmd halt
命令手工地停掉磁盘,还要等到``kfs: file system halted'' 出现在屏幕上为止。
如果不这样做,磁盘可能处于一个不一致的状态或者修改的日期可能还没有被写出;如果不停掉磁盘,那么在下一次引导时kfs检查磁盘就会在"kfs..."处经历长时间的等待。
主题: 如何重新引导我的系统?
用输入^T^Tr (两个 control-T, 后接一个 'r')重新引导系统。 可以 在控制台输入 ^P重新引导Cpu服务器。 参考cons(3)手册查阅更多细节。
综合信息:
主题: Plan 9这个名字是从哪来的?
它是根据 Bell 实验室的选名传统选择的,这个传统让市场人员畏缩。开发者也希望 向著名的电影 "Plan 9 From Outer Space"表示敬意 。
主题:如何获得 Plan 9?
Plan 9 发行可以通过免费下载获得: http://plan9.bell-labs.com/plan9dist/download.html
它包括所有支持的体系结构的核心、库和命令的源代码。它还包括 x86 体系的完整二进制文件。
主题: 我如何参与进来?
学习此系统的最好方法是写一些Plan 9用户社团中的其他人可以使用的东西,或者把系统移植到新的平台上。.
任何人想让它的项目列在这里,请让我知道。这有助于避免重复投入,增加与‘网络团体’的关系。
主题: 如何获得更多详细的技术信息?
Bell 实验室站点 http://plan9.bell-labs.com/plan9dist/大量有关系统的信息。
手册页在 http://plan9.bell-labs.com/sys/man/
要察看补充文档,参考 http://plan9.bell-labs.com/sys/doc/
一个Plan 9 wiki 有热心人维护,地址在 http://plan9.bell-labs.com/wiki/plan9/1/
主题: 哪里有Plan 9 用户组?
在 Austin, Texas有一个。参考 http://einstein.ssz.com/hangar18/index.html 它对任何人都开放,即使你不住在 Austin.
主题: 我能在在 Unix下模拟Plan 9吗?
一些由 Plan 9 生成的应用程序对 Unix 系统是可用的。
sam 编辑程序可以在 ftp://netlib.bell-labs.com/netlib/research/sam.shar.gz 得到。
还有一个 Windows 95/NT 版本的 Sam,当前只以二进制形式发布,在这里可以得到 ftp://netlib.bell-labs.com/netlib/research/sam.exe 评论和错误报告发送到 seanq@research.bell-labs.com
一个免费的重新实现的 rc shell可在这里 ftp://ftp.white.toronto.edu/pub/rc/ 得到。
Wily 是一个类似 acme 外观的程序,由 Gary Capell所写。参考 http://www.cs.yorku.ca/~oz/wily/
9wm 是 David Hogan的 小型的8½ ;X 窗口管理器.可从 ftp://ftp.cs.su.oz.au/dhog/9wm/获得。 评论发送到 dhog@cs.su.oz.au
9term 是一个Matty Farrow写的 8½终端模拟器 matty@cs.su.oz.au,这里获得 ftp://ftp.cs.su.oz.au/matty/unicode/ 在相同的目录中,你会发现可以和9term,sam和wily一起使用的 Unicode 字体的集合 。
9menu 是一个Arnold Robbins写的一个简单程序, arnold@skeeve.com, 它允许你从shell创建 X 菜单,每一个菜单项能运行一个命令。9menu 被打算和 9wm一起使用,但是也可以和任何其它窗口管理器一起使用。 可以从这里 ftp://ftp.freefriends.org/arnold/Source/9menu-1.5.shar.gz 获得。
2008年5月11日星期日
2008年5月5日星期一
操作系统
操作系统是控制其他程序运行,管理系统资源并为用户提供操作界面的系统软件的集合。
操作系统(英语;Operating System,简称OS)是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。目前微机上常见的操作系统有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。但所有的操作系统具有并发性、共享性、虚拟性和不确定性四个基本特征。
操作系统的型态非常多样,不同机器安装的OS可从简单到复杂,可从手机的嵌入式系统到超级电脑的大型操作系统。许多操作系统制造者对OS的定义也不大一致,例如有些OS集成了图形化使用者界面,而有些OS仅使用文本接口,而将图形界面视为一种非必要的应用程序。
操作系统理论在计算机科学中为历史悠久而又活跃的分支,而操作系统的设计与实现则是软件工业的基础与内核。
类型
操作系统大致可分为6种类型。
①简单操作系统。它是计算机初期所配置的操作系统,如IBM公司的磁盘操作系统DOS/360和微型计算机的操作系统CP/M等。这类操作系统的功能主要是操作命令的执行,文件服务,支持高级程序设计语言编译程序和控制外部设备等。
②分时系统。它支持位于不同终端的多个用户同时使用一台计算机,彼此独立互不干扰,用户感到好像一台计算机全为他所用。
③实时操作系统。它是为实时计算机系统配置的操作系统。其主要特点是资源的分配和调度首先要考虑实时性然后才是效率。此外,实时操作系统应有较强的容错能力。
④网络操作系统。它是为计算机网络配置的操作系统。在其支持下,网络中的各台计算机能互相通信和共享资源。其主要特点是与网络的硬件相结合来完成网络的通信任务。
⑤分布操作系统。它是为分布计算系统配置的操作系统。它在资源管理,通信控制和操作系统的结构等方面都与其他操作系统有较大的区别。由于分布计算机系统的资源分布于系统的不同计算机上,操作系统对用户的资源需求不能像一般的操作系统那样等待有资源时直接分配的简单做法而是要在系统的各台计算机上搜索,找到所需资源后才可进行分配。对于有些资源,如具有多个副本的文件,还必须考虑一致性。所谓一致性是指若干个用户对同一个文件所同时读出的数据是一致的。为了保证一致性,操作系统须控制文件的读、写、操作,使得多个用户可同时读一个文件,而任一时刻最多只能有一个用户在修改文件。分布操作系统的通信功能类似于网络操作系统。由于分布计算机系统不像网络分布得很广,同时分布操作系统还要支持并行处理,因此它提供的通信机制和网络操作系统提供的有所不同,它要求通信速度高。分布操作系统的结构也不同于其他操作系统,它分布于系统的各台计算机上,能并行地处理用户的各种需求,有较强的容错能力。⑥智能操作系统(见智能软件)。
功能
操作系统的主要功能是资源管理,程序控制和人机交互等。计算机系统的资源可分为设备资源和信息资源两大类。设备资源指的是组成计算机的硬件设备,如中央处理器,主存储器,磁盘存储器,打印机,磁带存储器,显示器,键盘输入设备和鼠标等。信息资源指的是存放于计算机内的各种数据,如文件,程序库,知识库,系统软件和应用软件等。
资源管理
系统的设备资源和信息资源都是操作系统根据用户需求按一定的策略来进行分配和调度的。操作系统的存储管理就负责把内存单元分配给需要内存的程序以便让它执行,在程序执行结束后将它占用的内存单元收回以便再使用。对于提供虚拟存储的计算机系统,操作系统还要与硬件配合做好页面调度工作,根据执行程序的要求分配页面,在执行中将页面调入和调出内存以及回收页面等。
处理器管理或称处理器调度,是操作系统资源管理功能的另一个重要内容。在一个允许多道程序同时执行的系统里,操作系统会根据一定的策略将处理器交替地分配给系统内等待运行的程序。一道等待运行的程序只有在获得了处理器后才能运行。一道程序在运行中若遇到某个事件,例如启动外部设备而暂时不能继续运行下去,或一个外部事件的发生等等,操作系统就要来处理相应的事件,然后将处理器重新分配。
操作系统的设备管理功能主要是分配和回收外部设备以及控制外部设备按用户程序的要求进行操作等。对于非存储型外部设备,如打印机、显示器等,它们可以直接作为一个设备分配给一个用户程序,在使用完毕后回收以便给另一个需求的用户使用。对于存储型的外部设备,如磁盘、磁带等,则是提供存储空间给用户,用来存放文件和数据。存储性外部设备的管理与信息管理是密切结合的。
信息管理是操作系统的一个重要的功能,主要是向用户提供一个文件系统。一般说,一个文件系统向用户提供创建文件,撤销文件,读写文件,打开和关闭文件等功能。有了文件系统后,用户可按文件名存取数据而无需知道这些数据存放在哪里。这种做法不仅便于用户使用而且还有利于用户共享公共数据。此外,由于文件建立时允许创建者规定使用权限,这就可以保证数据的安全性。
程序控制
一个用户程序的执行自始至终是在操作系统控制下进行的。一个用户将他要解决的问题用某一种程序设计语言编写了一个程序后就将该程序连同对它执行的要求输入到计算机内,操作系统就根据要求控制这个用户程序的执行直到结束。操作系统控制用户的执行主要有以下一些内容:调入相应的编译程序,将用某种程序设计语言编写的源程序编译成计算机可执行的目标程序,分配内存储等资源将程序调入内存并启动,按用户指定的要求处理执行中出现的各种事件以及与操作员联系请示有关意外事件的处理等。
人机交互
操作系统的人机交互功能是决定计算机系统“友善性”的一个重要因素。人机交互功能主要靠可输入输出的外部设备和相应的软件来完成。可供人机交互使用的设备主要有键盘显示、鼠标、各种模式识别设备等。与这些设备相应的软件就是操作系统提供人机交互功能的部分。人机交互部分的主要作用是控制有关设备的运行和理解并执行通过人机交互设备传来的有关的各种命令和要求。早期的人机交互设施是键盘显示器。操作员通过键盘打入命令,操作系统接到命令后立即执行并将结果通过显示器显示。打入的命令可以有不同方式,但每一条命令的解释是清楚的,唯一的。随着计算机技术的发展,操作命令也越来越多,功能也越来越强。随着模式识别,如语音识别、汉字识别等输入设备的发展,操作员和计算机在类似于自然语言或受限制的自然语言这一级上进行交互成为可能。此外,通过图形进行人机交互也吸引着人们去进行研究。这些人机交互可称为智能化的人机交互。这方面的研究工作正在积极开展。
操作系统大全
早期操作系统(专利保护)
TRS-DOS,ROM OS's
TI99-4
Commodore PET,64,和 VIC-20,
第一套IBM-PC
苹果电脑
Sinclair Micro和QnX等
非Unix商业操作系统
CPM操作系统
MP/M-80
UCSD P-system
Mini-FLEX
SSB-DOS
CP/M-86
DR-DOS
FreeDOS
MS-DOS
PC-DOS
Mach 由卡纳尼基梅隆大学研究
L4微内核 第二代微内核
CHORUS
Choices
Multics
OS-9
NSJ
Netware:一种网络服务器操作系统
Unix及类似系统
A/UX(Apple UNIX)
Unix
微软Xenix
ChorusOS
Cromix
UNIflex
OS-9
IBM的AIX
BSD
FreeBSD
NetBSD
OpenBSD
DragonFly BSD
PC-BSD
Digital UNIX,即之后康柏Tru64
DNIX
HP的HP-UX
GNU/Hurd
SGI的IRIX
Inferno
Linux(或称GNU/Linux)
Mac OS X
MenuetOS
Minix
OSF/1
Plan9
SCO的SCO UNIX
Sun的SunOS,即之后的Solaris
System V
Ultrix
UniCOS
麒麟操作系统(Kylin),由国防科技大学、中软公司、联想公司、浪潮公司和民族恒星公司五家单位合作研制的服务器操作系统
OS/390
z/OS
Syllable
其他
Acorn
Arthur
ARX
RISC OS
RISCiX
Amiga
AmigaOS
Atari ST
TOS
MultiTOS
MiNT
苹果电脑(Apple/Macintosh)
Apple DOS
ProDOS
Mac OS
Mac OS X
pink OS
BeOS
A/UX
Be
BeOS
BeIA
Digital/康柏(Compaq)
AIS
OS-8
RSTS/E
RSX-11
RT-11
TOPS-10
TOPS-20
VMS(后更名为OpenVMS)
IBM
OS/2
AIX
OS/400
OS/390
VM/CMS
DOS/VSE
VSE/SP
VSE/ESA
OS/360
MFT
MVT
SVS
MVS
TPF
ALCS
z/OS
PC-DOS
pink OS
微软(Microsoft)
MS-DOS
Xenix
Microsoft Bob
基于MS-DOS操作系统的Windows
Windows 1.0
Windows 2.0
Windows 3.1
Windows 95
Windows 98
Windows ME
Windows NT
Windows NT 3.5
Windows NT 4
Windows 2000
Windows XP
Windows XP SP1
Windows XP SP2
Windows XP SP3
Windows XP Media Center Edition
Windows XP Home Edition
Windows XP Tablet PC Edition
Windows XP Professional
Windows XP Professional x64 Edition
Windows Server 2003
Windows Server 2003 64-bit Edition
Windows Vista
Windows Vista SP1
Windows Vista Home Basic
Windows Vista Home Premium
Windows Vista Business
Windows Vista Ultimate
Windows Vista Enterprise
Windows Vista Starter
Novell
NetWare
Unixware
SUSE Linux
NeXT
NEXTSTEP(即之后的Mac OS X)
Plan 9
Inferno
Prime Computer
Primos
西门子
BS2000 - 用于西门子公司的大型主机。
SINIX(也称Reliant UNIX) - 用于西门子公司的UNIX电脑系统。
个人电子助理(PDA)操作系统
Palm OS
Pocket PC
EPOC
Microsoft Windows CE
Linux
智能手机操作系统
Windows Mobile系列
Embedded Linux由Montavista创造,在Motorola's A760,E680等机型上使用
Mobilinux由Montavista创造
Symbian OS系列
其他操作系统
动态可扩展操作系统
MIT的Exo Kernel
华盛顿大学的 SPIN
哈佛大学的 VINO
illinois大学的Choices
ReactOS
历史
各类平台上操作系统的功能演化综观电脑之历史,操作系统与电脑硬件的发展息息相关。操作系统之本意原为提供简单的工作排序能力,后为辅助更新更复杂的硬件设施而渐渐演化。从最早的批次模式开始,分时机制也随之出现,在多处理器时代来临时,操作系统也随之添加多处理器协调功能,甚至是分布式系统的协调功能。其他方面的演变也类似于此。另一方面,在个人电脑上,个人电脑之操作系统因袭大型电脑的成长之路,在硬件越来越复杂、强大时,也逐步实践以往只有大型电脑才有的功能。
总而言之,操作系统的历史就是一部解决电脑系统需求与问题的历史。
1980年代前
Maurice Vincent Wilkes,微程序的创建者
IBM System/360,大型主机的经典之作第一部电脑并没有操作系统。这是由于早期电脑的建立方式(如同建造机械算盘)与效能不足以执行如此程序。但在1947年发明了晶体管,以及莫里斯·威尔克斯(Maurice V. Wilkes)发明的微程序方法,使得电脑不再是机械设备,而是电子产品。系统管理工具以及简化硬件操作流程的程序很快就出现了,且成为操作系统的滥觞。到了1960年代早期,商用电脑制造商制造了批次处理系统,此系统可将工作的建置、调度以及执行序列化。此时,厂商为每一台不同型号的电脑创造不同的操作系统,因此为某电脑而写的程序无法移植到其他电脑上执行,即使是同型号的电脑也不行。
到了1964年,IBM System/360推出了一系列用途与价位都不同的大型电脑,而它们都共享代号为OS/360的操作系统(而非每种产品都用量身订做的操作系统)。让单一操作系统适用于整个系列的产品是System/360成功的关键,且实际上IBM目前的大型系统便是此系统的后裔;为System/360所写的应用程序依然可以在现代的IBM机器上执行!
OS/360也包含另一个优点:永久贮存设备—硬盘驱动器的面世(IBM称为DASD(Direct access storage device))。另一个关键是分时概念的建立:将大型电脑珍贵的时间资源适当分配到所有使用者身上。分时也让使用者有独占整部机器的感觉;而Multics的分时系统是此时众多新操作系统中实践此观念最成功的。
1963年,奇异公司与贝尔实验室合作以PL/I语言建立的Multics[1],是激发1970年代众多操作系统建立的灵感来源,尤其是由AT&T贝尔实验室的丹尼斯·里奇与肯·汤普逊所建立的Unix系统,为了实践平台移植能力,此操作系统在1969年由C语言重写;另一个广为市场采用的小型电脑操作系统是VMS。
80年代
第一代微型计算机并不像大型电脑或小型电脑,没有装设操作系统的需求或能力;它们只需要最基本的操作系统,通常这种操作系统都是从ROM读取的,此种程序被称为监视程序(Monitor)。1980年代,家用电脑开始普及。通常此时的电脑拥有8-bit处理器加上64KB内存、屏幕、键盘以及低音质喇叭。而80年代早期最著名的套装电脑为使用微处理器6510(6502芯片特别版)的Commodore C64。此电脑没有操作系统,而是以一8KB只读内存BIOS初始化彩色屏幕、键盘以及软驱和打印机。它可用8KB只读内存BASIC语言来直接操作BIOS,并依此撰写程序,大部分是游戏。此BASIC语言的解释器勉强可算是此电脑的操作系统,当然就没有内核或软硬件保护机制了。此电脑上的游戏大多跳过BIOS层次,直接控制硬件。
家用电脑C64的抽象架构
简单应用程序 机器语言
(游戏直接操作)
8k BASIC ROM
8k ROM-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年微软公司利用骗术[2]取得了与IBM的合约,并且收购了一家公司出产的操作系统,在将之修改后以MS-DOS的名义出品,此操作系统可以直接让程序操作BIOS与文件系统。到了Intel-80286处理器的时代,才开始实作基本的储存设备保护措施。MS-DOS的架构并不足以满足所有需求,因为它同时只能执行最多一个程序(如果想要同时执进程式,只能使用TSR的方式来跳过OS而由程序自行处理多任务的部份),且没有任何内存保护措施。对驱动程序的支持也不够完整,因此导致诸如音效设备必须由程序自行设置的状况,造成不兼容的情况所在多有。某些操作的效能也是可怕地糟糕。许多应用程序因此跳过MS-DOS的服务程序,而直接存取硬件设备以取得较好的效能。虽然如此,但MS-DOS还是变成了IBM PC上面最常用的操作系统(IBM自己也有推出DOS,称为IBM-DOS或PC-DOS)。MS-DOS的成功使得微软成为地球上最赚钱的公司之一。
MS-DOS在个人电脑上的抽象架构
普通应用程序(Shell script、文本编辑器)
MS-DOS(文件系统)
BIOS(驱动程序)
硬件(中央处理器、储存设备等)
而1980年代另一个崛起的操作系统异数是Mac OS,此操作系统紧紧与麦金塔电脑捆绑在一起。此时一位全录伯拉图实验室的员工Dominik Hagen访问了苹果电脑的史蒂夫·乔布斯,并且向他展示了此时全录发展的图形化使用者界面。苹果电脑惊为天人,并打算向全录购买此技术,但因伯拉图实验室并非商业单位而是研究单位,因此全录回绝了这项买卖。在此之后苹果一致认为个人电脑的未来必定属于图形使用者界面,因此也开始发展自己的图形化操作系统。现今许多我们认为是基本要件的图形化接口技术与规则,都是由苹果电脑打下的基础(例如下拉式菜单、桌面图标、拖曳式操作与双点击等)。但正确来说,图形化使用者界面的确是全录创始的。
90年代
Apple I电脑,苹果电脑的第一代产品。延续1980年代的竞争,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)。
几乎完整的Linux架构图
使用者
模式 应用程序(sh、vi、OpenOffice.org等)
复杂函数库(KDE、glib 等)
简单函数库(opendbm、sin 等)
C函数库(open、fopen、socket、exec、calloc 等)
内核
模式 系统中断、调用、错误等软硬件消息
内核(驱动程序、进程、网络、内存管理等)
硬件(处理器、内存、各种设备)
另一方面,微软对于更强力的操作系统呼声的回应便是Windows NT于1999年的面世。
1983年开始微软就想要为MS-DOS建构一个图形化的操作系统应用程序,称为Windows(有人说这是比尔盖兹被苹果的Lisa电脑上市所刺激)。一开始Windows并不是一个操作系统,只是一个应用程序,其背景还是纯MS-DOS系统,这是因为当时的BIOS设计以及MS-DOS的架构不甚良好之故。在1990年代初,微软与IBM的合作破裂,微软从OS/2(早期为命令行模式,后来成为一个很成功但是曲高和寡的图形化操作系统)项目中抽身,并且在1993年7月27日推出Windows 3.1,一个以OS/2为基础的图形化操作系统。并在1995年8月15日推出Windows 95。直到这时,Windows系统依然是建立在MS-DOS的基础上,因此消费者莫不期待微软在2000年所推出的Windows 2000上,因为它才算是第一个脱离MS-DOS基础的图形化操作系统。
下面的表格为Windows NT系统的架构:在硬件阶层之上,有一个由微内核直接接触的硬件抽象层(HAL),而不同的驱动程序以模块的形式挂载在内核上执行。因此微内核可以使用诸如输入输出、文件系统、网络、信息安全机制与虚拟内存等功能。而系统服务层提供所有统一规格的函数调用库,可以统一所有副系统的实作方法。例如尽管POSIX与OS/2对于同一件服务的名称与调用方法差异甚大,它们一样可以无碍地实作于系统服务层上。在系统服务层之上的副系统,全都是使用者模式,因此可以避免使用者程序执行非法行动。
简化版本的Windows NT抽象架构
使用者
模式 OS/2
应用程序 Win32
应用程序 DOS
程序 Win16
应用程序 POSIX
应用程序
其他DLL函数库 DOS 系统 Windows 模拟系统
OS/2 副系统 Win32 副系统 POSIX.1 副系统
内核
模式 系统服务层
输入输出管理
文件系统、网络系统 对象管理系统 / 安全管理系统 / 进程管理 / 对象间通讯管理 / 进程间通讯管理 / 虚拟内存管理
微内核 窗口管理程序
驱动程序 硬件抽象层(HAL) 图形驱动
硬件(处理器、内存、外部设备等)
副系统架构第一个实作的副系统群当然是以前的微软系统。DOS副系统将每个DOS程序当成一进程执行,并以个别独立的MS-DOS虚拟机器承载其运行环境。另外一个是Windows 3.1模拟系统,实际上是在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 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都有。
个人电脑
个人电脑市场目前分为两大阵营,此两种架构分别有支持的操作系统:
IBM兼容PC - 微软 Windows, Mac OS X,Unix 家族的OS以及Linux 家族。
Apple Macintosh - Mac OS (一个Unix分支OS,属 BSD 族系,Darwin),Windows (x86版本), Linux 与 BSD
大型电脑
最早的操作系统是针对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变种。
嵌入式系统
嵌入式系统使用非常广泛的操作系统(如VxWorks、eCos、Symbian OS及Palm OS)以及某些功能缩减版本的Linux或者其他操作系统。某些情况下,OS指称的是一个内置了固定应用软件的巨大泛用程序。在许多最简单的嵌入式系统中,所谓的OS就是指其上唯一的应用程序。
类Unix系统
一个在Linux底下执行的客制化KDE桌面系统所谓的类Unix家族指的是一族种类繁多的OS,此族包含了System V、BSD与Linux。由于Unix是The Open Group的注册商标,特指遵守此公司定义的行为的操作系统。而类Unix通常指的是比原先的Unix包含更多特征的OS。
Unix系统可在非常多的处理器架构下执行,在服务器系统上有很高的使用率,例如大专院校或工程应用的工作站。自由软件Unix变种,例如Linux与BSD近来越来越受欢迎,它们也在个人桌面电脑市场上大有斩获,例如Ubuntu系统,但大部分都是电脑高手在使用。
某些Unix变种,例如HP的HP-UX以及IBM的AIX仅设计用于自家的硬件产品上,而SUN的Solaris可安装于自家的硬件或x86电脑上。苹果电脑的Mac OS X是一个从NeXTSTEP、Mach以及FreeBSD共同派生出来的微内核BSD系统,此OS取代了苹果电脑早期非Unix家族的Mac OS。经历数年的披荆斩棘,自由开源的Unix系统逐渐蚕食鲸吞以往专利软件的专业领域,例如以往电脑动画运算巨擘──SGI的IRIX系统已被Linux家族及Plan 9[3]丛集所取代。
微软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操作系统在世界范围内占据了桌面操作系统90%的市场。[4]
Windows系统也被用在低阶和中阶服务器上,并且支持网页服务的数据库服务等一些功能。最近微软花费了很大研究与开发的经费用于使Windows拥有能运行企业的大型程序的能力。
WindowsXP在2001年10月25日发布,2004年8月24日发布最新的升级包WindowsXP Service Pack 2。 微软最新的操作系统 Windows Vista(开发代码为Longhorn)于2007年1月30日发售[5]。Windwos Vista增加了许多功能,尤其是系统的安全性和网络管理功能。Windows Vista拥有界面华丽的Aero Glass。
苹果Mac OS
苹果Mac OS系列操作系统是苹果公司 (原称苹果电脑)给苹果个人电脑系列设计的OS。
其他
大型主机以及嵌入式操作系统均与Unix或Windows家族关系不大,除了Windows CE、Windows NT Embedded 4.0及Windows XP Embedded是Windows的血亲产品,以及数种*BSD和嵌入式Linux包为例外。
少数较旧的OS今日依然在一些需要稳定性的市场中活跃,例如IBM的OS/2[6]BeOS以及XTS-400。
在达康时代狂潮过后,如AmigaOS与RISC OS等少数人使用的OS依然持续建立,以满足狂热的爱好者社群与特殊专业使用者。
未来
研究与建立未来的操作系统依旧进行著。操作系统朝提供更省电、网络化、华丽的使用者界面的方向来改进。Linux及一些类UNIX OS正努力让自己成为个人用户舒适的环境。GNU Hurd是一个企图完全兼容Unix并加强许多功能的微内核架构。微软Singularity是一个奠基于.Net并以建立较佳内存保护机制为目目标研究计划。
历史列表
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年
NeXTSTEP (1.0)
RISC OS
SCO Unix (第三版)
1990年
Amiga OS 2.0
BeOS (v1)
OSF/1
Microsoft Windows 3.0
1991年
Linux
1992年
386BSD 0.1
Amiga OS 3.0
Solaris 2.0 (SunOS 4.x的继承者,以SVR4为基础,而非BSD)
Microsoft Windows 3.1
1993年
Plan 9 (第一版)
FreeBSD
NetBSD
Microsoft Windows NT 3.1 (第一版NT)
1995年
Digital UNIX (aka Tru64)
OpenBSD
OS/390
Microsoft Windows 95
1996年
Windows NT 4.0
1997年
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年
AtheOS
Mac OS 9
MorphOS
Microsoft Windows 2000
Microsoft Windows Me
2001年
Amiga OS 4.0 (2001年5月)
Mac OS X 10.1
Microsoft Windows XP
z/OS
2002年
Microsoft Windows XP 64-bit Edition
Windows XP Tablet PC Edition
Windows XP Media Center Edition
Syllable
Mac OS X 10.2
2003年
Microsoft Windows Server 2003 (2003年3月28日)
Microsoft Windows XP 64-bit Edition - 以Microsoft Windows Server 2003为基础,同一天释出。
Mac OS X 10.3
2004年
Microsoft Windows XP Media Center Edition
2005年
Microsoft Windows XP Professional x64 Edition
Mac OS X 10.4
2006年
Microsoft Windows Vista
2007年
Mac OS X 10.5
功能
操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。以现代观点而言,一个标准个人电脑的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尚有担负起进程间通讯(IPC)、进程异常终止处理以及死结(Dead lock)侦测及处理等较为艰深的问题。
在进程之下尚有线程的问题,但是大部分的OS并不会处理线程所遭遇的问题,通常OS仅止于提供一组API让使用者自行操作或通过虚拟机器的管理机制控制线程之间的交互。
内存管理
根据帕金森定律:“你给程序再多内存,程序也会想尽办法耗光”,因此程序设计师通常希望系统给他无限量且无限快的内存。大部分的现代电脑内存架构都是阶层式的,最快且数量最少的寄存器为首,然后是高速缓存、内存以及最慢的磁盘储存设备。而OS的内存管理提供寻找可用的记忆空间、配置与释放记忆空间以及交换内存和低速储存设备的内含物……等功能。此类又被称做虚拟内存管理的功能大幅增加每个进程可获得的记忆空间(通常是4GB,即使实际上RAM的数量远少于这数目)。然而这也带来了微幅降低执行效率的缺点,严重时甚至也会导致进程崩溃。
内存管理的另一个重点活动就是借由CPU的帮助来管理虚拟位置。如果同时有许多进程储存于记忆设备上,操作系统必须防止它们互相干扰对方的内存内容(除非通过某些协议在可控制的范围下操作,并限制可存取的内存范围)。分割内存空间可以达成目标。每个进程只会看到整个内存空间(从0到内存空间的最大上限)被配置给它自己(当然,有些位置被OS保留而禁止存取)。CPU事先存了几个表以比对虚拟位置与实际内存位置,这种方法称为分页(paging)配置。
借由对每个进程产生分开独立的位置空间,OS也可以轻易地一次释放某进程所占据的所有内存。如果这个进程不释放内存,OS可以退出进程并将内存自动释放。
磁盘与文件系统
所谓的文件系统,通常指称管理磁盘数据的系统,可将数据以目录或文件的型式储存。每个文件系统都有自己的特殊格式与功能,例如日志管理或不需磁盘重整。
OS拥有许多种内置文件系统。例如Linux拥有非常广泛的内置文件系统,如ext2、ext3、ReiserFS、Reiser4、GFS、GFS2、OCFS、OCFS2、NILFS与Google文件系统。Linux也支持非本地文件系统,例如XFS、JFS、FAT家族与NTFS。另一方面,Windows能支持的文件系统只有FAT12、FAT16、FAT32与NTFS。NTFS系统是Windows上最可靠与最有效率的文件系统。其他的FAT家族都比NTFS老旧,且对于文件长度与分割磁盘能力都有很大限制,因此造成很多问题。而UNIX的文件系统多半是UFS,而UNIX中的一个分支Solaris最近则开始支持一种新式的ZFS
大部份上述的文件系统都有两种建置方法。系统可以以日志式(Journaling file system)或非日志式建置。日志式文件系统可以以较安全的手法执行系统回复。如果一个没有日志式建置的文件系统遇上突然的系统崩溃,导致数据建立在一半时停顿,则此系统需要特殊的文件系统检查工具才能撤消;日志式则可自动回复。微软的NTFS与Linux的ext3、reiserFS与JFS都是日志式文件系统。
每个文件系统都实作相似的目录/子目录架构,但在相似之下也有许多不同点。微软使用“\”符号以建立目录/子目录关系,且文件名称忽略其大小写差异;UNIX系统则是以“/”建立目录架构,且文件名称大小写有差异。
网络
许多现代的OS都具备操作主流网络通讯协议TCP/IP的能力。也就是说这样的操作系统可以进入网络世界,并且与其他系统分享诸如文件、打印机与扫描器等资源。
许多OS也支持多个过去网络启蒙时代的各路网络通讯协议,例如IBM建立的SNA、DEC在它所生产的系统所设置的DECnet架构与微软为Windows制作的特殊通讯协议。还有许多为了特殊功能而研发的通讯协议,例如可以在网络上提供文件存取功能的NFS系统。现今大量用于影音流(Streaming media)及游戏消息传送的UDP协议等。
安全
大多数OS都含有某种程度的信息安全机制。信息安全机制主要基于两大理念:
OS提供外界直接或间接存取数种资源的管道,例如本地端磁盘机的文件、受保护的特权系统调用(System call)、使用者的隐私数据与系统执行的程序所提供的服务。
OS有能力认证(Authorization)资源存取的请求。允许通过认证的请求并拒绝无法通过的非法请求,并将适当的权力授权(Authentication)给此请求。有些系统的认证机制仅简略地把资源分为特权或非特权,且每个请求都有独特的身份辨识号码,例如使用者名称。资源请求通常分成两大种类:
内部来源:通常是一个正在执行的程序发出的资源请求。在某些系统上,一个程序一旦可执行就可做任何事情(例如DOS时代的病毒),但通常OS会给程序一个识别代号,并且在此程序发出请求时,检查其代号与所需资源的存取权限关系。
外部来源:从非本地端电脑而来的资源请求,例如远程登入本机电脑或某些网络连接请求(FTP或HTTP)。为了识别这些外部请求,系统也许会对此请求提出认证要求。通常是请求输入使用者名称以及相对应的密码。系统有时也会应用诸如磁卡或生物识别数据的它种认证方法。在某些例子,例如网络通讯上,通常不需通过认证即可存取资源(例如匿名存取的FTP服务器或P2P服务)。
除了允许/拒绝形式的安全机制,一个高安全等级的系统也会提供记录选项,允许记录各种请求对资源存取的行为(例如“谁曾经读了这个文件?”)。
肇因于军方与商业组织将敏感数据记录在电脑上,安全机制在OS历史上是一个被长久关注与讨论的问题。美国国防部(DoD)便创立了《可信赖之计算机系统评鉴程序》(TCSEC),此手册确立了评鉴安全机制成效的基本原则。这对OS作者来说非常重要,因为TCSEC是用于评鉴、分类与选拔出用于处理、储存与获取敏感或机密数据的电脑系统的标准程序。
内部信息安全
内部信息安全可视为防止正在执行的程序任意存取系统资源的手段。大多OS让普通程序可直接操作电脑的CPU,所以产生了一些问题,例如怎样把可如OS一样处理事务、执行同样特殊指令的程序强迫停止,毕竟在此情境下,OS也只是另一个平起平坐的程序。为通用OS所生产的CPU通常于硬件层级上实践了一定程度的特殊指令保护概念。通常特权层级较低的程序想要执行某些特殊指令时会被阻断,例如直接存取像是硬盘之类的外部设备。因此,程序必须得经由询问OS,让OS执行特殊指令来存取磁盘。因此OS就有机会检查此程序的识别身份,并依此接受或拒绝它的请求。
在不支持特殊指令架构的硬件上,另一个也是唯一的保护方法,则是OS并不直接利用CPU执行使用者的程序,而是借由模拟一个CPU或提供一p-Code系统(伪代码执行机),像是Java一样让程序在虚拟机器上执行。
内部安全机制在多使用者电脑上特别重要:它允许每个系统使用者拥有自己个人的文件与目录,且其他使用者不能任意存取或删除。因为任何程序都可能绕过OS的监控,更有可能绕过侧录程序的监控,拥有强制力的内部安全机制在侧录启动时也非常重要。
外部信息安全
通常一个操作系统会为其他网络上的电脑或使用者提供(主持)各种服务。这些服务通常借由端口或OS网络地址后的数字存取点提供。通常此服务包括提供文件共享(NTFS)、打印共享、电子邮件、网页服务与文件传输协议(FTP)。 外部信息安全的最前线,是诸如防火墙等的硬件设备。在OS内部也常设置许多种类的软件防火墙。软件防火墙可设置接受或拒绝在OS上执行的服务与外界的连接。因此任何人都可以安装并执行某些不安全的网络服务,例如Telnet或FTP,并且设置除了某些自用通道之外阻挡其他所有连接,以达成防赌不良连接的机制。
使用者界面
今日大部分的OS都包含图形化使用者界面。有几类较旧的OS将图形化使用者界面与内核紧密结合,例如最早的Windows与Mac OS实作产品。此种手法可提供较快速的图形回应能力,且实作时不需切割模块因而较为省工,但是会有强烈副作用,例如图形系统崩溃将导致整个系统崩溃,例如死亡蓝屏幕。许多近代的OS已模块化,将图形界面的副系统与内核分开(已知Linux与Mac OS X原先就是如此设计,而某些扩充版本的Windows终于也采用此手法)。
许多OS允许使用者安装或创造任何他们喜欢的图形界面[7]。大部分的Unix与Unix派生系统(BSD、Linux与Minix)通常会安装X Window系统配合GNOME或KDE桌面环境。而某些OS就没有这么弹性的图形化使用者界面,例如Windows。这类的OS只能通过外加的程序来改变其图形化使用者界面,甚或根本只能改变诸如菜单风格或颜色配置等部分[来源请求]。
图形化使用者界面与时并进,例如Windows在每次新版本上市时就会将其图形化使用者界面改头换面,而Mac OS的GUI也在Mac OS X上市时出现重大转变。
驱动程序
所谓的驱动程序是指某类设计来与硬件交互的电脑软件。通常是一设计完善的设备交互接口,利用与此硬件连接的电脑汇排流或通讯子系统,提供对此设备下令与接收信息的功能;以及最终目的,将消息提供给OS或应用程序。驱动程序是针对特定硬件与特定OS设计的软件,通常以操作系统内核模块、应用软件包或普通电脑程序的形式在OS内核底下执行,以达到通透顺畅地与硬件交互的效果,且提供硬件在处理异步的时间依赖性接口(asynchronous time-dependent hardware interface)时所需的中断处理程序(Interrupt handler)。
设计驱动程序的主要目的在于操作抽象化,任何硬件模块,即使是同一类的设备,在硬件设计面上也有巨大差异。厂商推出的较新模块通常更可靠更有效率,控制方法也会有所不同。电脑与其OS每每不能预期那些现有与新设备的变异之处,因此无法知道其操作方法。为解决此问题OS通常会主动制订每种设备该有的操作方式,而驱动程序功能则是将那些OS制订的行为描述,转译为可让设备了解的自定义操作手法。
理论上适合的驱动程序一旦安装,相对应的新设备就可以无误地执行。此新驱动程序可以让此设备完美地切合在OS中,让使用者察觉不到这是OS原本没有的功能。
结构
操作系统理论研究者有时把操作系统分成四大部分:
驱动程序 - 最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。
内核 - 操作系统之最内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能。
支承库 - (亦作“接口库”)是一系列特殊的程序库,它们指责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式。
外围 - 所谓外围,是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。
当然,本节所提出的四部结构观也绝非放之四海皆准。例如,在早期的微软视窗操作系统中,各部分耦合程度很深,难以区分彼此。而在使用外核结构的操作系统中,则根本没有驱动程序的概念。因而,本节的讨论只适用于一般情况,具体特例需具体分析。
操作系统中四大部分的不同布局,也就形成了几种整体结构的分野。常见的结构包括:简单结构、层结构、微内核结构、垂直结构、和虚拟机结构。
分类
操作系统的分类没有一个单一的标准,可以根据工作方式分为批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统等;根据架构可以分为单内核操作系统等;根据运行的环境,可以分为桌面操作系统,嵌入式操作系统等;根据指令的长度分为8bit, 16bit, 32bit, 64bit的操作系统。
内核结构
内核是操作系统最内核最基础的构件,因而,内核结构往往对操作系统的外部特性以及应用领域有着一定程度的影响。尽管随着理论和实践的不断演进,操作系统高层特性与内核结构之间的耦合有日趋缩小之势,但习惯上,内核结构仍然是操作系统分类之常用标准。
内核的结构可以分为单内核、微内核、超微内核、以及外核等。
单内核结构是操作系统中各内核部件杂然混居的形态,该结构于1960年代(亦有1950年代初之说,尚存争议),历史最长,是操作系统内核与外围分离时的最初形态。
微内核结构是1980年代产生出来的较新的内核结构,强调结构性部件与功能性部件的分离。20世纪末,基于微内核结构,理论界中又发展出了超微内核与外内核等多种结构。尽管自1980年代起,大部分理论研究都集中在以微内核为首的“新兴”结构之上,然而,在应用领域之中,以单内核结构为基础的操作系统却一直占据着主导地位。
在众多常用操作系统之中,除了QNX和基于Mach的UNIX等个别系统外,几乎全部采用单内核结构,例如大部分的Unix、Linux,以及Windows(微软声称Windows NT是基于改良的微内核架构的,尽管理论界对此存有异议)。 微内核和超微内核结构主要用于研究性操作系统,还有一些嵌入式系统使用外核。
基于单内核的操作系统通常有着较长的历史渊源。例如,绝大部分UNIX的家族史都可上溯至1960年代。该类操作系统多数有着相对古老的设计和实现(例如某些UNIX中存在着大量1970年代、1980年代的代码)。另外,往往在性能方面略优于同一应用领域中采用其他内核结构的操作系统(但通常认为此种性能优势不能完全归功于单内核结构)。
通用与专用、嵌入式
通用操作系统是面向一般没有特定应用需求的操作系统。由于没有特定的应用需求,通用操作系统为了适应更广泛的应用,需要支持更多的硬件与软件,需要针对所有的用户体验,对系统进行更新。通用操作系统是一个工程量繁重的操作系统。
实时与非实时
“实时操作系统”(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标准)。
操作系统(英语;Operating System,简称OS)是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。目前微机上常见的操作系统有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。但所有的操作系统具有并发性、共享性、虚拟性和不确定性四个基本特征。
操作系统的型态非常多样,不同机器安装的OS可从简单到复杂,可从手机的嵌入式系统到超级电脑的大型操作系统。许多操作系统制造者对OS的定义也不大一致,例如有些OS集成了图形化使用者界面,而有些OS仅使用文本接口,而将图形界面视为一种非必要的应用程序。
操作系统理论在计算机科学中为历史悠久而又活跃的分支,而操作系统的设计与实现则是软件工业的基础与内核。
类型
操作系统大致可分为6种类型。
①简单操作系统。它是计算机初期所配置的操作系统,如IBM公司的磁盘操作系统DOS/360和微型计算机的操作系统CP/M等。这类操作系统的功能主要是操作命令的执行,文件服务,支持高级程序设计语言编译程序和控制外部设备等。
②分时系统。它支持位于不同终端的多个用户同时使用一台计算机,彼此独立互不干扰,用户感到好像一台计算机全为他所用。
③实时操作系统。它是为实时计算机系统配置的操作系统。其主要特点是资源的分配和调度首先要考虑实时性然后才是效率。此外,实时操作系统应有较强的容错能力。
④网络操作系统。它是为计算机网络配置的操作系统。在其支持下,网络中的各台计算机能互相通信和共享资源。其主要特点是与网络的硬件相结合来完成网络的通信任务。
⑤分布操作系统。它是为分布计算系统配置的操作系统。它在资源管理,通信控制和操作系统的结构等方面都与其他操作系统有较大的区别。由于分布计算机系统的资源分布于系统的不同计算机上,操作系统对用户的资源需求不能像一般的操作系统那样等待有资源时直接分配的简单做法而是要在系统的各台计算机上搜索,找到所需资源后才可进行分配。对于有些资源,如具有多个副本的文件,还必须考虑一致性。所谓一致性是指若干个用户对同一个文件所同时读出的数据是一致的。为了保证一致性,操作系统须控制文件的读、写、操作,使得多个用户可同时读一个文件,而任一时刻最多只能有一个用户在修改文件。分布操作系统的通信功能类似于网络操作系统。由于分布计算机系统不像网络分布得很广,同时分布操作系统还要支持并行处理,因此它提供的通信机制和网络操作系统提供的有所不同,它要求通信速度高。分布操作系统的结构也不同于其他操作系统,它分布于系统的各台计算机上,能并行地处理用户的各种需求,有较强的容错能力。⑥智能操作系统(见智能软件)。
功能
操作系统的主要功能是资源管理,程序控制和人机交互等。计算机系统的资源可分为设备资源和信息资源两大类。设备资源指的是组成计算机的硬件设备,如中央处理器,主存储器,磁盘存储器,打印机,磁带存储器,显示器,键盘输入设备和鼠标等。信息资源指的是存放于计算机内的各种数据,如文件,程序库,知识库,系统软件和应用软件等。
资源管理
系统的设备资源和信息资源都是操作系统根据用户需求按一定的策略来进行分配和调度的。操作系统的存储管理就负责把内存单元分配给需要内存的程序以便让它执行,在程序执行结束后将它占用的内存单元收回以便再使用。对于提供虚拟存储的计算机系统,操作系统还要与硬件配合做好页面调度工作,根据执行程序的要求分配页面,在执行中将页面调入和调出内存以及回收页面等。
处理器管理或称处理器调度,是操作系统资源管理功能的另一个重要内容。在一个允许多道程序同时执行的系统里,操作系统会根据一定的策略将处理器交替地分配给系统内等待运行的程序。一道等待运行的程序只有在获得了处理器后才能运行。一道程序在运行中若遇到某个事件,例如启动外部设备而暂时不能继续运行下去,或一个外部事件的发生等等,操作系统就要来处理相应的事件,然后将处理器重新分配。
操作系统的设备管理功能主要是分配和回收外部设备以及控制外部设备按用户程序的要求进行操作等。对于非存储型外部设备,如打印机、显示器等,它们可以直接作为一个设备分配给一个用户程序,在使用完毕后回收以便给另一个需求的用户使用。对于存储型的外部设备,如磁盘、磁带等,则是提供存储空间给用户,用来存放文件和数据。存储性外部设备的管理与信息管理是密切结合的。
信息管理是操作系统的一个重要的功能,主要是向用户提供一个文件系统。一般说,一个文件系统向用户提供创建文件,撤销文件,读写文件,打开和关闭文件等功能。有了文件系统后,用户可按文件名存取数据而无需知道这些数据存放在哪里。这种做法不仅便于用户使用而且还有利于用户共享公共数据。此外,由于文件建立时允许创建者规定使用权限,这就可以保证数据的安全性。
程序控制
一个用户程序的执行自始至终是在操作系统控制下进行的。一个用户将他要解决的问题用某一种程序设计语言编写了一个程序后就将该程序连同对它执行的要求输入到计算机内,操作系统就根据要求控制这个用户程序的执行直到结束。操作系统控制用户的执行主要有以下一些内容:调入相应的编译程序,将用某种程序设计语言编写的源程序编译成计算机可执行的目标程序,分配内存储等资源将程序调入内存并启动,按用户指定的要求处理执行中出现的各种事件以及与操作员联系请示有关意外事件的处理等。
人机交互
操作系统的人机交互功能是决定计算机系统“友善性”的一个重要因素。人机交互功能主要靠可输入输出的外部设备和相应的软件来完成。可供人机交互使用的设备主要有键盘显示、鼠标、各种模式识别设备等。与这些设备相应的软件就是操作系统提供人机交互功能的部分。人机交互部分的主要作用是控制有关设备的运行和理解并执行通过人机交互设备传来的有关的各种命令和要求。早期的人机交互设施是键盘显示器。操作员通过键盘打入命令,操作系统接到命令后立即执行并将结果通过显示器显示。打入的命令可以有不同方式,但每一条命令的解释是清楚的,唯一的。随着计算机技术的发展,操作命令也越来越多,功能也越来越强。随着模式识别,如语音识别、汉字识别等输入设备的发展,操作员和计算机在类似于自然语言或受限制的自然语言这一级上进行交互成为可能。此外,通过图形进行人机交互也吸引着人们去进行研究。这些人机交互可称为智能化的人机交互。这方面的研究工作正在积极开展。
操作系统大全
早期操作系统(专利保护)
TRS-DOS,ROM OS's
TI99-4
Commodore PET,64,和 VIC-20,
第一套IBM-PC
苹果电脑
Sinclair Micro和QnX等
非Unix商业操作系统
CPM操作系统
MP/M-80
UCSD P-system
Mini-FLEX
SSB-DOS
CP/M-86
DR-DOS
FreeDOS
MS-DOS
PC-DOS
Mach 由卡纳尼基梅隆大学研究
L4微内核 第二代微内核
CHORUS
Choices
Multics
OS-9
NSJ
Netware:一种网络服务器操作系统
Unix及类似系统
A/UX(Apple UNIX)
Unix
微软Xenix
ChorusOS
Cromix
UNIflex
OS-9
IBM的AIX
BSD
FreeBSD
NetBSD
OpenBSD
DragonFly BSD
PC-BSD
Digital UNIX,即之后康柏Tru64
DNIX
HP的HP-UX
GNU/Hurd
SGI的IRIX
Inferno
Linux(或称GNU/Linux)
Mac OS X
MenuetOS
Minix
OSF/1
Plan9
SCO的SCO UNIX
Sun的SunOS,即之后的Solaris
System V
Ultrix
UniCOS
麒麟操作系统(Kylin),由国防科技大学、中软公司、联想公司、浪潮公司和民族恒星公司五家单位合作研制的服务器操作系统
OS/390
z/OS
Syllable
其他
Acorn
Arthur
ARX
RISC OS
RISCiX
Amiga
AmigaOS
Atari ST
TOS
MultiTOS
MiNT
苹果电脑(Apple/Macintosh)
Apple DOS
ProDOS
Mac OS
Mac OS X
pink OS
BeOS
A/UX
Be
BeOS
BeIA
Digital/康柏(Compaq)
AIS
OS-8
RSTS/E
RSX-11
RT-11
TOPS-10
TOPS-20
VMS(后更名为OpenVMS)
IBM
OS/2
AIX
OS/400
OS/390
VM/CMS
DOS/VSE
VSE/SP
VSE/ESA
OS/360
MFT
MVT
SVS
MVS
TPF
ALCS
z/OS
PC-DOS
pink OS
微软(Microsoft)
MS-DOS
Xenix
Microsoft Bob
基于MS-DOS操作系统的Windows
Windows 1.0
Windows 2.0
Windows 3.1
Windows 95
Windows 98
Windows ME
Windows NT
Windows NT 3.5
Windows NT 4
Windows 2000
Windows XP
Windows XP SP1
Windows XP SP2
Windows XP SP3
Windows XP Media Center Edition
Windows XP Home Edition
Windows XP Tablet PC Edition
Windows XP Professional
Windows XP Professional x64 Edition
Windows Server 2003
Windows Server 2003 64-bit Edition
Windows Vista
Windows Vista SP1
Windows Vista Home Basic
Windows Vista Home Premium
Windows Vista Business
Windows Vista Ultimate
Windows Vista Enterprise
Windows Vista Starter
Novell
NetWare
Unixware
SUSE Linux
NeXT
NEXTSTEP(即之后的Mac OS X)
Plan 9
Inferno
Prime Computer
Primos
西门子
BS2000 - 用于西门子公司的大型主机。
SINIX(也称Reliant UNIX) - 用于西门子公司的UNIX电脑系统。
个人电子助理(PDA)操作系统
Palm OS
Pocket PC
EPOC
Microsoft Windows CE
Linux
智能手机操作系统
Windows Mobile系列
Embedded Linux由Montavista创造,在Motorola's A760,E680等机型上使用
Mobilinux由Montavista创造
Symbian OS系列
其他操作系统
动态可扩展操作系统
MIT的Exo Kernel
华盛顿大学的 SPIN
哈佛大学的 VINO
illinois大学的Choices
ReactOS
历史
各类平台上操作系统的功能演化综观电脑之历史,操作系统与电脑硬件的发展息息相关。操作系统之本意原为提供简单的工作排序能力,后为辅助更新更复杂的硬件设施而渐渐演化。从最早的批次模式开始,分时机制也随之出现,在多处理器时代来临时,操作系统也随之添加多处理器协调功能,甚至是分布式系统的协调功能。其他方面的演变也类似于此。另一方面,在个人电脑上,个人电脑之操作系统因袭大型电脑的成长之路,在硬件越来越复杂、强大时,也逐步实践以往只有大型电脑才有的功能。
总而言之,操作系统的历史就是一部解决电脑系统需求与问题的历史。
1980年代前
Maurice Vincent Wilkes,微程序的创建者
IBM System/360,大型主机的经典之作第一部电脑并没有操作系统。这是由于早期电脑的建立方式(如同建造机械算盘)与效能不足以执行如此程序。但在1947年发明了晶体管,以及莫里斯·威尔克斯(Maurice V. Wilkes)发明的微程序方法,使得电脑不再是机械设备,而是电子产品。系统管理工具以及简化硬件操作流程的程序很快就出现了,且成为操作系统的滥觞。到了1960年代早期,商用电脑制造商制造了批次处理系统,此系统可将工作的建置、调度以及执行序列化。此时,厂商为每一台不同型号的电脑创造不同的操作系统,因此为某电脑而写的程序无法移植到其他电脑上执行,即使是同型号的电脑也不行。
到了1964年,IBM System/360推出了一系列用途与价位都不同的大型电脑,而它们都共享代号为OS/360的操作系统(而非每种产品都用量身订做的操作系统)。让单一操作系统适用于整个系列的产品是System/360成功的关键,且实际上IBM目前的大型系统便是此系统的后裔;为System/360所写的应用程序依然可以在现代的IBM机器上执行!
OS/360也包含另一个优点:永久贮存设备—硬盘驱动器的面世(IBM称为DASD(Direct access storage device))。另一个关键是分时概念的建立:将大型电脑珍贵的时间资源适当分配到所有使用者身上。分时也让使用者有独占整部机器的感觉;而Multics的分时系统是此时众多新操作系统中实践此观念最成功的。
1963年,奇异公司与贝尔实验室合作以PL/I语言建立的Multics[1],是激发1970年代众多操作系统建立的灵感来源,尤其是由AT&T贝尔实验室的丹尼斯·里奇与肯·汤普逊所建立的Unix系统,为了实践平台移植能力,此操作系统在1969年由C语言重写;另一个广为市场采用的小型电脑操作系统是VMS。
80年代
第一代微型计算机并不像大型电脑或小型电脑,没有装设操作系统的需求或能力;它们只需要最基本的操作系统,通常这种操作系统都是从ROM读取的,此种程序被称为监视程序(Monitor)。1980年代,家用电脑开始普及。通常此时的电脑拥有8-bit处理器加上64KB内存、屏幕、键盘以及低音质喇叭。而80年代早期最著名的套装电脑为使用微处理器6510(6502芯片特别版)的Commodore C64。此电脑没有操作系统,而是以一8KB只读内存BIOS初始化彩色屏幕、键盘以及软驱和打印机。它可用8KB只读内存BASIC语言来直接操作BIOS,并依此撰写程序,大部分是游戏。此BASIC语言的解释器勉强可算是此电脑的操作系统,当然就没有内核或软硬件保护机制了。此电脑上的游戏大多跳过BIOS层次,直接控制硬件。
家用电脑C64的抽象架构
简单应用程序 机器语言
(游戏直接操作)
8k BASIC ROM
8k ROM-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年微软公司利用骗术[2]取得了与IBM的合约,并且收购了一家公司出产的操作系统,在将之修改后以MS-DOS的名义出品,此操作系统可以直接让程序操作BIOS与文件系统。到了Intel-80286处理器的时代,才开始实作基本的储存设备保护措施。MS-DOS的架构并不足以满足所有需求,因为它同时只能执行最多一个程序(如果想要同时执进程式,只能使用TSR的方式来跳过OS而由程序自行处理多任务的部份),且没有任何内存保护措施。对驱动程序的支持也不够完整,因此导致诸如音效设备必须由程序自行设置的状况,造成不兼容的情况所在多有。某些操作的效能也是可怕地糟糕。许多应用程序因此跳过MS-DOS的服务程序,而直接存取硬件设备以取得较好的效能。虽然如此,但MS-DOS还是变成了IBM PC上面最常用的操作系统(IBM自己也有推出DOS,称为IBM-DOS或PC-DOS)。MS-DOS的成功使得微软成为地球上最赚钱的公司之一。
MS-DOS在个人电脑上的抽象架构
普通应用程序(Shell script、文本编辑器)
MS-DOS(文件系统)
BIOS(驱动程序)
硬件(中央处理器、储存设备等)
而1980年代另一个崛起的操作系统异数是Mac OS,此操作系统紧紧与麦金塔电脑捆绑在一起。此时一位全录伯拉图实验室的员工Dominik Hagen访问了苹果电脑的史蒂夫·乔布斯,并且向他展示了此时全录发展的图形化使用者界面。苹果电脑惊为天人,并打算向全录购买此技术,但因伯拉图实验室并非商业单位而是研究单位,因此全录回绝了这项买卖。在此之后苹果一致认为个人电脑的未来必定属于图形使用者界面,因此也开始发展自己的图形化操作系统。现今许多我们认为是基本要件的图形化接口技术与规则,都是由苹果电脑打下的基础(例如下拉式菜单、桌面图标、拖曳式操作与双点击等)。但正确来说,图形化使用者界面的确是全录创始的。
90年代
Apple I电脑,苹果电脑的第一代产品。延续1980年代的竞争,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)。
几乎完整的Linux架构图
使用者
模式 应用程序(sh、vi、OpenOffice.org等)
复杂函数库(KDE、glib 等)
简单函数库(opendbm、sin 等)
C函数库(open、fopen、socket、exec、calloc 等)
内核
模式 系统中断、调用、错误等软硬件消息
内核(驱动程序、进程、网络、内存管理等)
硬件(处理器、内存、各种设备)
另一方面,微软对于更强力的操作系统呼声的回应便是Windows NT于1999年的面世。
1983年开始微软就想要为MS-DOS建构一个图形化的操作系统应用程序,称为Windows(有人说这是比尔盖兹被苹果的Lisa电脑上市所刺激)。一开始Windows并不是一个操作系统,只是一个应用程序,其背景还是纯MS-DOS系统,这是因为当时的BIOS设计以及MS-DOS的架构不甚良好之故。在1990年代初,微软与IBM的合作破裂,微软从OS/2(早期为命令行模式,后来成为一个很成功但是曲高和寡的图形化操作系统)项目中抽身,并且在1993年7月27日推出Windows 3.1,一个以OS/2为基础的图形化操作系统。并在1995年8月15日推出Windows 95。直到这时,Windows系统依然是建立在MS-DOS的基础上,因此消费者莫不期待微软在2000年所推出的Windows 2000上,因为它才算是第一个脱离MS-DOS基础的图形化操作系统。
下面的表格为Windows NT系统的架构:在硬件阶层之上,有一个由微内核直接接触的硬件抽象层(HAL),而不同的驱动程序以模块的形式挂载在内核上执行。因此微内核可以使用诸如输入输出、文件系统、网络、信息安全机制与虚拟内存等功能。而系统服务层提供所有统一规格的函数调用库,可以统一所有副系统的实作方法。例如尽管POSIX与OS/2对于同一件服务的名称与调用方法差异甚大,它们一样可以无碍地实作于系统服务层上。在系统服务层之上的副系统,全都是使用者模式,因此可以避免使用者程序执行非法行动。
简化版本的Windows NT抽象架构
使用者
模式 OS/2
应用程序 Win32
应用程序 DOS
程序 Win16
应用程序 POSIX
应用程序
其他DLL函数库 DOS 系统 Windows 模拟系统
OS/2 副系统 Win32 副系统 POSIX.1 副系统
内核
模式 系统服务层
输入输出管理
文件系统、网络系统 对象管理系统 / 安全管理系统 / 进程管理 / 对象间通讯管理 / 进程间通讯管理 / 虚拟内存管理
微内核 窗口管理程序
驱动程序 硬件抽象层(HAL) 图形驱动
硬件(处理器、内存、外部设备等)
副系统架构第一个实作的副系统群当然是以前的微软系统。DOS副系统将每个DOS程序当成一进程执行,并以个别独立的MS-DOS虚拟机器承载其运行环境。另外一个是Windows 3.1模拟系统,实际上是在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 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都有。
个人电脑
个人电脑市场目前分为两大阵营,此两种架构分别有支持的操作系统:
IBM兼容PC - 微软 Windows, Mac OS X,Unix 家族的OS以及Linux 家族。
Apple Macintosh - Mac OS (一个Unix分支OS,属 BSD 族系,Darwin),Windows (x86版本), Linux 与 BSD
大型电脑
最早的操作系统是针对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变种。
嵌入式系统
嵌入式系统使用非常广泛的操作系统(如VxWorks、eCos、Symbian OS及Palm OS)以及某些功能缩减版本的Linux或者其他操作系统。某些情况下,OS指称的是一个内置了固定应用软件的巨大泛用程序。在许多最简单的嵌入式系统中,所谓的OS就是指其上唯一的应用程序。
类Unix系统
一个在Linux底下执行的客制化KDE桌面系统所谓的类Unix家族指的是一族种类繁多的OS,此族包含了System V、BSD与Linux。由于Unix是The Open Group的注册商标,特指遵守此公司定义的行为的操作系统。而类Unix通常指的是比原先的Unix包含更多特征的OS。
Unix系统可在非常多的处理器架构下执行,在服务器系统上有很高的使用率,例如大专院校或工程应用的工作站。自由软件Unix变种,例如Linux与BSD近来越来越受欢迎,它们也在个人桌面电脑市场上大有斩获,例如Ubuntu系统,但大部分都是电脑高手在使用。
某些Unix变种,例如HP的HP-UX以及IBM的AIX仅设计用于自家的硬件产品上,而SUN的Solaris可安装于自家的硬件或x86电脑上。苹果电脑的Mac OS X是一个从NeXTSTEP、Mach以及FreeBSD共同派生出来的微内核BSD系统,此OS取代了苹果电脑早期非Unix家族的Mac OS。经历数年的披荆斩棘,自由开源的Unix系统逐渐蚕食鲸吞以往专利软件的专业领域,例如以往电脑动画运算巨擘──SGI的IRIX系统已被Linux家族及Plan 9[3]丛集所取代。
微软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操作系统在世界范围内占据了桌面操作系统90%的市场。[4]
Windows系统也被用在低阶和中阶服务器上,并且支持网页服务的数据库服务等一些功能。最近微软花费了很大研究与开发的经费用于使Windows拥有能运行企业的大型程序的能力。
WindowsXP在2001年10月25日发布,2004年8月24日发布最新的升级包WindowsXP Service Pack 2。 微软最新的操作系统 Windows Vista(开发代码为Longhorn)于2007年1月30日发售[5]。Windwos Vista增加了许多功能,尤其是系统的安全性和网络管理功能。Windows Vista拥有界面华丽的Aero Glass。
苹果Mac OS
苹果Mac OS系列操作系统是苹果公司 (原称苹果电脑)给苹果个人电脑系列设计的OS。
其他
大型主机以及嵌入式操作系统均与Unix或Windows家族关系不大,除了Windows CE、Windows NT Embedded 4.0及Windows XP Embedded是Windows的血亲产品,以及数种*BSD和嵌入式Linux包为例外。
少数较旧的OS今日依然在一些需要稳定性的市场中活跃,例如IBM的OS/2[6]BeOS以及XTS-400。
在达康时代狂潮过后,如AmigaOS与RISC OS等少数人使用的OS依然持续建立,以满足狂热的爱好者社群与特殊专业使用者。
未来
研究与建立未来的操作系统依旧进行著。操作系统朝提供更省电、网络化、华丽的使用者界面的方向来改进。Linux及一些类UNIX OS正努力让自己成为个人用户舒适的环境。GNU Hurd是一个企图完全兼容Unix并加强许多功能的微内核架构。微软Singularity是一个奠基于.Net并以建立较佳内存保护机制为目目标研究计划。
历史列表
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年
NeXTSTEP (1.0)
RISC OS
SCO Unix (第三版)
1990年
Amiga OS 2.0
BeOS (v1)
OSF/1
Microsoft Windows 3.0
1991年
Linux
1992年
386BSD 0.1
Amiga OS 3.0
Solaris 2.0 (SunOS 4.x的继承者,以SVR4为基础,而非BSD)
Microsoft Windows 3.1
1993年
Plan 9 (第一版)
FreeBSD
NetBSD
Microsoft Windows NT 3.1 (第一版NT)
1995年
Digital UNIX (aka Tru64)
OpenBSD
OS/390
Microsoft Windows 95
1996年
Windows NT 4.0
1997年
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年
AtheOS
Mac OS 9
MorphOS
Microsoft Windows 2000
Microsoft Windows Me
2001年
Amiga OS 4.0 (2001年5月)
Mac OS X 10.1
Microsoft Windows XP
z/OS
2002年
Microsoft Windows XP 64-bit Edition
Windows XP Tablet PC Edition
Windows XP Media Center Edition
Syllable
Mac OS X 10.2
2003年
Microsoft Windows Server 2003 (2003年3月28日)
Microsoft Windows XP 64-bit Edition - 以Microsoft Windows Server 2003为基础,同一天释出。
Mac OS X 10.3
2004年
Microsoft Windows XP Media Center Edition
2005年
Microsoft Windows XP Professional x64 Edition
Mac OS X 10.4
2006年
Microsoft Windows Vista
2007年
Mac OS X 10.5
功能
操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。以现代观点而言,一个标准个人电脑的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尚有担负起进程间通讯(IPC)、进程异常终止处理以及死结(Dead lock)侦测及处理等较为艰深的问题。
在进程之下尚有线程的问题,但是大部分的OS并不会处理线程所遭遇的问题,通常OS仅止于提供一组API让使用者自行操作或通过虚拟机器的管理机制控制线程之间的交互。
内存管理
根据帕金森定律:“你给程序再多内存,程序也会想尽办法耗光”,因此程序设计师通常希望系统给他无限量且无限快的内存。大部分的现代电脑内存架构都是阶层式的,最快且数量最少的寄存器为首,然后是高速缓存、内存以及最慢的磁盘储存设备。而OS的内存管理提供寻找可用的记忆空间、配置与释放记忆空间以及交换内存和低速储存设备的内含物……等功能。此类又被称做虚拟内存管理的功能大幅增加每个进程可获得的记忆空间(通常是4GB,即使实际上RAM的数量远少于这数目)。然而这也带来了微幅降低执行效率的缺点,严重时甚至也会导致进程崩溃。
内存管理的另一个重点活动就是借由CPU的帮助来管理虚拟位置。如果同时有许多进程储存于记忆设备上,操作系统必须防止它们互相干扰对方的内存内容(除非通过某些协议在可控制的范围下操作,并限制可存取的内存范围)。分割内存空间可以达成目标。每个进程只会看到整个内存空间(从0到内存空间的最大上限)被配置给它自己(当然,有些位置被OS保留而禁止存取)。CPU事先存了几个表以比对虚拟位置与实际内存位置,这种方法称为分页(paging)配置。
借由对每个进程产生分开独立的位置空间,OS也可以轻易地一次释放某进程所占据的所有内存。如果这个进程不释放内存,OS可以退出进程并将内存自动释放。
磁盘与文件系统
所谓的文件系统,通常指称管理磁盘数据的系统,可将数据以目录或文件的型式储存。每个文件系统都有自己的特殊格式与功能,例如日志管理或不需磁盘重整。
OS拥有许多种内置文件系统。例如Linux拥有非常广泛的内置文件系统,如ext2、ext3、ReiserFS、Reiser4、GFS、GFS2、OCFS、OCFS2、NILFS与Google文件系统。Linux也支持非本地文件系统,例如XFS、JFS、FAT家族与NTFS。另一方面,Windows能支持的文件系统只有FAT12、FAT16、FAT32与NTFS。NTFS系统是Windows上最可靠与最有效率的文件系统。其他的FAT家族都比NTFS老旧,且对于文件长度与分割磁盘能力都有很大限制,因此造成很多问题。而UNIX的文件系统多半是UFS,而UNIX中的一个分支Solaris最近则开始支持一种新式的ZFS
大部份上述的文件系统都有两种建置方法。系统可以以日志式(Journaling file system)或非日志式建置。日志式文件系统可以以较安全的手法执行系统回复。如果一个没有日志式建置的文件系统遇上突然的系统崩溃,导致数据建立在一半时停顿,则此系统需要特殊的文件系统检查工具才能撤消;日志式则可自动回复。微软的NTFS与Linux的ext3、reiserFS与JFS都是日志式文件系统。
每个文件系统都实作相似的目录/子目录架构,但在相似之下也有许多不同点。微软使用“\”符号以建立目录/子目录关系,且文件名称忽略其大小写差异;UNIX系统则是以“/”建立目录架构,且文件名称大小写有差异。
网络
许多现代的OS都具备操作主流网络通讯协议TCP/IP的能力。也就是说这样的操作系统可以进入网络世界,并且与其他系统分享诸如文件、打印机与扫描器等资源。
许多OS也支持多个过去网络启蒙时代的各路网络通讯协议,例如IBM建立的SNA、DEC在它所生产的系统所设置的DECnet架构与微软为Windows制作的特殊通讯协议。还有许多为了特殊功能而研发的通讯协议,例如可以在网络上提供文件存取功能的NFS系统。现今大量用于影音流(Streaming media)及游戏消息传送的UDP协议等。
安全
大多数OS都含有某种程度的信息安全机制。信息安全机制主要基于两大理念:
OS提供外界直接或间接存取数种资源的管道,例如本地端磁盘机的文件、受保护的特权系统调用(System call)、使用者的隐私数据与系统执行的程序所提供的服务。
OS有能力认证(Authorization)资源存取的请求。允许通过认证的请求并拒绝无法通过的非法请求,并将适当的权力授权(Authentication)给此请求。有些系统的认证机制仅简略地把资源分为特权或非特权,且每个请求都有独特的身份辨识号码,例如使用者名称。资源请求通常分成两大种类:
内部来源:通常是一个正在执行的程序发出的资源请求。在某些系统上,一个程序一旦可执行就可做任何事情(例如DOS时代的病毒),但通常OS会给程序一个识别代号,并且在此程序发出请求时,检查其代号与所需资源的存取权限关系。
外部来源:从非本地端电脑而来的资源请求,例如远程登入本机电脑或某些网络连接请求(FTP或HTTP)。为了识别这些外部请求,系统也许会对此请求提出认证要求。通常是请求输入使用者名称以及相对应的密码。系统有时也会应用诸如磁卡或生物识别数据的它种认证方法。在某些例子,例如网络通讯上,通常不需通过认证即可存取资源(例如匿名存取的FTP服务器或P2P服务)。
除了允许/拒绝形式的安全机制,一个高安全等级的系统也会提供记录选项,允许记录各种请求对资源存取的行为(例如“谁曾经读了这个文件?”)。
肇因于军方与商业组织将敏感数据记录在电脑上,安全机制在OS历史上是一个被长久关注与讨论的问题。美国国防部(DoD)便创立了《可信赖之计算机系统评鉴程序》(TCSEC),此手册确立了评鉴安全机制成效的基本原则。这对OS作者来说非常重要,因为TCSEC是用于评鉴、分类与选拔出用于处理、储存与获取敏感或机密数据的电脑系统的标准程序。
内部信息安全
内部信息安全可视为防止正在执行的程序任意存取系统资源的手段。大多OS让普通程序可直接操作电脑的CPU,所以产生了一些问题,例如怎样把可如OS一样处理事务、执行同样特殊指令的程序强迫停止,毕竟在此情境下,OS也只是另一个平起平坐的程序。为通用OS所生产的CPU通常于硬件层级上实践了一定程度的特殊指令保护概念。通常特权层级较低的程序想要执行某些特殊指令时会被阻断,例如直接存取像是硬盘之类的外部设备。因此,程序必须得经由询问OS,让OS执行特殊指令来存取磁盘。因此OS就有机会检查此程序的识别身份,并依此接受或拒绝它的请求。
在不支持特殊指令架构的硬件上,另一个也是唯一的保护方法,则是OS并不直接利用CPU执行使用者的程序,而是借由模拟一个CPU或提供一p-Code系统(伪代码执行机),像是Java一样让程序在虚拟机器上执行。
内部安全机制在多使用者电脑上特别重要:它允许每个系统使用者拥有自己个人的文件与目录,且其他使用者不能任意存取或删除。因为任何程序都可能绕过OS的监控,更有可能绕过侧录程序的监控,拥有强制力的内部安全机制在侧录启动时也非常重要。
外部信息安全
通常一个操作系统会为其他网络上的电脑或使用者提供(主持)各种服务。这些服务通常借由端口或OS网络地址后的数字存取点提供。通常此服务包括提供文件共享(NTFS)、打印共享、电子邮件、网页服务与文件传输协议(FTP)。 外部信息安全的最前线,是诸如防火墙等的硬件设备。在OS内部也常设置许多种类的软件防火墙。软件防火墙可设置接受或拒绝在OS上执行的服务与外界的连接。因此任何人都可以安装并执行某些不安全的网络服务,例如Telnet或FTP,并且设置除了某些自用通道之外阻挡其他所有连接,以达成防赌不良连接的机制。
使用者界面
今日大部分的OS都包含图形化使用者界面。有几类较旧的OS将图形化使用者界面与内核紧密结合,例如最早的Windows与Mac OS实作产品。此种手法可提供较快速的图形回应能力,且实作时不需切割模块因而较为省工,但是会有强烈副作用,例如图形系统崩溃将导致整个系统崩溃,例如死亡蓝屏幕。许多近代的OS已模块化,将图形界面的副系统与内核分开(已知Linux与Mac OS X原先就是如此设计,而某些扩充版本的Windows终于也采用此手法)。
许多OS允许使用者安装或创造任何他们喜欢的图形界面[7]。大部分的Unix与Unix派生系统(BSD、Linux与Minix)通常会安装X Window系统配合GNOME或KDE桌面环境。而某些OS就没有这么弹性的图形化使用者界面,例如Windows。这类的OS只能通过外加的程序来改变其图形化使用者界面,甚或根本只能改变诸如菜单风格或颜色配置等部分[来源请求]。
图形化使用者界面与时并进,例如Windows在每次新版本上市时就会将其图形化使用者界面改头换面,而Mac OS的GUI也在Mac OS X上市时出现重大转变。
驱动程序
所谓的驱动程序是指某类设计来与硬件交互的电脑软件。通常是一设计完善的设备交互接口,利用与此硬件连接的电脑汇排流或通讯子系统,提供对此设备下令与接收信息的功能;以及最终目的,将消息提供给OS或应用程序。驱动程序是针对特定硬件与特定OS设计的软件,通常以操作系统内核模块、应用软件包或普通电脑程序的形式在OS内核底下执行,以达到通透顺畅地与硬件交互的效果,且提供硬件在处理异步的时间依赖性接口(asynchronous time-dependent hardware interface)时所需的中断处理程序(Interrupt handler)。
设计驱动程序的主要目的在于操作抽象化,任何硬件模块,即使是同一类的设备,在硬件设计面上也有巨大差异。厂商推出的较新模块通常更可靠更有效率,控制方法也会有所不同。电脑与其OS每每不能预期那些现有与新设备的变异之处,因此无法知道其操作方法。为解决此问题OS通常会主动制订每种设备该有的操作方式,而驱动程序功能则是将那些OS制订的行为描述,转译为可让设备了解的自定义操作手法。
理论上适合的驱动程序一旦安装,相对应的新设备就可以无误地执行。此新驱动程序可以让此设备完美地切合在OS中,让使用者察觉不到这是OS原本没有的功能。
结构
操作系统理论研究者有时把操作系统分成四大部分:
驱动程序 - 最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。
内核 - 操作系统之最内核部分,通常运行在最高特权级,负责提供基础性、结构性的功能。
支承库 - (亦作“接口库”)是一系列特殊的程序库,它们指责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),是最靠近应用程序的部分。例如,GNU C运行期库就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和POSIX编程接口的形式。
外围 - 所谓外围,是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。
当然,本节所提出的四部结构观也绝非放之四海皆准。例如,在早期的微软视窗操作系统中,各部分耦合程度很深,难以区分彼此。而在使用外核结构的操作系统中,则根本没有驱动程序的概念。因而,本节的讨论只适用于一般情况,具体特例需具体分析。
操作系统中四大部分的不同布局,也就形成了几种整体结构的分野。常见的结构包括:简单结构、层结构、微内核结构、垂直结构、和虚拟机结构。
分类
操作系统的分类没有一个单一的标准,可以根据工作方式分为批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统等;根据架构可以分为单内核操作系统等;根据运行的环境,可以分为桌面操作系统,嵌入式操作系统等;根据指令的长度分为8bit, 16bit, 32bit, 64bit的操作系统。
内核结构
内核是操作系统最内核最基础的构件,因而,内核结构往往对操作系统的外部特性以及应用领域有着一定程度的影响。尽管随着理论和实践的不断演进,操作系统高层特性与内核结构之间的耦合有日趋缩小之势,但习惯上,内核结构仍然是操作系统分类之常用标准。
内核的结构可以分为单内核、微内核、超微内核、以及外核等。
单内核结构是操作系统中各内核部件杂然混居的形态,该结构于1960年代(亦有1950年代初之说,尚存争议),历史最长,是操作系统内核与外围分离时的最初形态。
微内核结构是1980年代产生出来的较新的内核结构,强调结构性部件与功能性部件的分离。20世纪末,基于微内核结构,理论界中又发展出了超微内核与外内核等多种结构。尽管自1980年代起,大部分理论研究都集中在以微内核为首的“新兴”结构之上,然而,在应用领域之中,以单内核结构为基础的操作系统却一直占据着主导地位。
在众多常用操作系统之中,除了QNX和基于Mach的UNIX等个别系统外,几乎全部采用单内核结构,例如大部分的Unix、Linux,以及Windows(微软声称Windows NT是基于改良的微内核架构的,尽管理论界对此存有异议)。 微内核和超微内核结构主要用于研究性操作系统,还有一些嵌入式系统使用外核。
基于单内核的操作系统通常有着较长的历史渊源。例如,绝大部分UNIX的家族史都可上溯至1960年代。该类操作系统多数有着相对古老的设计和实现(例如某些UNIX中存在着大量1970年代、1980年代的代码)。另外,往往在性能方面略优于同一应用领域中采用其他内核结构的操作系统(但通常认为此种性能优势不能完全归功于单内核结构)。
通用与专用、嵌入式
通用操作系统是面向一般没有特定应用需求的操作系统。由于没有特定的应用需求,通用操作系统为了适应更广泛的应用,需要支持更多的硬件与软件,需要针对所有的用户体验,对系统进行更新。通用操作系统是一个工程量繁重的操作系统。
实时与非实时
“实时操作系统”(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标准)。
2008年5月4日星期日
终极系统--Plan9
Plan9最大的特点就是“分布式”。随着网络的进一步发展,包括internet在内的很多网络的兼容性和互通性就成了很大的问题。Plan9的出现正是为了解决这样的问题,分布式是他最大的特点。你所运行的应用程序,你根本不需要知道它是在哪里运行的(甚至连应用程序自己在哪里运行,它自己都不知道,这样,也就彻底解决了软件平台的无关性,应该说设计思想比java和limbo要先更进一层),也许是在你自己的terminal上,也许是在互联网上的其他的任何一台机器上,甚至有可能是在你自己的手机或者PDA上。届时,资源将重新得到配置和优化,同样的一部影片也许只需要存放在整个所有各种类型网络的某几个终端服务器上,而这些终端服务器经过auth之后,对所有的合法用户都将是透明操作的,也许我们的终端将不再需要所谓的大容量硬盘了,甚至我们都不需要配置高性能的运算单元了,唯一强调的就是高速的网络和经过优化设计的应用软件以及操作模式。
基于这样的目的,Plan9出现了,而且成为了迄今为止最成熟的一个解决方案。在Plan9里面,所有的一切都被设计成为了file,或者说,所有的一切物理存在的东西,都被抽象成为了file。基本操作很简单:read, write, ctl。这可以说是系统论研究的最大成果了。在计算机的世界里面,抽象和数字化几乎成为了进步的原动力。
基于这样的目的,Plan9出现了,而且成为了迄今为止最成熟的一个解决方案。在Plan9里面,所有的一切都被设计成为了file,或者说,所有的一切物理存在的东西,都被抽象成为了file。基本操作很简单:read, write, ctl。这可以说是系统论研究的最大成果了。在计算机的世界里面,抽象和数字化几乎成为了进步的原动力。
Linux各版本简介
Linux最早由Linus Benedict Torvalds在1991年开始编写。在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(此类程序的许可方式均为GPL: General Public License)。在不断的有杰出的程序员和开发者加入到GNU组织中后,便造就了今天我们所看到的Linux,或称GNU/Linux。
Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点:
Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。
Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去:)
Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。
Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统 ——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。
最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。顾名思义,stable是稳定版,而 current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。
下面给为选择一个Linux发行版本犯愁的朋友一些建议:
如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大量的钱购买商业软件,那么你就需要一款适合桌面使用的Linux发行版本了,如果你不想自己定制任何东西,不想在系统上浪费太多时间,那么很简单,你就根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的区别仅仅是桌面程序的不一样。
如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,想让自己的机器跑得更欢,不介意在Linux系统安装方面浪费一点时间,那么你的唯一选择就是Gentoo,尽情享受Gentoo带来的自由快感吧!
如果你需要的是一个服务器系统,而且你已经非常厌烦各种Linux的配置,只是想要一个比较稳定的服务器系统而已,那么你最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。
如果你需要的是一个坚如磐石的非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。
如果你需要一个稳定的服务器系统,而且想深入摸索一下Linux的各个方面的知识,想自己定制许多内容,那么我推荐你使用Gentoo。
Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。下面介绍一下各个发行版本的特点:
Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。
Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable, testing 和 unstable。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去:)
Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以这么说,Ubuntu就是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。
Gentoo,伟大的Gentoo是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统 ——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。
最后,介绍一下FreeBSD,需要强调的是:FreeBSD并不是一个Linux系统!但FreeBSD与Linux的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似,所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。顾名思义,stable是稳定版,而 current则是添加了新技术的测试版。FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。
下面给为选择一个Linux发行版本犯愁的朋友一些建议:
如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大量的钱购买商业软件,那么你就需要一款适合桌面使用的Linux发行版本了,如果你不想自己定制任何东西,不想在系统上浪费太多时间,那么很简单,你就根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的区别仅仅是桌面程序的不一样。
如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,想让自己的机器跑得更欢,不介意在Linux系统安装方面浪费一点时间,那么你的唯一选择就是Gentoo,尽情享受Gentoo带来的自由快感吧!
如果你需要的是一个服务器系统,而且你已经非常厌烦各种Linux的配置,只是想要一个比较稳定的服务器系统而已,那么你最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。
如果你需要的是一个坚如磐石的非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。
如果你需要一个稳定的服务器系统,而且想深入摸索一下Linux的各个方面的知识,想自己定制许多内容,那么我推荐你使用Gentoo。
订阅:
评论 (Atom)