当前位置首页 > 百科> 正文

作业系统(计算机管理控制程式)

2019-11-27 06:09:51 百科
作业系统(电脑系统)

作业系统(计算机管理控制程式)

电脑系统一般指本词条

作业系统(英语:operating system,缩写作 OS)是管理计算机硬体与软体资源的电脑程式,同时也是计算机系统的核心与基石。作业系统需要处理如管理与配置记忆体、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网路与管理档案系统等基本事务。作业系统也提供一个让用户与系统互动的操作界面。

作业系统的类型非常多样,不同机器安装的作业系统可从简单到複杂,可从行动电话的嵌入式系统到超级计算机的大型作业系统。许多作业系统製造者对它涵盖範畴的定义也不尽一致,例如有些作业系统集成了图形用户界面,而有些仅使用命令行界面,而将图形用户界面视为一种非必要的应用程式。

基本介绍

  • 中文名:作业系统
  • 外文名:Operating System
  • 英文简称:OS
  • 组成部分:核心、驱动程式、接口库、外围
  • 常见系统:Android, iOS, Linux, Windows,Mac OS X
  • 特徵:并发、共享、虚拟、异步
  • 功能:处理器管理、存储器管理、设备管理、档案管理
  • 基本类型:批处理系统、分时作业系统、实时作业系统
  • 体系结构:模组组合结构、层次结构、微核心结构

简介

作业系统(英语:operating system,缩写作OS)是管理计算机硬体与软体资源的电脑程式,同时也是计算机系统的核心与基石。作业系统需要处理如管理与配置记忆体、决定系统资源供需的优先次序、控制输入与输出设备、操作网路与管理档案系统等基本事务。作业系统也提供一个让用户与系统互动的操作界面。
作业系统的类型非常多样,不同机器安装的作业系统可从简单到複杂,可从行动电话的嵌入式系统到超级计算机的大型作业系统。许多作业系统製造者对它涵盖範畴的定义也不尽一致,例如有些作业系统集成了图形用户界面,而有些仅使用命令行界面,而将图形用户界面视为一种非必要的应用程式。

历史

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

1980年代前

第一部计算机并没有作业系统。这是由于早期计算机的创建方式(如同建造机械算盘)与性能不足以运行如此程式。但在1947年美国贝尔实验室的肖克利、巴丁和布拉顿组成的研究小组发明的电晶体,以及莫里斯·威尔克斯发明的微程式方法,使得计算机不再是机械设备,而是电子产品。系统管理工具以及简化硬体操作流程的程式很快就出现了,且成为作业系统的起源。到了1960年代早期,商用计算机製造商製造了批处理系统,此系统可将工作的建置、调度以及运行序列化。此时,厂商为每一台不同型号的计算机创造不同的作业系统,因此为某计算机而写的程式无法移植到其他计算机上运行,即使是同型号的计算机也不行。
到了1964年,IBM System/360推出了一系列用途与价位都不同的大型机,而它们都共享代号为OS/360的作业系统(而非每种产品都用量身订做的作业系统)。让单一作业系统适用于整个系列的产品是System/360成功的关键,且实际上IBM目前的大型系统便是此系统的后裔,为System/360所写的应用程式依然可以在现代的IBM机器上运行。
OS/360也包含另一个优点:永久贮存设备—硬碟的面世(IBM称为DASD)。另一个关键是分时概念的建立:将大型机珍贵的时间资源适当分配到所有用户身上。分时也让用户有独占整部机器的感觉;而Multics的分时系统是此时众多新作业系统中实践此观念最成功的。
1963年,奇异公司与贝尔实验室合作以PL/I语言创建的Multics,是激发1970年代众多作业系统创建的灵感来源,尤其是由AT&T贝尔实验室的丹尼斯·里奇与肯·汤普逊所创建的Unix系统,为了实践平台移植能力,此作业系统在1973年由C语言重写;另一个广为市场採用的小型计算机作业系统是VMS。

1980年代

