操作系统


操作系统 (正體)

操作系统英语Operating System,简称OS)是一管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让使用者与系统交互的操作接口(请参照图形用户界面)。

操作系统的型态非常多样,不同机器安装的OS可从简单到复杂,可从手机嵌入式系统超级计算机大型操作系统。许多操作系统制造者对OS的定义也不大一致,例如有些OS集成了图形化用户界面,而有些OS仅使用文本接口,而将图形界面视为一种非必要的应用程序。

操作系统理论在计算机科学中,为历史悠久而又活跃的分支,而操作系统的设计与实现则是软件工业的基础与内核。

目录

历史

主条目:操作系统历史
各類平台上作業系統的功能演化
各类平台上操作系统的功能演化

综观计算机之历史,操作系统与计算机硬件的发展息息相关。操作系统之本意原为提供简单的工作排序能力,后为辅助更新更复杂的硬件设施而渐渐演化。从最早的批次模式开始,分时机制也随之出现,在多处理器时代来临时,操作系统也随之添加多处理器协调功能,甚至是分布式系统的协调功能。其他方面的演变也类似于此。另一方面,在个人计算机上,个人计算机之操作系统因袭大型计算机的成长之路,在硬件越来越复杂、强大时,也逐步实践以往只有大型计算机才有的功能。

总而言之,操作系统的历史就是一部解决计算机系统需求与问题的历史。

1980年代前

Maurice Vincent Wilkes,微程序的創建者
Maurice Vincent Wilkes,微程序的创建者
IBM System/360,大型主機的經典之作
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。

1980年代

第一代微型计算机并不像大型计算机或小型计算机,没有装设操作系统的需求或能力;它们只需要最基本的操作系统,通常这种操作系统都是从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访问了苹果计算机的史蒂夫·乔布斯,并且向他展示了此时全录发展的图形化用户界面。苹果计算机惊为天人,并打算向全录购买此技术,但因伯拉图实验室并非商业单位而是研究单位,因此全录回绝了这项买卖。在此之后苹果一致认为个人计算机的未来必定属于图形用户界面,因此也开始发展自己的图形化操作系统。现今许多我们认为是基本要件的图形化接口技术与规则,都是由苹果计算机打下的基础(例如下拉式菜单、桌面图标、拖曳式操作与双点击等)。但正确来说,图形化用户界面的确是全录创始的。

1990年代

Apple I電腦,蘋果電腦的第一代產品。
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)加上键盘为输入设备。以上两种接口其实都是所谓的,其功能为接受并处理使用者的指令(例如按下一按钮,或在命令提示列上键入指令)。

选择要安装的操作系统通常与其硬件架构有很大关系,只有LinuxBSD几乎可在所有硬件架构上执行,而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变种。

嵌入式系统

嵌入式系统使用非常广泛的操作系统(如VxWorkseCosSymbian OSPalm OS)以及某些功能缩减版本的Linux或者其他操作系统。某些情况下,OS指称的是一个内置了固定应用软件的巨大泛用程序。在许多最简单的嵌入式系统中,所谓的OS就是指其上唯一的应用程序。

类Unix系统

主条目:类Unix
一個在Linux底下執行的客製化KDE桌面系統
一个在Linux底下执行的客制化KDE桌面系统

所谓的类Unix家族指的是一族种类繁多的OS,此族包含了System VBSDLinux。由于Unix是The Open Group的注册商标,特指遵守此公司定义的行为的操作系统。而类Unix通常指的是比原先的Unix包含更多特征的OS。

Unix系统可在非常多的处理器架构下执行,在服务器系统上有很高的使用率,例如大专院校或工程应用的工作站自由软件Unix变种,例如Linux与BSD近来越来越受欢迎,它们也在个人桌面计算机市场上大有斩获,例如Ubuntu系统,但大部分都是计算机高手在使用。

某些Unix变种,例如HPHP-UX以及IBM的AIX仅设计用于自家的硬件产品上,而SUNSolaris可安装于自家的硬件或x86计算机上。苹果计算机的Mac OS X是一个从NeXTSTEP、Mach以及FreeBSD共同派生出来的微内核BSD系统,此OS取代了苹果计算机早期非Unix家族的Mac OS。经历数年的披荆斩棘,自由开源的Unix系统逐渐蚕食鲸吞以往专利软件的专业领域,例如以往计算机动画运算巨擘──SGIIRIX系统已被Linux家族及Plan 9[3]丛集所取代。[来源请求]

微软Windows

標準Windows XP桌面
标准Windows XP桌面
主条目:Microsoft Windows