第一代微型计算机并不像大型机或小型计算机,没有装设作业系统的需求或能力;它们只需要最基本的作业系统,通常这种作业系统都是从ROM读取的,此种程式被称为监视程式(Monitor)。1980年代,家用计算机开始普及。通常此时的计算机拥有8-bit处理器加上64KB存储器、显示器、键盘以及低音质喇叭。而80年代早期最着名的套装计算机为使用微处理器6510(6502晶片特别版)的Commodore C64。此计算机没有作业系统,而是以一8KB唯读存储器BIOS初始化彩色显示器、键盘以及软碟驱动器和印表机。它可用8KB唯读存储器BASIC语言来直接操作BIOS,并依此撰写程式,大部分是游戏。此BASIC语言的解释器勉强可算是此计算机的作业系统,当然就没有核心或软硬体保护机制了。此计算机上的游戏大多跳过BIOS层次,直接控制硬体。
家用计算机C64的抽象架构
简单应用程式
机器语言
(游戏直接操作)
8kBASICROM
8k ROM-BIOS
硬体(中央处理器、存储设备等)
早期最着名的磁碟启动型作业系统是CP/M,它支持许多早期的微计算机。最早期的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成为了IBM PC上面最常用的作业系统(IBM自己也有推出DOS,称为IBM-DOS或PC-DOS)。MS-DOS的成功使得微软成为地球上最赚钱的公司之一。
MS-DOS在个人计算机上的抽象架构
普通应用程式(Shell script、文本编辑器)
MS-DOS(档案系统)
BIOS(驱动程式)
硬体(中央处理器、存储设备等)
而1980年代另一个崛起的作业系统异数是Mac OS,此作业系统紧紧与麦金塔计算机捆绑在一起。此时一位施乐帕罗奥多研究中心的员工Dominik Hagen访问了苹果计算机的史蒂夫·贾伯斯,并且向他展示了此时施乐发展的图形用户界面。苹果计算机惊为天人,并打算向施乐购买此技术,但因帕罗奥多研究中心并非商业单位而是研究单位,因此施乐回绝了这项买卖。在此之后苹果一致认为个人计算机的未来必定属于图形用户界面,因此也开始发展自己的图形化作业系统。

1990年代

延续1980年代的竞争,1990年代出现了许多影响未来个人计算机市场深厚的作业系统。由于图形用户界面日趋繁複,作业系统的能力也越来越複杂与巨大,因此强韧且具有弹性的作业系统就成了迫切的需求。此年代是许多套装类的个人计算机作业系统互相竞争的时代。
上一年代于市场崛起的苹果计算机,由于旧系统的设计不良,使得其后继发展不力,苹果计算机决定重新设计作业系统。经过许多失败的项目后,苹果于1997年发布新作业系统——Mac OS X的测试版,而后推出的正式版获取了巨大的成功。让原先失意离开苹果的史蒂夫·贾伯斯风光再现。
除了商业主流的作业系统外,从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),所有的特殊指令只能在核心态运行,此措施让核心可以完美管理系统内部与外部设备,并且拒绝无许可权的进程提出的请求。因此理论上任何应用程式运行时的错误,都不可能让系统崩溃。
几乎完整的Linux架构图
用户
模式
应用程式(sh、vi、OpenOffice.org等)
複杂库(KDE、glib等)
简单库(opendbm、sin等)
C库(open、fopen、socket、exec、calloc等)
核心
模式
系统中断、调用、错误等软硬体讯息
核心(驱动程式、进程、网上、记忆体管理等)
硬体(处理器、记忆体、各种设备)
另一方面,微软对于更强力的作业系统呼声的回应便是Windows NT于1993年的面世。
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的基础上,不过微软在这同时也在开发不依赖于DOS的NT系列Windows系统,并在后来完全放弃了DOS而转向NT作为Windows的基础。
底下的表格为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的架构上。
而本年代渐渐增长并越趋複杂的嵌入式设备市场也促使嵌入式作业系统的成长。

今日

现代作业系统通常都有一个使用的绘图设备的图形用户界面(GUI),并附加如滑鼠或触控面版等有别于键盘的输入设备。旧的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都有。

个人计算机