Microsoft Windows 系列操作系统是在微软给IBM机器设计的MS-DOS的基础上设计的图形操作系统。现在的Windows系统,如Windows 2000、Windows XP皆是建立于现代的Windows NT内核。NT内核是由OS/2和OpenVMS等系统上借用来的。Windows 可以在32位和64位的IntelAMD的处理器上运行,但是早期的版本也可以在DEC Alpha、MIPS与PowerPC架构上运行。 虽然由于人们对于开放源代码作业系统兴趣的提升,Windows的市场占有率有所下降,但是到2004年为止,Windows操作系统在世界范围内占据了桌面操作系统90%的市场。[4]

Windows系统也被用在低阶和中阶服务器上,并且支持网页服务的数据库服务等一些功能。最近微软花费了很大研究与开发的经费用于使Windows拥有能运行企业的大型程序的能力。

Windows XP在2001年10月25日发布,2004年8月24日发布服务包 2,2008年4月21日发布最新的服务包 3。 微软最新的操作系统 Windows Vista(开发代码为Longhorn)于2007年1月30日发售[5]。Windwos Vista增加了许多功能,尤其是系统的安全性和网络管理功能。Windows Vista拥有界面华丽的Aero Glass

苹果Mac OS

主条目: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并以建立较佳内存保护机制为目目标研究计划。

功能

操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。以现代观点而言,一个标准个人计算机的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、ext3ReiserFS、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建立的SNADEC在它所生产的系统所设置的DECnet架构与微软为Windows制作的特殊通讯协议。还有许多为了特殊功能而研发的通讯协议,例如可以在网络上提供文件访問功能的NFS系统。现今大量用于影音流(Streaming media)及游戏消息传送的UDP协议等。

安全

大多数OS都含有某种程度的信息安全机制。信息安全机制主要基于两大理念:

  • OS提供外界直接或间接访問数种资源的管道,例如本地端磁盘驱动器的文件、受保护的特权系统调用(System call)、使用者的隐私数据与系统执行的程序所提供的服务。
  • OS有能力认证Authorization)资源访問的请求。允许通过认证的请求并拒绝无法通过的非法请求,并将适当的权力授权Authentication)给此请求。有些系统的认证机制仅简略地把资源分为特权或非特权,且每个请求都有独特的身份辨识号码,例如使用者名称。资源请求通常分成两大种类:
    • 内部来源:通常是一个正在执行的程序发出的资源请求。在某些系统上,一个程序一旦可执行就可做任何事情(例如DOS时代的病毒),但通常OS会给程序一个识别代号,并且在此程序发出请求时,检查其代号与所需资源的访問权限关系。
    • 外部来源:从非本地端计算机而来的资源请求,例如远程登入本机计算机或某些网络连接请求(FTPHTTP)。为了识别这些外部请求,系统也许会对此请求提出认证要求。通常是请求输入使用者名称以及相对应的密码。系统有时也会应用诸如磁卡或生物识别数据的它种认证方法。在某些例子,例如网络通讯上,通常不需通过认证即可访問资源(例如匿名访問的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系统配合GNOMEKDE桌面环境。而某些OS就没有这么弹性的图形化用户界面,例如Windows。这类的OS只能通过外加的程序来改变其图形化用户界面,甚或根本只能改变诸如菜单风格或颜色配置等部分[来源请求]

图形化用户界面与时并进,例如Windows在每次新版本上市时就会将其图形化用户界面改头换面,而Mac OS的GUI也在Mac OS X上市时出现重大转变。

驱动程序

所谓的驱动程序是指某类设计来与硬件交互的计算机软件。通常是一设计完善的设备交互接口,利用与此硬件连接的计算机汇排流或通讯子系统,提供对此设备下令与接收信息的功能;以及最终目的,将消息提供给OS或应用程序。驱动程序是针对特定硬件与特定OS设计的软件,通常以操作系统内核模块、应用软件包或普通计算机程序的形式在OS内核底下执行,以达到通透顺畅地与硬件交互的效果,且提供硬件在处理异步的时间依赖性接口(asynchronous time-dependent hardware interface)时所需的中断处理程序(Interrupt handler)。

设计驱动程序的主要目的在于操作抽象化,任何硬件模块,既使是同一类的设备,在硬件设计面上也有巨大差异。厂商推出的较新模块通常更可靠更有效率,控制方法也会有所不同。计算机与其OS每每不能预期那些现有与新设备的变异之处,因此无法知道其操作方法。为解决此问题OS通常会主动制订每种设备该有的操作方式,而驱动程序功能则是将那些OS制订的行为描述,转