个人计算机市场目前分为两大阵营,此两种架构分别有支持的作业系统:
  • Apple Macintosh- Mac OS X,Windows(仅Intel平台),Linux、BSD。
  • IBM兼容PC- Windows、Linux、BSD、Mac OS X(非正式支持)。

大型机

最早的作业系统是针对20世纪60年代的大型主结构开发的,由于对这些系统在软体方面做了巨大投资,因此原来的计算机厂商继续开发与原来作业系统相兼容的硬体与作业系统。这些早期的作业系统是现代作业系统的先驱。现在仍被支持的大型主机作业系统包括:
  • Burroughs MCP--B5000,1961 toUnisysClearpath/MCP, present.
  • IBMOS/360--IBM System/360, 1964 toIBM zSeries, present
  • UNIVACEXEC 8--UNIVAC 1108, 1964, toUnisysClearpath Dorado, present.
现代的大型主机一般也可运行Linux或Unix变种。

嵌入式

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

类Unix系统

主条目:类Unix
所谓的类Unix家族指的是一族种类繁多的OS,此族包含了System V、BSD与Linux。由于Unix是The Open Group的注册商标,特指遵守此公司定义的行为的作业系统。而类Unix通常指的是比原先的Unix包含更多特徵的OS。
类Unix系统可在非常多的处理器架构下运行,在伺服器系统上有很高的使用率,例如大专院校或工程套用的工作站。
1991年,芬兰学生林纳斯·托瓦兹根据类Unix系统Minix编写并发布了Linux作业系统核心,其后在理察·斯托曼的建议下以GNU通用公共许可证发布,成为自由软体Unix变种. Linux近来越来越受欢迎,它们也在个人桌面计算机市场上大有斩获,例如Ubuntu系统。
某些Unix变种,例如惠普的HP-UX以及IBM的AIX仅设计用于自家的硬体产品上,而SUN的Solaris可安装于自家的硬体或x86计算机上。苹果计算机的Mac OS X是一个从NeXTSTEP、Mach以及FreeBSD共同派生出来的微核心BSD系统,此OS取代了苹果计算机早期非Unix家族的Mac OS。
经历数年的披荆斩棘,自由开源的Linux系统逐渐蚕食以往专利软体的专业领域,例如以往计算机动画运算巨擘──硅谷图形公司(SGI)的IRIX系统已被Linux家族及贝尔实验室研发小组设计的九号项目与Inferno系统取代,皆用于分散表达式环境。它们并不像其他Unix系统,而是选择内置图形用户界面。九号项目原先并不普及,因为它刚推出时并非自由软体。后来改在自由及开源软体许可证Lucent Public License发布后,便开始拥有广大的用户及社群。Inferno已被售予Vita Nuova并以GPL/MIT许可证发布。
当前,计算机按照计算能力排名世界500强中472台使用Linux,6台使用Windows,其余为各类BSD等Unix。

微软Windows

主条目:Microsoft 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%的市场。
Windows系统也被用在低级和中阶伺服器上,并且支持网页服务的资料库服务等一些功能。最近微软花费了很大研究与开发的经费用于使Windows拥有能运行企业的大型程式的能力。
Windows XP在2001年10月25日发布,2004年8月24日发布服务包2(Service Pack 2),2008年4月21日发布最新的服务包3(Service Pack 3)。
微软上一款作业系统Windows Vista(开发代码为Longhorn)于2007年1月30日发售。Windows Vista增加了许多功能,尤其是系统的安全性和网上管理功能,并且其拥有接口华丽的Aero Glass。但是整体而言,其在全球市场上的口碑却并不是很好。其后继者Windows 7则是于2009年10月22日发售,Windows 7改善了Windows Vista为人诟病的性能问题,相较于Windows Vista,在同样的硬体环境下,Windows 7的表现较Windows Vista为好。而最新的Windows 10则是于2015年7月29日发售。

Mac OS X

主条目:Mac OS和Mac OS X
macOS,前称“Mac OS X”或“OS X”,是一套运行于苹果Macintosh系列计算机上的作业系统。Mac OS是首个在商用领域成功的图形用户界面系统。Macintosh开发成员包括比尔·阿特金森(Bill Atkinson)、杰夫·拉斯金(Jef Raskin)和安迪·赫茨菲尔德(Andy Hertzfeld)。从OS X 10.8开始在名字中去掉Mac,仅保留OSX和版本号。2016年6月13日在WWDC2016上,苹果公司将OS X更名为macOS,现行的最新的系统版本是10.14,即macOS Mojave。

Chrome OS

主条目:Google Chrome OS
Google Chrome OS是一项Google的轻型的、基于网路的计算机作业系统计画,其基于Google的浏览器Google Chrome的Linux核心。

其他

大型主机以及嵌入式作业系统均与Unix或Windows家族关係不大,除了Android,Windows CE、Windows NT及Windows XP Embedded是Windows的血亲产品,以及数种*BSD和嵌入式Linux包为例外。
少数较旧的OS今日依然在一些需要稳定性的市场中活跃,例如IBM的OS/2、BeOS以及XTS-400。
在达康时代狂潮过后,如AmigaOS与RISC OS等少数人使用的OS依然持续建立,以满足狂热的爱好者社群与特殊专业用户。
优秀的作业系统必定要具备能让各种能力级别的用户满足各种需求的工具包可视化的高效简便程式环境,以程式来创建程式,就如立法的法律指导规範新的法案的创建。这其实是作业系统所隐含的一部分,决定了可以有多强的扩充能力。比如,某个作业系统有对应的开发者工具包集成环境程式并且是个可视化的,还能让能力不太高的人一看能懂的,用于修改某个声音合成器包含频谱显示,可要是作业系统本身不支持也没有提供可用的工具程式,就会变得很繁琐,很可能为了达到这个目标,开发者就要预备好各种相关的工具程式,甚至自己来编写一系列相关的工具程式创建专门的工具包,最后还要检查代码。若是有人想通过音乐来生成五线谱,要对类似标记语言的五线谱规则对应一下,对各种音色,音準採集并总结出一整套规律,通过声音识别可以识别出乐器的类别等,进而标出乐符完成从声音到乐谱的转换并生成。可是对人声却又更为複杂也不必要如此。若是需要用声音的波形图重现声音,没有相关的工具集是相当难实现,另外只有使用同一套声音的波形绘製规则的所生成的波形图用来再现的声音才是原来的声音。
在作为商品出售的作业系统软体的历史中常常因为其中包含的浏览器,媒体播放器在美国遭到反垄断起诉,差点使得功能上残缺不全。少数作业系统软体能够提供较为全面的App和实用工具程式。
作业系统软体的编译也需要对应的编译环境。
在同一台计算机上运行不同的作业系统软体,就能够以不同的方式来使用计算机资源。比如,在Mac上运行OS X和Windows以两种不同的技术OpenCL,Core Image:DirectX来使用图形卡实现类似的作用。
通过图像识别和声音识别来进行信息搜寻。
能够满足不同需求所要求的精确程度对时间的精细划分,以及尺度细分可以互联,同步,协调原本必须由多个人协同合作才能完成的随时需要调整并相互同步的操控作业,这就必须有即时讯息传送显示,可视化的用于协调同步计画任务的配置脚本,以及执行这样计画任务的完整组件。

未来

研究与创建未来的作业系统依旧进行着。作业系统朝提供更省电、网上化、易用、华丽的用户界面的方向来改进。类UNIX OS通过和桌面环境开发者协作,正努力让自己改进使用环境。
eyeOS是一套基于PHP实现的半开源模拟云计算作业系统,但其实质只是在网上浏览器中提供一种类似无界限的类独立作业系统,其并非于任何类似虚拟化中实现的真正计算机作业系统,能提供诸如Word、PPT、Excel的线上处理功能…
GNU Hurd是一个以完全兼容Unix并加强许多功能为目标的微核心架构。微软Singularity是一个奠基于.Net并以创建较佳存储器保护机制为目标的研究项目。

功能

作业系统位于底层硬体与用户之间,是两者沟通的桥樑。用户可以通过作业系统的用户界面,输入命令。作业系统则对命令进行解释,驱动硬体设备,实现用户要求。以现代标準而言,一个标準PC的作业系统应该提供以下的功能:
  • 进程管理(Processing management)
  • 记忆体管理(Memory management)
  • 档案系统(File system)
  • 网路通信(Networking)
  • 安全机制(Security)
  • 用户界面(User interface)
  • 驱动程式(Device drivers)

进程管理

主条目:进程和执行绪
不管是常驻程式或者应用程式,他们都以进程为标準运行单位。当年运用冯·诺伊曼结构建造计算机时,每个中央处理器最多只能同时运行一个进程。早期的作业系统(例如DOS)也不允许任何程式打破这个限制,且DOS同时只有运行一个进程(虽然DOS自己宣称他们拥有终止并等待驻留能力,可以部分且艰难地解决这问题)。现代的作业系统,即使只拥有一个CPU,也可以利用多进程(multitask)功能同时执行多个进程。进程管理指的是作业系统调整多个进程的功能。
由于大部分的计算机只包含一颗中央处理器,在宏核心(Core)的情况下多进程只是简单迅速地切换各进程,让每个进程都能够运行,在多核心或多处理器的情况下,所有进程透过许多协同技术在各处理器或核心上转换。越多进程同时运行,每个进程能分配到的时间比率就越小。很多作业系统在遇到此问题时会出现诸如音效断续或滑鼠跳格的情况(称做颠簸(Thrashing),一种作业系统只能不停运行自己的管理程式并耗尽系统资源的状态,其他用户或硬体的程式皆无法运行。进程管理通常实践了分时的概念,大部分的作业系统可以利用指定不同的特权档次(priority),为每个进程改变所占的分时比例。特权越高的进程,运行优先权越高,单位时间内占的比例也越高。互动式作业系统也提供某种程度的反馈机制,让直接与用户互动的进程拥有较高的特权值。
除了进程管理之外,作业系统尚有担负起进程间通信(IPC)、进程异常终止处理以及死锁(Dead Lock)侦测及处理等较为艰深的问题。
在进程之下尚有执行绪的问题,但是大部分的作业系统并不会处理执行绪所遭遇的问题,通常作业系统仅止于提供一组API让用户自行操作或透过虚拟机的管理机制控制执行绪之间的互动。

记忆体管理

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

磁碟与档案系统

主条目:档案系统
所谓的档案系统,通常指称管理磁碟数据的系统,可将数据以目录或档案的型式存储。每个档案系统都有自己的特殊格式与功能,例如日誌管理或不需磁碟重整。
作业系统拥有许多种内置档案系统。例如Linux拥有非常广泛的内置档案系统,如ext2、ext3、ext4、ReiserFS、Reiser4、GFS、GFS2、OCFS、OCFS2、NILFS与Google档案系统。Linux也支持非原生档案系统,例如XFS、JFS、FAT家族与NTFS。另一方面,Windows能支持的档案系统只有FAT12、FAT16、FAT32、EXFAT与NTFS。NTFS系统是Windows上最可靠与最有效率的档案系统。其他的FAT家族都比NTFS老旧,且对于档案长度与分割磁碟能力都有很大限制,因此造成很多问题。而UNIX的档案系统多半是UFS,而UNIX中的一个分支Solaris最近则开始支持一种新式的ZFS。
大部分上述的档案系统都有两种建置方法。系统可以以日誌式或非日誌式建置。日誌式档案系统可以以较安全的手法运行系统恢复。如果一个没有日誌式建置的档案系统遇上突然的系统崩溃,导致数据创建在一半时停顿,则此系统需要特殊的档案系统检查工具才能撤消;日誌式则可自动恢复。微软的NTFS与Linux的ext3、ext4、reiserFS与JFS都是日誌式档案系统。
每个档案系统都实现相似的目录/子目录架构,但在相似之下也有许多不同点。微软使用“\”符号以创建目录/子目录关係,且档案名称称忽略其大小写差异;UNIX系统则是以“/”创建目录架构,且档案名称称大小写有差异。(其实这是给系统调用的,"/"或"\"并不实际存在硬碟)

网路

许多现代的作业系统都具备操作主流网上通信协定TCP/IP的能力。也就是说这样的作业系统可以进入网上世界,并且与其他系统分享诸如档案、印表机与扫瞄器等资源。
许多作业系统也支持多个过去网上启蒙时代的各路网上通信协定,例如IBM创建的系统网上架构、DEC在它所生产的系统所设定的DECnet架构与微软为Windows製作的特殊通信协定。还有许多为了特殊功能而研发的通信协定,例如可以在网上上提供档案访问功能的NFS系统。现今大量用于影音流(Streaming media)及游戏讯息传送的UDP协定等。

安全

大多数作业系统都含有某种程度的信息安全机制。信息安全机制主要基于两大理念:
  • 作业系统提供外界直接或间接访问数种资源的管道,例如本地端磁碟驱动器的档案、受保护的特权系统调用、用户的隐私数据与系统运行的程式所提供的服务。
  • 作业系统有能力认证资源访问的请求。允许通过认证的请求并拒绝无法通过的非法请求,并将适当的权力授权(Authorization)给此请求。有些系统的认证机制仅简略地把资源分为特权或非特权,且每个请求都有独特的身份识别号码,例如用户名。资源请求通常分成两大种类:
  • 内部来源:通常是一个正在运行的程式发出的资源请求。在某些系统上,一个程式一旦可执行就可做任何事情(例如DOS时代的病毒),但通常作业系统会给程式一个识别代号,并且在此程式发出请求时,检查其代号与所需资源的访问许可权关係。
  • 外部来源:从非本地端计算机而来的资源请求,例如远程登录本机计算机或某些网上连线请求(FTP或HTTP)。为了识别这些外部请求,系统也许会对此请求提出认证要求。通常是请求输入用户名以及相对应的密码。系统有时也会套用诸如磁卡或生物识别数据的它种认证方法。在某些例子,例如网上通信上,通常不需通过认证即可访问资源(例如匿名访问的FTP伺服器或P2P服务)。

内部通讯安全

内部信息安全可视为防止正在运行的程式任意访问系统资源的手段。大多作业系统让普通程式可直接操作计算机的CPU,所以产生了一些问题,例如怎样把可如作业系统一样处理事务、运行同样特殊指令的程式强迫停止,毕竟在此情境下,作业系统也只是另一个平起平坐的程式。为通用作业系统所生产的CPU通常于硬体层级上实践了一定程度的特殊指令保护概念。通常特权层级较低的程式想要运行某些特殊指令时会被阻断,例如直接访问像是硬碟之类的外部设备。因此,程式必须得经由询问作业系统,让作业系统运行特殊指令来访问磁碟。因此作业系统就有机会检查此程式的识别身份,并依此接受或拒绝它的请求。
在不支持特殊指令架构的硬体上,另一个也是唯一的保护方法,则是作业系统并不直接利用CPU运行用户的程式,而是藉由模拟一个CPU或提供一P-code机系统(伪代码运行机),像是Java一样让程式在虚拟机上运行。
内部安全机制在多用户计算机上特别重要:它允许每个系统用户拥有自己个人的档案与目录,且其他用户不能任意访问或删除。因为任何程式都可能绕过作业系统的监控,更有可能绕过侧录程式的监控,拥有强制力的内部安全机制在侧录启动时也非常重要。
通常一个作业系统会为其他网上上的计算机或用户提供(主持)各种服务。这些服务通常藉由连线埠或作业系统网上地址后的数字接入点提供。通常此服务包括提供档案共享(NFS)、列印共享、信箱、网页服务与档案传输协定(FTP)。 外部信息安全的最前线,是诸如防火墙等的硬体设备。在作业系统内部也常设定许多种类的软体防火墙。软体防火墙可设定接受或拒绝在作业系统上运行的服务与外界的连线。因此任何人都可以安装并运行某些不安全的网上服务,例如Telnet或FTP,并且设定除了某些自用通道之外阻挡其他所有连线,以达成防堵不良连线的机制。

用户界面

今日大部分的作业系统都包含图形用户界面(GUI)。有几类较旧的作业系统将图形用户界面与核心紧密结合,例如最早的Windows与Mac OS实现产品。此种手法可提供较快速的图形回应能力,且实现时不需切割模组因而较为省工,但是会有强烈副作用,例如图形系统崩溃将导致整个系统崩溃,例如蓝屏当机。许多近代的作业系统已模组化,将图形接口的子系统与核心分开(已知Linux与Mac OS X原先就是如此设计,而某些扩展版本的Windows终于也採用此手法)。
许多作业系统允许用户安装或创造任何他们喜欢的图形用户界面。大部分的Unix与Unix派生系统(BSD、Linux与Minix)通常会安装X Window系统配合GNOME或KDE桌面环境。而某些作业系统就没有这幺弹性的图形用户界面,例如Windows。这类的作业系统只能透过外加的程式来改变其图形用户界面,甚至根本只能改变诸如选单风格或颜色配置等部分。
图形用户界面与时并进,例如Windows在每次新版本上市时就会将其图形用户界面改头换面,而Mac OS的GUI也在Mac OS X上市时出现重大转变。

驱动程式

主条目:驱动程式
所谓的驱动程式(Device driver)是指某类设计来与硬体互动的计算机软体。通常是一设计完善的设备互动接口,利用与此硬体连线的计算机汇排流或通信子系统,提供对此设备下令与接收信息的功能;以及最终目的,将讯息提供给作业系统或应用程式。驱动程式是针对特定硬体与特定作业系统设计的软体,通常以作业系统核心模组、套用软体包或普通电脑程式的形式在作业系统核心底下运行,以达到通透顺畅地与硬体互动的效果,且提供硬体在处理异步的时间依赖性接口(asynchronous time-dependent hardware interface)时所需的中断处理函式。
设计驱动程式的主要目的在于操作抽象化,任何硬体模组,既使是同一类的设备,在硬体设计面上也有巨大差异。厂商推出的较新模组通常更可靠更有效率,控制方法也会有所不同。计算机与其作业系统每每不能预期那些现有与新设备的变异之处,因此无法知道其操作方法。为解决此问题作业系统通常会主动制订每种设备该有的操作方式,而驱动程式功能则是将那些作业系统制订的行为描述,转译为可让设备了解的自定义操作手法。
理论上适合的驱动程式一旦安装,相对应的新设备就可以无误地运行。此新驱动程式可以让此设备完美地切合在作业系统中,让用户察觉不到这是作业系统原本没有的功能。

结构

作业系统理论研究者有时把作业系统分成四大部分:
  • 驱动程式- 最底层的、直接控制和监视各类硬体的部分,它们的职责是隐藏硬体的具体细节,并向其他部分提供一个抽象的、通用的接口。
  • 核心- 作业系统之最核心部分,通常运行在最高特权级,负责提供基础性、结构性的功能。
  • 支承库- (亦作“接口库”)是一系列特殊的程式库,它们职责在于把系统所提供的基本服务包装成应用程式所能够使用的编程接口(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标準)。

8位、16位、32位、64位、128位

所谓8位、16位、32位、64位、128位等术语有时指汇流排宽度,有时指指令宽度(在定长指令集中),而在作业系统理论中主要是指存储器定址的宽度。如果存储器的定址宽度是16位,那幺每一个存储器地址可以用16个二进制位来表示,也就是说可以在64KB的範围内定址。同样道理32位的宽度对应4GB的定址範围,64位的宽度对应16 Exabyte的定址範围。存储器定址範围并非仅仅是对作业系统而言的,其他类型的软体的设计有时也会被定址範围而影响。但是在作业系统的设计与实现中,定址範围却有着更为重要的意义。
在早期的16位作业系统中,由于64KB的定址範围太小,大都都採用“段”加“线性地址”的二维平面地址空间的设计。分配存储器时通常需要考虑“段置换”的问题,同时,应用程式所能够使用的地址空间也往往有比较小的上限。
在32位作业系统中,4GB的定址範围对于一般应用程式来说是绰绰有余的,因而,通常使用一维的线性地址空间,而不使用“段”。
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net