添加的内容 删除的内容
小 (移除无用链接) |
(我来啦, replaced: 員 → 员, 內 → 内 (19), 貴 → 贵, 連結 → 链接, 擔 → 担, 國 → 国 (2), 開 → 开 (24), 學 → 学, 會 → 会 (21), 長 → 长 (6), 與 → 与 (77), 廠 → 厂 (2), 軍 → 军, 間 → 间 (24), 處 → 处 (30), 務 → 务 (21), 師 → 师, 龍 → 龙, 導 → 导 (4), 語 → 语 (5), 華 → 华 (2), 馮 → 冯, 風 → 风 (2), 買 → 买 (4), 賣 → 卖, 專業 → 专业 (2), 愛 → 爱, 權 → 权 (11), 無 → 无 (13), 盡 → 尽, 構 → 构 (30), 彈 → 弹 (2), 興 → 兴 (2), 關 → 关 (8), 檢 → 检 (3), 監 → 监 (3), 將 → 将 (17), 領 → 领, 舊 → 旧 (7), 張 → 张, 陽 → 阳, 協 → 协 (11), 調 → 调 (2), 應 → 应 (28), 嚴 → 严, 雲 → 云, 習 → 习, 廣 → 广 (4), 來 → 来 (31),…) |
||
第1行: | 第1行: | ||
{{NoteTA |
{{NoteTA |
||
|T=zh-cn:操作系统;zh-hk:作 |
|T=zh-cn:操作系统;zh-hk:作业系统;zh-tw:作业系统; |
||
|1=zh-hans:只读存储器; zh-hant:唯 |
|1=zh-hans:只读存储器; zh-hant:唯读记憶体; |
||
|2=zh-hans:显示器; zh-hant:螢幕; |
|2=zh-hans:显示器; zh-hant:螢幕; |
||
|3=zh-hans:音响; zh-hant:喇叭; hardware beheer |
|3=zh-hans:音响; zh-hant:喇叭; hardware beheer |
||
第9行: | 第9行: | ||
|7=zh-hans:理查德; zh-hant:理察; |
|7=zh-hans:理查德; zh-hant:理察; |
||
|8=zh-hans:磁盘; zh-hant:磁碟; |
|8=zh-hans:磁盘; zh-hant:磁碟; |
||
|9=zh-hans:通信; zh-hant:通 |
|9=zh-hans:通信; zh-hant:通讯; |
||
|10=zh-hans:进程; zh-hant:行程; |
|10=zh-hans:进程; zh-hant:行程; |
||
|11=zh-hans:程序; zh-hant:程式; |
|11=zh-hans:程序; zh-hant:程式; |
||
|12=zh-hans:支持; zh-hant:支援; |
|12=zh-hans:支持; zh-hant:支援; |
||
|13=zh-hans:文件; zh-hant: |
|13=zh-hans:文件; zh-hant:档案; |
||
|14=zh-hans:线程; zh-hant: |
|14=zh-hans:线程; zh-hant:执行緒; |
||
|skin=黑白分明 |
|skin=黑白分明 |
||
|G1=IT |
|G1=IT |
||
第22行: | 第22行: | ||
| name = {{lang|en|Operating System}} |
| name = {{lang|en|Operating System}} |
||
| cn = 操作系统 |
| cn = 操作系统 |
||
| tw = 作 |
| tw = 作业系统 |
||
}} |
}} |
||
[[File:Operating system architecture.svg|缩略图|400px|操作系统 |
[[File:Operating system architecture.svg|缩略图|400px|操作系统简略架构]] |
||
[[File:Linux architecture.png|缩略图|400px|操作系统架 |
[[File:Linux architecture.png|缩略图|400px|操作系统架构,以[[Linux]]为例]] |
||
'''操作系统'''({{Lang-en|'''O'''perating '''S'''ystem}}, |
'''操作系统'''({{Lang-en|'''O'''perating '''S'''ystem}},缩写:{{lang|en|'''OS'''}})是一组主管并控制[[电子计算机|计算机]]操作、运用和运行[[计算机硬件|硬件]]、[[软件]][[资源 (计算机科学)|资源]]和提供公共[[守护进程|服务]]来组织用户交互的相互关联的[[系统软件]][[程序]],同时也是计算机系统的核心与基石。操作系统需要处理如管理与配置[[内存]]、決定系统资源供需的优先次序、控制输入与输出裝置、操作[[计算机网络|网络]]与管理[[文件系统]]等基本事务。操作系统也提供一个让使用者与系统互动的操作界面。 |
||
操作系统的型 |
操作系统的型态非常多样,不同机器安裝的操作系统可从简单到复杂,可从[[移动电话|行动电话]]的[[嵌入式系统]]到[[超级计算机|超级电脑]]的[[超级计算机#.E6.93.8D.E4.BD.9C.E7.B3.BB.E7.BB.9F|大型作业系统]]。许多操作系统制造者对它涵盖范畴的定义也不尽一致,例如有些操作系统整合了[[图形用户界面]],而有些仅使用[[命令行界面]],将图形用户界面视为一种非必要的应用程式。 |
||
操作系统理论在[[计算机科学]]中, |
操作系统理论在[[计算机科学]]中,为历史悠久而又活跃<ref>{{Cite web|url=https://sites.google.com/site/wen139/Home?tmpl=/system/app/templates/print/&showPrintDialog=1|access-date=2021-12-06|work=sites.google.com}}</ref>的分支;而操作系统的设计与实现则是软件工业的基础与核心<ref>{{Cite web|title=王珞:坚定走出自主可控操作系统的国产之路--理论-人民网|url=http://theory.people.com.cn/n/2014/0723/c386964-25324761.html|access-date=2021-12-06|work=theory.people.com.cn|||}}</ref>。 |
||
== |
== 历史 == |
||
[[File:Operating system feature migration.png|缩略图|300px|各 |
[[File:Operating system feature migration.png|缩略图|300px|各类平台上作业系统的功能演化]] |
||
{{Main|操作系统历史}} |
{{Main|操作系统历史}} |
||
綜 |
綜观电脑之历史,作业系统与电脑硬体的发展息息相关。作业系统之本意原为提供简单的[[排程|工作排序]]能力,后为辅助更新更复杂的硬体设施而渐渐演化。从最早的[[批处理任务|批次模式]]开始,[[分时系统|分时机制]]也随之出现,在[[多处理器]]时代来临时,作业系统也随之添加多处理器协调功能,甚至是[[分布式计算|分散式系统]]的协调功能。其他方面的演变也类似于此。另一方面,在个人电脑上,个人电脑之作业系统因袭大型电脑的成长之路,在硬体越来越复杂、强大时,也逐步实踐以往衹有大型电脑才有的功能。 |
||
总而言之,作业系统的历史就是一部解決电脑系统需求与问题的历史。 |
|||
=== 1980年代前 === |
=== 1980年代前 === |
||
[[File:IBM360-65-1.corestore.jpg|缩略图|200px|[[IBM System/360]],大型主 |
[[File:IBM360-65-1.corestore.jpg|缩略图|200px|[[IBM System/360]],大型主机的经典之作]] |
||
第一部 |
第一部电脑并沒有作业系统。这是由于早期电脑的建立方式(如同建造机械[[算盘]])与效能不足以执行如此程式。但在1947年发明了[[晶体管|电晶体]],以及[[莫里斯·威尔克斯]]发明的[[微程序]]方法,使得电脑不再是机械裝置,而是电子产品。系统管理工具以及简化硬体操作流程的程式很快就出现了,且成为作业系统的起源。到了1960年代早期,商用电脑制造商制造了[[批处理任务|批次处理]]系统,此系统可将工作的建置、排程以及执行[[序列化]]。此时,厂商为每一台不同型号的电脑创造不同的作业系统,因此为某电脑而写的程式无法移植到其他电脑上执行,即使是同型号的电脑也不行。 |
||
到了1964年,[[IBM System/360]]推出了一系列用途 |
到了1964年,[[IBM System/360]]推出了一系列用途与价位都不同的[[大型机|大型电脑]],而它们都共用代号为[[OS/360]]的作业系统(而非每种产品都用量身订做的作业系统)。让单一作业系统适用于整个系列的产品是System/360成功的关鍵,且实际上IBM目前的大型系统便是此系统的后裔,为System/360所写的应用程式依然可以在现代的IBM机器上执行。 |
||
OS/360也包含另一 |
OS/360也包含另一个优点:永久貯存裝置—[[硬盘]]的面世(IBM称为[[直接存取储存装置|DASD]])。另一个关鍵是[[分时系统|分时]]概念的建立:将大型电脑珍贵的时间资源适当分配到所有使用者身上。分时也让使用者有独佔整部机器的感觉;而[[Multics]]的分时系统是此时众多新作业系统中实踐此观念最成功的。 |
||
1963年,[[通用电气|奇 |
1963年,[[通用电气|奇异公司]]与[[贝尔实验室]]合作以PL/I语言建立的[[Multics]]<ref>{{en}}[http://www.cbi.umn.edu/iterations/haigh.html ''Multicians.org and the History of Operating Systems''] , Thomas Haigh, 13 September 2002</ref>,是激发1970年代众多作业系统建立的灵感来源,尤其是由[[美国电话电报公司|AT&T]]贝尔实验室的[[丹尼斯·里奇]]与[[肯·汤普逊]]所建立的[[UNIX|Unix]]系统,为了实踐平台移植能力,此作业系统在1973年由[[C语言]]重写;另一个广为市场采用的[[微型计算机|小型电脑]]作业系统是[[OpenVMS|VMS]]。 |
||
=== 1980年代 === |
=== 1980年代 === |
||
第一代[[微型计算机]] |
第一代[[微型计算机]]并不像大型电脑或小型电脑,沒有裝设作业系统的需求或能力;它们只需要最基本的作业系统,通常这种作业系统都是从[[唯读记憶体|ROM]]读取的,此种程式被称为监视程式(Monitor)。1980年代,家用电脑开始普及。通常此时的电脑拥有8-bit处理器加上64KB[[电脑记憶体|记憶体]]、[[显示器|螢幕]]、[[键盘|鍵盘]]以及低音质[[揚声器|喇叭]]。而80年代早期最著名的套裝电脑为使用微处理器6510(6502晶片特别版)的[[Commodore 64|Commodore C64]]。此电脑沒有作业系统,而是以一8KB唯读记憶体[[BIOS]]初始化彩色螢幕、鍵盘以及軟碟机和印表机。它可用8KB唯读记憶体[[BASIC]]语言来直接操作BIOS,并依此撰写程式,大部分是游戏。此BASIC语言的[[直译器]]勉强可算是此电脑的作业系统,当然就沒有[[内核|核心]]或軟硬体保护机制了。此电脑上的游戏大多跳过BIOS层次,直接控制硬体。 |
||
{| class="wikitable" style="width: 400px; text-align: center;{{Table center}}" |
{| class="wikitable" style="width: 400px; text-align: center;{{Table center}}" |
||
| colspan=4 style="width: 400px" | '''家用 |
| colspan=4 style="width: 400px" | '''家用电脑C64的抽象架构''' |
||
|- |
|- |
||
| style="width: 200px" | |
| style="width: 200px" | 简单应用程式 |
||
| colspan=2 style="width: 200px" | [[机器语言]]<br />( |
| colspan=2 style="width: 200px" | [[机器语言]]<br />(游戏直接操作) |
||
|- |
|- |
||
| bgcolor=#66CCCC style="width: 200px" | 8k [[BASIC]] [[唯 |
| bgcolor=#66CCCC style="width: 200px" | 8k [[BASIC]] [[唯读记憶体|ROM]] |
||
| colspan=2 style="width: 200px" | |
| colspan=2 style="width: 200px" | |
||
|- |
|- |
||
第67行: | 第67行: | ||
| style="width: 100px" | |
| style="width: 100px" | |
||
|- |
|- |
||
| bgcolor=gray colspan=3 style="width: 400px" | <span style="color: white;">'''[[硬 |
| bgcolor=gray colspan=3 style="width: 400px" | <span style="color: white;">'''[[硬体|<span style="color: yellow;">硬体</span>]]([[中央处理器|<span style="color: yellow;">中央处理器</span>]]、储存裝置等)'''</span> |
||
|} |
|} |
||
早期最著名的磁碟 |
早期最著名的磁碟启动型作业系统是[[CP/M]],它支援许多早期的微电脑。最早期的IBM PC其架构类似C64。当然它们也使用了BIOS以初始化与抽象化硬体的操作,甚至也附了一个BASIC直译器!但是它的BASIC优于其他公司产品的原因在于他有可攜性,并且相容于任何符合IBM PC架构的机器上。这样的PC可利用[[Intel 8088|Intel-8088处理器]](16-bit暫存器)定址,并最多可有1MB的记憶体,然而最初-{只}-有640KB。[[软盘|軟式磁碟机]]取代了过去的磁带机,成为新一代的储存裝置,并可在他512KB的空间上读写。为了支援更进一步的档案读写概念,[[DOS|磁碟作业系统]](Disk Operating System,DOS)因而诞生。此作业系统可以合并任意数量的磁区,因此可以在一张磁碟片上放置任意数量与大小的档案。档案之间以档名区别。IBM并沒有很在意其上的DOS,因此以向外部公司购买的方式取得作业系统。1980年微軟公司取得了与IBM的合约,并且收购了一家公司出产的作业系统,在将之修改后以[[MS-DOS]]的名义出品,此作业系统可以直接让程式操作BIOS与档案系统。到了[[Intel 80286|Intel-80286处理器]]的时代,才开始实作基本的储存裝置保护措施。其后,MS-DOS成为了[[个人电脑|IBM PC]]上面最常用的作业系统(IBM自己也有推出DOS,称为IBM-DOS或[[PC-DOS]])。MS-DOS的成功使得[[微软]]成为地球上最賺钱的公司之一。 |
||
{| class="wikitable" style="width: 400px; text-align: center;{{Table center}}" |
{| class="wikitable" style="width: 400px; text-align: center;{{Table center}}" |
||
| colspan=4 style="width: 400px" | '''MS-DOS在 |
| colspan=4 style="width: 400px" | '''MS-DOS在个人电脑上的抽象架构''' |
||
|- |
|- |
||
| colspan=4 style="width: 400px" | 普通[[应用软件| |
| colspan=4 style="width: 400px" | 普通[[应用软件|应用程式]](Shell script、[[文本编辑器|文字编辑器]]) |
||
|- |
|- |
||
| bgcolor=#6666CC style="width: 200px" | [[MS-DOS]]( |
| bgcolor=#6666CC style="width: 200px" | [[MS-DOS]](档案系统) |
||
| colspan=2 style="width: 200px" | |
| colspan=2 style="width: 200px" | |
||
|- |
|- |
||
| bgcolor=#0066FF colspan=2 style="width: 300px" | <span style="color: white;">'''[[BIOS]](驅 |
| bgcolor=#0066FF colspan=2 style="width: 300px" | <span style="color: white;">'''[[BIOS]](驅动程式)'''</span> |
||
| style="width: 100px" | |
| style="width: 100px" | |
||
|- |
|- |
||
| bgcolor=gray colspan=3 style="width: 400px" |<span style="color: white;">''' [[硬 |
| bgcolor=gray colspan=3 style="width: 400px" |<span style="color: white;">''' [[硬体|<span style="color: yellow;">硬体</span>]]([[中央处理器|<span style="color: yellow;">中央处理器</span>]]、储存裝置等)'''</span> |
||
|} |
|} |
||
而1980年代另一 |
而1980年代另一个崛起的作业系统异数是[[Mac OS]],此作业系统緊緊与[[麦金塔电脑]]綑綁在一起。此时一位[[施乐]][[帕罗奥多研究中心]]的员工Dominik Hagen拜訪(Visits)了苹果电脑的[[史蒂夫·乔布斯]],并且向他展示了此时全录发展的图形化使用者介面。苹果电脑惊为天人,并打算向全录购买此技术,但因帕罗奥多研究中心并非商业单位而是研究单位,因此全录回绝了这项买卖。在此之后苹果一致认为个人电脑的未来必定属于图形使用者介面,因此也开始发展自己的图形化作业系统。 |
||
=== 1990年代 === |
=== 1990年代 === |
||
[[File:Apple1-Mainboard.jpg|缩略图|[[Apple I]] |
[[File:Apple1-Mainboard.jpg|缩略图|[[Apple I]]电脑,苹果电脑的第一代产品。]] |
||
延 |
延续1980年代的竞争,1990年代出现了许多影响未来个人电脑市场深厚的作业系统。由于图形化使用者介面日趋繁复,作业系统的能力也越来越复杂与巨大,因此强韌且具有弹性的作业系统就成了迫切的需求。此年代是许多套裝类的[[个人电脑]]作业系统互相竞争的时代。 |
||
上一年代 |
上一年代于市场崛起的苹果电脑,由于旧系统的设计不良,使得其后继发展不力,苹果电脑決定重新设计作业系统。经过许多失败的专案后,苹果于1997年释出新作业系统——[[Mac OS X]]的测试版,而后推出的正式版取得了巨大的成功。让原先失意离开苹果的[[史蒂夫·乔布斯]]风光再现。 |
||
除了商 |
除了商业主流的作业系统外,从1980年代起在[[开放源代码]]的世界中,[[BSD]]系统也发展了非常久的一段时间,但在1990年代由于[[BSD#Net/2以及法律问题|与AT&T的法律争端]],使得远在[[芬兰]][[赫尔辛基大学]]的另一股开源作业系统——[[Linux]]兴起。Linux核心是一个标準[[POSIX]]核心,其血缘可算是Unix家族的一支。Linux与BSD家族都搭配[[GNU|GNU计划]]所发展的应用程式,但是由于使用的[[许可证]]以及历史因素的作弄下,Linux取得了相当可观的开源作业系统市佔率,而BSD则小得多。相较于MS-DOS的架构,Linux除了拥有傲人的[[Linux内核#可移植性|可移植性]](相较于Linux,MS-DOS衹能运行在Intel CPU上),它也是一个分时[[多行程]]核心,以及良好的[[记憶体空间]]管理(普通的行程不能存取核心区域的记憶体)。想要存取任何非自己的记憶体空间的行程衹能透过[[系统调用]]来达成。一般行程是处于使用者模式(User mode)底下,而执行系统呼叫时会被切换成核心模式(Kernel mode),所有的特殊指令衹能在核心模式执行,此措施让核心可以完美管理系统内部与外部裝置,并且拒绝无权限的行程提出的请求。因此理论上任何应用程式执行时的錯误,都不可能让系统[[死机|-{zh-hant:当机;zh-hans:崩潰}-]]。 |
||
{| class="wikitable" style="width: 480px; text-align: center; font-size: 90%;{{Table center}}" |
{| class="wikitable" style="width: 480px; text-align: center; font-size: 90%;{{Table center}}" |
||
| colspan=5 style="width: 480px" | ''' |
| colspan=5 style="width: 480px" | '''几乎完整的Linux架构图''' |
||
|- |
|- |
||
| rowspan=4 style="width: 80px" | 使用者<br />模式 |
| rowspan=4 style="width: 80px" | 使用者<br />模式 |
||
| colspan=4 style="width: 400px" | |
| colspan=4 style="width: 400px" | 应用程式(sh、[[vi]]、[[OpenOffice.org]]等) |
||
|- |
|- |
||
| colspan=2 bgcolor=#CCCCFF style="width: 200px" | |
| colspan=2 bgcolor=#CCCCFF style="width: 200px" | 复杂[[函式库]]([[KDE]]、glib等) |
||
| colspan=2 style="width: 200px" | |
| colspan=2 style="width: 200px" | |
||
|- |
|- |
||
| style="width: 100px" bgcolor=#CCCCFF | |
| style="width: 100px" bgcolor=#CCCCFF | |
||
| bgcolor=#9999CC colspan=2 style="width: 200px" | |
| bgcolor=#9999CC colspan=2 style="width: 200px" | 简单函式库(opendbm、sin等) |
||
| style="width: 100px" | |
| style="width: 100px" | |
||
|- |
|- |
||
| bgcolor=#6666FF colspan=4 style="width: 400px" border-bottom: 2px solid #AAAAAA; | C函式 |
| bgcolor=#6666FF colspan=4 style="width: 400px" border-bottom: 2px solid #AAAAAA; | C函式库(open、fopen、socket、exec、calloc等) |
||
|- |
|- |
||
| rowspan=3 style="width: 80px" | 核心<br />模式 |
| rowspan=3 style="width: 80px" | 核心<br />模式 |
||
| bgcolor=#3366CC colspan=4 style="width: 400px" | <span style="color:white">'''系 |
| bgcolor=#3366CC colspan=4 style="width: 400px" | <span style="color:white">'''系统中断、呼叫、錯误等軟硬体讯息'''</span> |
||
|- |
|- |
||
| bgcolor=#0033CC colspan=4 style="width: 400px" | <span style="color:white">'''核心(驅 |
| bgcolor=#0033CC colspan=4 style="width: 400px" | <span style="color:white">'''核心(驅动程式、行程、网路、内存管理等)'''</span> |
||
|- |
|- |
||
| bgcolor=#000000 colspan=4 style="width: 400px" | <span style="color:white">'''硬 |
| bgcolor=#000000 colspan=4 style="width: 400px" | <span style="color:white">'''硬体(处理器、内存、各种裝置)'''</span> |
||
|} |
|} |
||
另一方面,微軟 |
另一方面,微軟对于更强力的作业系统呼声的回应便是[[Windows NT]]于1993年的面世。 |
||
1983年 |
1983年开始微軟就想要为MS-DOS建构一个图形化的作业系统应用程式,称为Windows(有人说这是[[比尔·盖茨]]被苹果的Lisa电脑上市所刺激)。一开始Windows并不是一个作业系统,只是一个应用程式,其背景还是纯MS-DOS系统,这是因为当时的BIOS设计以及MS-DOS的架构不甚良好之故。在1990年代初,微軟与IBM的合作破裂,微軟从[[OS/2]](早期为命令列模式,后来成为一个技术很优秀但是曲高和寡的图形化作业系统)专案中抽身,并且在1993年7月27日推出[[Windows NT|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对于同一件服务的名称与呼叫方法差异甚大,它们一样可以无碍地实作于系统服务层上。在系统服务层之上的子系统,全都是使用者模式,因此可以避免使用者程式执行非法行动。 |
||
{| class="wikitable" style="width: 680px; text-align: center; font-size: 90%;{{Table center}}" |
{| class="wikitable" style="width: 680px; text-align: center; font-size: 90%;{{Table center}}" |
||
| colspan=7 style="width: 680px" | ''' |
| colspan=7 style="width: 680px" | '''简化版本的Windows NT抽象架构''' |
||
|- |
|- |
||
| rowspan=3 style="width: 80px" | 使用者<br />模式 |
| rowspan=3 style="width: 80px" | 使用者<br />模式 |
||
| rowspan=2 style="width: 100px" | [[OS/2]]<br /> |
| rowspan=2 style="width: 100px" | [[OS/2]]<br />应用程式 |
||
| colspan=2 style="width: 200px" | Win32<br /> |
| colspan=2 style="width: 200px" | Win32<br />应用程式 |
||
| style="width: 100px" | [[DOS]]<br />程式 |
| style="width: 100px" | [[DOS]]<br />程式 |
||
| style="width: 100px" | Win16<br /> |
| style="width: 100px" | Win16<br />应用程式 |
||
| rowspan=2 style="width: 100px" | [[POSIX]]<br /> |
| rowspan=2 style="width: 100px" | [[POSIX]]<br />应用程式 |
||
|- |
|- |
||
| style="width: 50px" | |
| style="width: 50px" | |
||
| style="width: 50px" bgcolor=#DEEEFF | 其他[[动态链接库|DLL函式 |
| style="width: 50px" bgcolor=#DEEEFF | 其他[[动态链接库|DLL函式库]] |
||
| bgcolor=#DEEEFF | DOS系 |
| bgcolor=#DEEEFF | DOS系统 |
||
| bgcolor=#DEEEFF | Windows模擬系 |
| bgcolor=#DEEEFF | Windows模擬系统 |
||
|- |
|- |
||
| bgcolor=#CFDFF2 | OS/2子系 |
| bgcolor=#CFDFF2 | OS/2子系统 |
||
| bgcolor=#CFDFF2 colspan=4 | Win32子系 |
| bgcolor=#CFDFF2 colspan=4 | Win32子系统 |
||
| bgcolor=#CFDFF2 | POSIX.1子系 |
| bgcolor=#CFDFF2 | POSIX.1子系统 |
||
|- |
|- |
||
| rowspan=4 style="width: 80px" | 核心<br />模式 |
| rowspan=4 style="width: 80px" | 核心<br />模式 |
||
| bgcolor=#B6C6D9 colspan=6 style="width: 400px" | 系 |
| bgcolor=#B6C6D9 colspan=6 style="width: 400px" | 系统服务层 |
||
|- |
|- |
||
| bgcolor=#0066ff | <span style="color: white;">''' |
| bgcolor=#0066ff | <span style="color: white;">'''输入输出管理<br />档案系统、网路系统'''</span> |
||
| bgcolor=#0066ff colspan=4 | <span style="color: white;">'''物件管理系 |
| bgcolor=#0066ff colspan=4 | <span style="color: white;">'''物件管理系统 / 安全管理系统 / 行程管理 / 物件间通讯管理 / 行程间通讯管理 / 虚擬记憶体管理<br /><br />微核心'''</span> |
||
| bgcolor=#0066ff | <span style="color: white;">''' |
| bgcolor=#0066ff | <span style="color: white;">'''视窗管理程式'''</span> |
||
|- |
|- |
||
| bgcolor=#0033ff | <span style="color:white;">'''驅 |
| bgcolor=#0033ff | <span style="color:white;">'''驅动程式'''</span> |
||
| bgcolor=#0033ff colspan=4 | <span style="color: white;">'''硬 |
| bgcolor=#0033ff colspan=4 | <span style="color: white;">'''硬体抽象层(HAL)'''</span> |
||
| bgcolor=#0033ff | <span style="color: white;">''' |
| bgcolor=#0033ff | <span style="color: white;">'''图形驅动'''</span> |
||
|- |
|- |
||
| bgcolor=#000000 colspan=6 style="width: 400px" | <span style="color: white;">'''硬 |
| bgcolor=#000000 colspan=6 style="width: 400px" | <span style="color: white;">'''硬体(处理器、记憶体、外部裝置等)'''</span> |
||
|} |
|} |
||
子系 |
子系统架构第一个实作的子系统群当然是以前的微軟系统。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年代早期,个人电脑的选择就已被侷限在[[Microsoft Windows|Windows]]家族、[[类Unix]]家族以及Linux上,而以Linux及Mac OS X为最主要的另类选择,直至今日。 |
|||
[[大型 |
[[大型机]]与[[嵌入式系统]]使用很多样化的作业系统。大型主机近期有许多开始支援[[Java]]及Linux以便共享其他平台的资源。嵌入式系统近期百家争鸣,从給[[Sensor Networks]]用的[[Berkeley Tiny OS]]到可以操作[[Microsoft Office]]的[[Windows CE]]都有。 |
||
==== 个人电脑 ==== |
==== 个人电脑 ==== |
||
个人电脑市场目前分为两大阵营,此两种架构分别有支持的作业系统: |
|||
* [[麦金塔电脑|Apple Macintosh]] - Mac OS X,Windows( |
* [[麦金塔电脑|Apple Macintosh]] - Mac OS X,Windows(仅Intel平台),Linux、BSD。 |
||
* [[IBM PC兼容机|IBM相容PC]] - Windows、Linux、BSD、Mac OS X(非正式支援)。 |
* [[IBM PC兼容机|IBM相容PC]] - Windows、Linux、BSD、Mac OS X(非正式支援)。 |
||
==== 大型 |
==== 大型电脑 ==== |
||
最早的操作系统是针对20世纪60年代的大型主结构开发的,由于对这些系统在软件方面做了巨大投资,因此原来的计算机厂商继续开发与原来操作系统相兼容的硬件与操作系统。这些早期的操作系统是现代操作系统的先驱。现在仍被支持的大型主机操作系统包括: |
最早的操作系统是针对20世纪60年代的大型主结构开发的,由于对这些系统在软件方面做了巨大投资,因此原来的计算机厂商继续开发与原来操作系统相兼容的硬件与操作系统。这些早期的操作系统是现代操作系统的先驱。现在仍被支持的大型主机操作系统包括: |
||
* [[MCP (Burroughs Large Systems)|Burroughs MCP]]-- [[Burroughs large systems|B5000]],1961 to [[Unisys]] Clearpath/MCP, present. |
* [[MCP (Burroughs Large Systems)|Burroughs MCP]]-- [[Burroughs large systems|B5000]],1961 to [[Unisys]] Clearpath/MCP, present. |
||
第188行: | 第188行: | ||
==== 嵌入式 ==== |
==== 嵌入式 ==== |
||
嵌入式系 |
嵌入式系统使用非常广泛的系统(如[[VxWorks]]、[[eCOS|eCos]]、[[Symbian OS]]及[[Palm OS]])以及某些功能缩減版本的Linux或者其他作业系统。某些情況下,OS指称的是一个内建了固定应用软件的巨大泛用程式。在许多最简单的嵌入式系统中,所谓的OS就是指其上唯一的应用程式。 |
||
==== |
==== 类Unix系统 ==== |
||
{{Main|类Unix}} |
{{Main|类Unix}} |
||
<imagemap> |
<imagemap> |
||
File:Unix history-simple.png|256px|thumb|[[Unix]]-{zh-hant:系 |
File:Unix history-simple.png|256px|thumb|[[Unix]]-{zh-hant:系统的演变;zh-hans:系统的演变}- |
||
default [[File:Unix history-simple.svg]] |
default [[File:Unix history-simple.svg]] |
||
</imagemap> |
</imagemap> |
||
[[File:KDE 4.png|缩略图|250px|[[KDE Software Compilation 4|KDE SC 4]]桌面]] |
[[File:KDE 4.png|缩略图|250px|[[KDE Software Compilation 4|KDE SC 4]]桌面]] |
||
所 |
所谓的'''类Unix'''家族指的是一族种类繁多的OS,此族包含了[[System V]]、[[BSD]]与[[Linux]]。由于Unix是[[The Open Group]]的注册商标,特指遵守此公司定义的行为的作业系统。而类Unix通常指的是比原先的Unix包含更多特征的OS。 |
||
类Unix系统可在非常多的处理器架构下执行,在[[服务器|伺服器]]系统上有很高的使用率,例如大专院校或工程应用的[[工作站]]。 |
|||
1991年,芬兰学生[[林纳斯·托瓦兹]]根据类Unix系统[[Minix]]编写并发布了[[Linux]]操作系统内核,其后在[[理查德·斯托曼]]的建议下以[[GNU通用公共许可证]]发布,成为[[自由软件 |
1991年,芬兰学生[[林纳斯·托瓦兹]]根据类Unix系统[[Minix]]编写并发布了[[Linux]]操作系统内核,其后在[[理查德·斯托曼]]的建议下以[[GNU通用公共许可证]]发布,成为[[自由软件]]Unix变种. Linux近来越来越受欢迎,它们也在个人桌面电脑市场上大有斬获,例如[[Ubuntu]]系统。 |
||
某些Unix |
某些Unix变种,例如[[惠普]]的[[HP-UX]]以及IBM的[[AIX]]仅设计用于自家的硬体产品上,而[[昇阳|SUN]]的[[Solaris]]可安裝于自家的硬体或[[x86]]电脑上。苹果电脑的[[Mac OS X]]是一个从[[NEXTSTEP|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 ==== |
==== 微軟Windows ==== |
||
{{Main|Microsoft Windows}} |
{{Main|Microsoft 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 architecture|MIPS]]与[[PowerPC]]架构上运行。 |
||
虽然由于人们对于开放原始碼作业系统兴趣的提升,Windows的市场佔有率有所下降,但是到2004年为止,Windows作业系统在世界范围内佔据了桌面作业系统90%的市场。<ref>[http://www.pcworld.com/news/article/0,aid,115823,00.asp ''Why Windows Won't Always Dominate - New devices will shrink Microsoft's OS market share, researcher predicts''] , David Legard, IDG News Service, Friday, April 23, 2004</ref> |
|||
Windows系 |
Windows系统也被用在低阶和中阶伺服器上,并且支援网頁服务的资料库服务等一些功能。最近微軟花费了很大研究与开发的经费用于使Windows拥有能运行企业的大型程式的能力。 |
||
Windows XP在2001年10月25日 |
Windows XP在2001年10月25日发布,2004年8月24日发布服务包2(Service Pack 2),2008年4月21日发布最新的服务包3(Service Pack 3)。 |
||
Windows XP的下一代 |
Windows XP的下一代为Windows Vista(开发代碼为Longhorn)于2007年1月30日发售<ref>{{en}}[http://www.microsoft.com/windowsvista/getready/default.mspx 微軟Vista作业系统官方网站公告] (2007年1月10日造訪)</ref>。[[Windows Vista]]增加了许多功能,尤其是系统的安全性和网路管理功能,并且其拥有介面华丽的[[Windows Aero|Aero Glass]]。但是整体而言,其在全球市场上的口碑卻并不是很好。其后继者[[Windows 7]]则是于2009年10月22日发售,[[Windows 7]]改善了[[Windows Vista]]为人詬病的效能问题,相较于[[Windows Vista]],在同样的硬体环境下,[[Windows 7]]的表现较Windows Vista为好。 |
||
Windows 8 |
Windows 8 于2012年10月26日发售,与Windows Phone 8共用核心,取消了开始按鈕,并使用了全新动态砖介面,并可使用Microsoft Store购买安裝App,但由于整体介面相较于前几版是很大的更改,以及为触控设计的介面,让不少鍵盘滑鼠使用者比较不习慣。微軟于隔年2013年10月18日发布了Windows 8.1,并加回了开始按鈕。 |
||
而最新的[[Windows 10]] |
而最新的[[Windows 10]]则是于2015年7月29日发售。而以微軟目前的规划,将 Windows 10 定义为一项服务,而不再是软件,故之后消费级桌面系统不会有新的名称,而是延续Windows 10,而每次大更新后就更改版本号,目前最新为20H2。 |
||
==== 苹果macOS ==== |
==== 苹果macOS ==== |
||
第232行: | 第232行: | ||
'''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,现行的最新的系统版本是[[macOS Big Sur]]。 |
'''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,现行的最新的系统版本是[[macOS Big Sur]]。 |
||
2020年9月14日, |
2020年9月14日,苹果公司发布最新的系统版本 [[macOS Big Sur]]。 |
||
==== Chrome OS ==== |
==== Chrome OS ==== |
||
第240行: | 第240行: | ||
==== 其他 ==== |
==== 其他 ==== |
||
大型主 |
大型主机以及[[嵌入式系统|嵌入式]]作业系统均与Unix或Windows家族关系不大,除了[[Android]],[[Windows Embedded Compact|Windows CE]]、[[Windows NT]]及[[Windows Embedded Standard|Windows XP Embedded]]是Windows的血亲产品,以及数种*BSD和嵌入式Linux套件为例外。 |
||
少 |
少数较旧的OS今日依然在一些需要稳定性的市场中活跃,例如IBM的[[OS/2]]{{NoteTag|OS/2曾经是Windows系统的勁敵,且[[比尔·盖茨|比尔盖茲]]直到最近还是这样认为,请看一段专訪内容(摘录自[http://news.xinhuanet.com/world/2003-07/01/content_947360.htm 今日美国报]): |
||
<br />'''盖茨谈Linux''' |
<br />'''盖茨谈Linux''' |
||
<br /> |
<br /> |
||
第253行: | 第253行: | ||
答:你在开玩笑吗?让我们认真谈谈吧。IBM当时是我们规模的15倍,你找不出一家不用OS/2的银行。......}}、[[BeOS]]以及[[XTS-400]]。 |
答:你在开玩笑吗?让我们认真谈谈吧。IBM当时是我们规模的15倍,你找不出一家不用OS/2的银行。......}}、[[BeOS]]以及[[XTS-400]]。 |
||
在[[电子商务| |
在[[电子商务|达康时代]]狂潮过后,如[[AmigaOS]]与[[RISC OS]]等少数人使用的OS依然持续建立,以满足狂热的爱好者社群与特殊专业使用者。 |
||
优秀的操作系统必定要具备能让各种能力级别的用户满足各种需求的工具包可视化的高效简便程序环境,以程序来创建程序,就如立法的法律指导规范新的法案的创建。这其实是操作系统所隐含的一部分,决定了可以有多强的扩充能力。比如,某个操作系统有对应的开发者工具包集成环境程序并且是个可视化的,还能让能力不太高的人一看能懂的,用于修改某个声音合成器包含频谱显示,可要是操作系统本身不支持也没有提供可用的工具程序,就会变得很繁琐,很可能为了达到这个目标,开发者就要预备好各种相关的工具程序,甚至自己来编写一系列相关的工具程序创建专门的工具包,最后还要检查代码。若是有人想通过音乐来生成五线谱,要对类似标记语言的五线谱规则对应一下,对各种音色,音准采集并总结出一整套规律,通过声音识别可以识别出乐器的类别等,进而标出乐符完成从声音到乐谱的转换并生成。可是对人声却又更为复杂也不必要如此。若是需要用声音的波形图重现声音,没有相关的工具集是相当难实现,另外只有使用同一套声音的波形绘制规则的所生成的波形图用来再现的声音才是原来的声音。 |
优秀的操作系统必定要具备能让各种能力级别的用户满足各种需求的工具包可视化的高效简便程序环境,以程序来创建程序,就如立法的法律指导规范新的法案的创建。这其实是操作系统所隐含的一部分,决定了可以有多强的扩充能力。比如,某个操作系统有对应的开发者工具包集成环境程序并且是个可视化的,还能让能力不太高的人一看能懂的,用于修改某个声音合成器包含频谱显示,可要是操作系统本身不支持也没有提供可用的工具程序,就会变得很繁琐,很可能为了达到这个目标,开发者就要预备好各种相关的工具程序,甚至自己来编写一系列相关的工具程序创建专门的工具包,最后还要检查代码。若是有人想通过音乐来生成五线谱,要对类似标记语言的五线谱规则对应一下,对各种音色,音准采集并总结出一整套规律,通过声音识别可以识别出乐器的类别等,进而标出乐符完成从声音到乐谱的转换并生成。可是对人声却又更为复杂也不必要如此。若是需要用声音的波形图重现声音,没有相关的工具集是相当难实现,另外只有使用同一套声音的波形绘制规则的所生成的波形图用来再现的声音才是原来的声音。 |
||
第265行: | 第265行: | ||
通过图像识别和声音识别来进行信息搜索。 |
通过图像识别和声音识别来进行信息搜索。 |
||
能够满足不同需求所要求的精确程度对时间的精细划分,以及尺度细分可以互联,同步,协调原本必 |
能够满足不同需求所要求的精确程度对时间的精细划分,以及尺度细分可以互联,同步,协调原本必须由多个人协同合作才能完成的随时需要调整并相互同步的操控作业,这就必须有即时消息传送显示,可视化的用于协调同步计划任务的配置脚本,以及执行这样计划任务的完整组件。 |
||
=== 未 |
=== 未来 === |
||
研究 |
研究与建立未来的作业系统依旧进行著。作业系统朝提供更省电、网路化、易用、华丽的使用者介面的方向来改进。类UNIX OS通过和[[桌面环境]]开发者协作,正努力让自己改进使用环境。 |
||
eyeOS是一套基 |
eyeOS是一套基于PHP实现的半开源模擬云端运算操作系统,但其实质只是在网路浏览器中提供一种类似无界限的类独立操作系统,其并非于任何类似虚擬化中实现的真正电脑操作系统,能提供诸如Word、PPT、Excel的在线处理功能… |
||
[[Hurd|GNU Hurd]]是一 |
[[Hurd|GNU Hurd]]是一个以完全相容Unix并加强许多功能为目标的微核心架构。微軟[[Singularity]]是一个奠基于[[.NET框架|.Net]]并以建立较佳[[记憶体保护]]机制为目标的研究计划。 |
||
== 功能 == |
== 功能 == |
||
第287行: | 第287行: | ||
=== 进程管理 === |
=== 进程管理 === |
||
{{Main|进程| |
{{Main|进程|执行緒}} |
||
不管是常 |
不管是常驻程式或者应用程式,他们都以[[行程]]为标準执行单位。当年运用[[冯·诺伊曼结构]]建造电脑时,每个[[中央处理器]]最多只能同时执行一个行程。早期的操作系统(例如DOS)也不允许任何程式打破这个限制,且DOS同时只有执行一个进程(虽然DOS自己宣称他们拥有[[终止并等待驻留]]能力,可以部分且艱难地解決这问题)。现代的作业系统,即使只拥有一个CPU,也可以利用[[多进程]](multitask)功能同时执行多个进程。'''进程管理'''指的是操作系统调整多个行程的功能。 |
||
由 |
由于大部分的电脑只包含一颗中央处理器,在单核心(Core)的情況下多行程只是简单迅速地切换各行程,让每个行程都能够执行,在多核心或多处理器的情況下,所有行程透过许多[[并行计算|协同技术]]在各处理器或核心上转换。越多行程同时执行,每个行程能分配到的时间比率就越小。很多操作系统在遇到此问题时会出现诸如音效断续或滑鼠跳格的情況(称做颠簸(Thrashing),一种操作系统只能不停执行自己的管理程式并耗尽系统资源的狀态,其他使用者或硬体的程式皆无法执行。行程管理通常实踐了'''分时'''的概念,大部分的操作系统可以利用指定不同的特权等级(priority),为每个行程改变所佔的分时比例。特权越高的行程,执行优先顺序越高,单位时间内佔的比例也越高。互动式操作系统也提供某种程度的回饋机制,让直接与使用者互动的行程拥有较高的特权值。 |
||
除了行程管理之外,操作系统尚有 |
除了行程管理之外,操作系统尚有担负起[[行程间通讯]](IPC)、行程异常终止处理以及[[死锁]](Dead Lock)侦测及处理等较为艱深的问题。 |
||
在行程之下尚有[[多线程| |
在行程之下尚有[[多线程|执行緒]]的问题,但是大部分的操作系统并不会处理执行緒所遭遇的问题,通常操作系统仅止于提供一组API让使用者自行操作或透过[[虚擬机器]]的管理机制控制执行緒之间的互动。 |
||
=== 内存管理 === |
=== 内存管理 === |
||
根 |
根据'''帕金森定律''':“'''你给程序再多内存,程序也会想尽办法耗光'''”,因此[[程序员|程式设计师]]通常希望系统給他'''无限量'''且'''无限快'''的记憶体。大部分的现代电脑记憶体架构都是[[记憶体阶层|阶层式]]的,最快且数量最少的[[寄存器|暫存器]]为首,然后是[[高速缓存|快取]]、[[随机存取存储器|记憶体]]以及最慢的[[硬盘驱动器|磁碟储存裝置]]。而操作系统的'''记憶体管理'''提供寻找可用的记憶空间、配置与释放记憶空间以及交换记憶体和低速储存裝置的内含物……等功能。此类又被称做'''虚擬记憶体管理'''的功能大幅增加每个行程可获得的记憶空间(通常是4[[Gigabyte|GB]],即使实际上RAM的数量远少于这数目)。然而这也带来了微幅降低执行效率的缺点,严重时甚至也会导致行程崩潰。 |
||
记憶体管理的另一个重点活动就是藉由CPU的帮助来管理虚擬位置。如果同时有许多行程储存于记憶裝置上,作业系统必须防止它们互相干擾对方的记憶体内容(除非透过某些协定在可控制的范围下操作,并限制可存取的记憶体范围)。分割记憶体空间可以达成目标。每个行程只会看到整个记憶体空间(从0到记憶体空间的最大上限)被配置給它自己(当然,有些位置被操作系统保留而禁止存取)。CPU事先存了几个表以比对虚擬位置与实际记憶体位置,这种方法称为[[分頁]]配置。 |
|||
藉由 |
藉由对每个行程产生分开独立的位置空间,操作系统也可以轻易地一次释放某行程所佔据的所有记憶体。如果这个行程不释放记憶体,操作系统可以结束行程并将记憶体自动释放。 |
||
=== 磁盘与文件系统 === |
=== 磁盘与文件系统 === |
||
{{Main|文件系统}} |
{{Main|文件系统}} |
||
所 |
所谓的'''档案系统''',通常指称管理磁碟资料的系统,可将资料以目录或档案的型式储存。每个档案系统都有自己的特殊格式与功能,例如日志管理或不需磁碟重整。 |
||
操作系统 |
操作系统拥有许多种内建档案系统。例如[[Linux]]拥有非常广泛的内建档案系统,如[[ext2]]、[[ext3]]、[[ext4]]、[[ReiserFS]]、[[Reiser4]]、[[Global File System|GFS]]、[[GFS2]]、[[OCFS]]、[[OCFS2]]、[[NILFS]]与[[Google档案系统]]。Linux也支援非原生档案系统,例如[[XFS]]、[[JFS (文件系统)|JFS]]、[[FAT]]家族与[[NTFS]]。另一方面,[[Microsoft Windows|Windows]]能支援的档案系统衹有FAT12、FAT16、FAT32、EXFAT与NTFS。NTFS系统是Windows上最可靠与最有效率的档案系统。其他的FAT家族都比NTFS老旧,且对于档案长度与分割磁碟能力都有很大限制,因此造成很多问题。而UNIX的档案系统多半是[[Unix文件系统|UFS]],而UNIX中的一个分支[[Solaris]]最近则开始支援一种新式的[[ZFS]]。 |
||
大部份上述的 |
大部份上述的档案系统都有两种建置方法。系统可以以[[日志档案系统|日志式]]或非日志式建置。日志式档案系统可以以较安全的手法执行系统恢复。如果一个沒有日志式建置的档案系统遇上突然的系统崩潰,导致资料建立在一半时停顿,则此系统需要特殊的档案系统检查工具才能复原;日志式则可自动恢复。[[微软]]的NTFS与Linux的ext3、ext4、reiserFS与JFS都是日志式档案系统。 |
||
每 |
每个档案系统都实作相似的目录/子目录架构,但在相似之下也有许多不同点。微軟使用“'''\'''”符号以建立目录/子目录关系,且档案名称忽略其大小写差异;UNIX系统则是以“'''/'''”建立目录架构,且档案名称大小写有差异。(其实这是給系统调用的,"/"或"\"并不实际存在硬碟) |
||
=== 网络 === |
=== 网络 === |
||
许多现代的操作系统都具备操作主流网路通讯协定[[TCP/IP协议|TCP/IP]]的能力。也就是说这样的作业系统可以进入网路世界,并且与其他系统分享诸如档案、印表机与扫描器等资源。 |
|||
许多操作系统也支援多个过去网路启蒙时代的各路网路通讯协定,例如[[IBM]]建立的[[IBM系统网路架构|系统网路架构]]、[[迪吉多|DEC]]在它所生产的系统所设定的{{link-en|DECnet|DECnet}}架构与微軟为Windows制作的特殊通讯协定。还有许多为了特殊功能而研发的通讯协定,例如可以在网路上提供档案存取功能的[[网络文件系统|NFS]]系统。现今大量用于影音串流(Streaming media)及游戏讯息传送的[[用户数据报协议|UDP]]协定等。 |
|||
=== 安全 === |
=== 安全 === |
||
大多 |
大多数操作系统都含有某种程度的[[信息安全|资讯安全]]机制。资讯安全机制主要基于两大理念: |
||
* 操作系统提供外界直接或 |
* 操作系统提供外界直接或间接存取数种资源的管道,例如本地端磁碟机的档案、受保护的特权[[系统呼叫]]、使用者的隱私资料与系统执行的程式所提供的服务。 |
||
* 操作系统有能力[[身份验证| |
* 操作系统有能力[[身份验证|认证]]资源存取的请求。允许通过认证的请求并拒绝无法通过的非法请求,并将适当的权力[[授权]]({{link-en|Authorization|授权}})給此请求。有些系统的认证机制仅简略地把资源分为特权或非特权,且每个请求都有独特的身份辨识号碼,例如使用者名称。资源请求通常分成两大种类: |
||
** |
** 内部来源:通常是一个正在执行的程式发出的资源请求。在某些系统上,一个程式一旦可执行就可做任何事情(例如[[DOS]]时代的[[病毒]]),但通常操作系统会給程式一个识别代号,并且在此程式发出请求时,检查其代号与所需资源的存取权限关系。 |
||
** 外部 |
** 外部来源:从'''非本地端电脑'''而来的资源请求,例如远端登入本机电脑或某些网路连线请求([[文件传输协议|FTP]]或[[超文本传输协议|HTTP]])。为了识别这些外部请求,系统也许会对此请求提出认证要求。通常是请求输入使用者名称以及相对应的密碼。系统有时也会应用诸如磁卡或生物识别资料的它种认证方法。在某些例子,例如网路通讯上,通常不需通过认证即可存取资源(例如匿名存取的FTP伺服器或[[点对点技术|P2P]]服务)。 |
||
除了允 |
除了允许/拒绝形式的安全机制,一个高安全等级的系统也会提供记录选项,允许记录各种请求对资源存取的行为(例如“誰曾经读了这个档案?”)。 |
||
肇因 |
肇因于军方与商业组织将敏感资料记录在电脑上,安全机制在操作系统历史上是一个被长久关注与討论的问题。美国[[美国国防部|国防部]](DoD)便创立了'''《[[可信赖之计算机系统评鉴程序]]》'''({{link-en|TCSEC|TCSEC}}),此手册确立了评鉴安全机制成效的基本原则。这对操作系统作者来说非常重要,因为TCSEC是用于评鉴、分类与选拔出用于处理、储存与获取敏感或机密资料的电脑系统的标準程序。 |
||
==== |
==== 内部通讯安全 ==== |
||
内部资讯安全可视为防止正在执行的程式任意存取系统资源的手段。大多操作系统让普通程式可直接操作电脑的[[中央处理器|CPU]],所以产生了一些问题,例如怎样把可如操作系统一样处理事务、执行同样特殊指令的程式强迫停止,畢竟在此情境下,操作系统也只是另一个平起平坐的程式。为通用操作系统所生产的CPU通常于硬体层级上实踐了一定程度的特殊指令保护概念。通常特权层级较低的程式想要执行某些特殊指令时会被阻断,例如直接存取像是硬碟之类的外部裝置。因此,程式必须得经由询问操作系统,让操作系统执行特殊指令来存取磁碟。因此操作系统就有机会检查此程式的识别身份,并依此接受或拒绝它的请求。 |
|||
在不支援特殊指令架 |
在不支援特殊指令架构的硬体上,另一个也是唯一的保护方法,则是操作系统并不直接利用CPU执行使用者的程式,而是藉由[[模擬器|模擬]]一个CPU或提供一[[P-code机]]系统([[伪代码|偽代碼]]执行机),像是[[Java]]一样让程式在[[虚擬机器]]上执行。 |
||
内部安全机制在多使用者电脑上特别重要:它允许每个系统使用者拥有自己个人的档案与目录,且其他使用者不能任意存取或删除。因为任何程式都可能绕过操作系统的监控,更有可能绕过側录程式的监控,拥有强制力的内部安全机制在側录启动时也非常重要。 |
|||
==== 外部通讯安全 ==== |
==== 外部通讯安全 ==== |
||
通常一 |
通常一个作业系统会为其他网路上的电脑或使用者提供(主持)各种服务。这些服务通常藉由[[tCP/UDP端口列表|端口]]或操作系统网路地址后的数字存取点提供。通常此服务包括提供档案共享(NFS)、列印共享、[[电子邮件]]、[[网站|网頁服务]]与档案传输协定([[文件传输协议|FTP]])。外部资讯安全的最前线,是诸如[[防火墙]]等的硬体裝置。在操作系统内部也常设置许多种类的软件防火墙。软件防火墙可设定接受或拒绝在操作系统上执行的服务与外界的连线。因此任何人都可以安裝并执行某些不安全的网路服务,例如[[Telnet]]或FTP,并且设定除了某些自用通道之外阻擋其他所有连线,以达成防堵不良连线的机制。 |
||
=== -{A|zh-hans:用户; zh-hant:使用者}-界面 === |
=== -{A|zh-hans:用户; zh-hant:使用者}-界面 === |
||
今日大部分的操作系统都包含[[图形用户界面]](GUI)。有 |
今日大部分的操作系统都包含[[图形用户界面]](GUI)。有几类较旧的操作系统将图形化使用者介面与[[核心]]緊密结合,例如最早的Windows与[[Mac OS]]实作产品。此种手法可提供较快速的图形回应能力,且实作时不需切割模组因而较为省工,但是会有强烈副作用,例如图形系统崩潰将导致整个系统崩潰,例如[[蓝屏死机|-{A|zh-cn:蓝屏死机; zh-tw:蓝白当机画面; zh-hk:BSOD}-]]。许多近代的操作系统已[[模组 (程式设计)|模组化]],将图形介面的子系统与核心分开(已知Linux与Mac OS X原先就是如此设计,而某些扩充版本的Windows终于也采用此手法)。 |
||
许多操作系统允许使用者安裝或创造任何他们喜欢的图形用户界面<ref>各项多采多姿的KDE/GNOME[http://freesf.tw/modules/xcgal/thumbnails.php?album=lastup&cat=0&page=1 桌面快照]{{dead link|date=2017年12月 |bot=InternetArchiveBot |fix-attempted=yes }}。</ref>。大部分的Unix与Unix衍生系统(BSD、Linux与[[Minix]])通常会安裝[[X Window系统|X Window]]系统配合[[GNOME]]或[[KDE]]桌面环境。而某些操作系统就沒有这么弹性的图形化使用者介面,例如Windows。这类的操作系统只能透过外加的程式来改变其图形化使用者介面,甚至根本只能改变诸如选单风格或颜色配置等部分{{Citation needed|time=2007-07-16T11:03:06Z}}。 |
|||
图形化使用者介面与时并进,例如Windows在每次新版本上市时就会将其图形化使用者介面改头换面,而Mac OS的GUI也在Mac OS X上市时出现重大转变。 |
|||
=== 驱动程序 === |
=== 驱动程序 === |
||
{{Main|驱动程序}} |
{{Main|驱动程序}} |
||
所 |
所谓的'''驅动程式'''(Device driver)是指某类设计来与硬体互动的电脑软件。通常是一设计完善的裝置互动介面,利用与此硬体连接的电脑汇排流或通讯子系统,提供对此裝置下令与接收资讯的功能;以及最终目的,将讯息提供給操作系统或应用程式。驅动程式是针对特定硬体与特定操作系统设计的软件,通常以作业系统核心模组、应用软件包或普通电脑程式的形式在操作系统[[内核|核心]]底下执行,以达到通透顺暢地与硬体互动的效果,且提供硬体在处理非同步的时间依赖性介面(asynchronous time-dependent hardware interface)时所需的中断处理常式。 |
||
设计驅动程式的主要目的在于操作'''抽象化''',任何硬体模组,即使是同一类的裝置,在硬体设计面上也有巨大差异。厂商推出的较新模组通常更可靠更有效率,控制方法也会有所不同。电脑与其操作系统每每不能預期那些现有与新裝置的变异之处,因此无法知道其操作方法。为解決此问题操作系统通常会'''主动制订'''每种裝置该有的操作方式,而驅动程式功能则是将那些操作系统制订的行为描述,转译为可让裝置瞭解的自订操作手法。 |
|||
理 |
理论上适合的驅动程式一旦安裝,相对应的新裝置就可以无误地执行。此新驅动程式可以让此裝置完美地切合在操作系统中,让使用者察觉不到这是操作系统原本沒有的功能。 |
||
== 结构 == |
== 结构 == |
||
第361行: | 第361行: | ||
* '''驱动程序''' - 最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。 |
* '''驱动程序''' - 最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。 |
||
* '''内核''' - 操作系统之最核心部分,通常运行在最高特权级,负责提供基础性、结构性的功能。 |
* '''内核''' - 操作系统之最核心部分,通常运行在最高特权级,负责提供基础性、结构性的功能。 |
||
* '''支承库''' - (亦作“'''接口库'''”)是一系列特殊的程序库,它们职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口([[应用程序接口|API]]),是最靠近应用程序的部分。例如,[[GNU C函式 |
* '''支承库''' - (亦作“'''接口库'''”)是一系列特殊的程序库,它们职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口([[应用程序接口|API]]),是最靠近应用程序的部分。例如,[[GNU C函式库|GNU C运行期库]]就属于此类,它把各种操作系统的内部编程接口包装成ANSI C和[[POSIX]]编程接口的形式。 |
||
* '''外围''' - 所谓外围,是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及[[UNIX]]/[[Linux]]中各种守护进程都通常被划归此列。 |
* '''外围''' - 所谓外围,是指操作系统中除以上三类以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中,大部分系统服务,以及[[UNIX]]/[[Linux]]中各种守护进程都通常被划归此列。 |
||
当然,本节所提出的四部结构观也绝非放之四海皆准。例如,在早期的微软视窗操作系统中,各部分耦合程度很深,难以区分彼此。而在使用[[Exokernel|外核]]结构的操作系统中,则根本没有驱动程序的概念。因而,本节的讨论只适用于一般情况,具体特例需具体分析。 |
当然,本节所提出的四部结构观也绝非放之四海皆准。例如,在早期的微软视窗操作系统中,各部分耦合程度很深,难以区分彼此。而在使用[[Exokernel|外核]]结构的操作系统中,则根本没有驱动程序的概念。因而,本节的讨论只适用于一般情况,具体特例需具体分析。 |
||
操作系统中四大部分的不同布局,也就形成了几种整体结构的分野。常见的结构包括:简单结构、层结构、微内核结构、垂直结构、和[[ |
操作系统中四大部分的不同布局,也就形成了几种整体结构的分野。常见的结构包括:简单结构、层结构、微内核结构、垂直结构、和[[虚擬机器|虚拟机]]结构。<!-- |
||
自 |
自从2004年以来沒有变动,且不知其原文来源,无法翻译,故凍结 |
||
===简单结构=== |
===简单结构=== |
||
第386行: | 第386行: | ||
== 分类 == |
== 分类 == |
||
操作系统的分类没有一个单一的标准,可以根据工作方式分为[[批处理任务|批处理操作系统]]、[[分 |
操作系统的分类没有一个单一的标准,可以根据工作方式分为[[批处理任务|批处理操作系统]]、[[分时系统|分时操作系统]]、[[rTOS|实时操作系统]]、[[网络操作系统]]和[[分布式操作系统]]等;根据架构可以分为[[单内核操作系统]]等;根据运行的环境,可以分为桌面操作系统,[[嵌入式操作系统]]等;根据指令的长度分为8bit, 16bit, 32bit, [[64位操作系统|64bit]]的操作系统。 |
||
=== 内核结构 === |
=== 内核结构 === |
||
第406行: | 第406行: | ||
'''通用操作系统'''是面向一般没有特定应用需求的操作系统。由于没有特定的应用需求,通用操作系统为了适应更广泛的应用,需要支持更多的硬件与软件,需要针对所有的用户体验,对系统进行更新。通用操作系统是一个工程量繁重的操作系统。 |
'''通用操作系统'''是面向一般没有特定应用需求的操作系统。由于没有特定的应用需求,通用操作系统为了适应更广泛的应用,需要支持更多的硬件与软件,需要针对所有的用户体验,对系统进行更新。通用操作系统是一个工程量繁重的操作系统。 |
||
=== -{zh-hans:实时;zh-hant:即 |
=== -{zh-hans:实时;zh-hant:即时;}-与非-{zh-hans:实时;zh-hant:即时;}- === |
||
“[[rTOS|-{zh-hans:实时操作系统;zh-hant:即时作业系统;}-]]”(Real Time OS)泛指所有据有一定实时资源调度以及通讯能力的操作系统。而所谓“-{zh-hans:实时;zh-hant:即时;}-”,不同语境中往往有着非常不同的意义。某些时候仅仅用作“高性能”的同义词。但在操作系统理论中“-{zh-hans:实时;zh-hant:即时;}-性”所指的通常是特定操作所消耗的时间(以及空间)的上限是可预知的。比如,如果说某个操作系统提供实时内存分配操作,那也就是说一个内存分配操作所用时间(及空间)无论如何也不会超出操作系统所承诺的上限。-{zh-hans:实时;zh-hant:即时;}-性在某些领域非常重要,比如在工业控制、医疗器材、影音频合成、以及军事领域,-{zh-hans:实时;zh-hant:即时;}-性都是无可或缺的特性。 |
|||
常用-{zh-hans:实时;zh-hant:即 |
常用-{zh-hans:实时;zh-hant:即时;}-操作系统有[[QNX]]、[[VxWorks]]、[[RTLinux]]等等,而[[Linux]]、多数[[UNIX]]、以及多数[[Microsoft Windows|Windows]]家族成员等都属于非实时操作系统。操作系统整体的-{zh-hans:实时;zh-hant:即时;}-性通常依仗内核的-{zh-hans:实时;zh-hant:即时;}-能力,但有时也可在非-{zh-hans:实时;zh-hant:即时;}-内核上建立-{zh-hans:实时;zh-hant:即时;}-操作系统,很多在Windows上建立的-{zh-hans:实时;zh-hant:即时;}-操作系统就属于此类。 |
||
在[[POSIX]]标准中专有一系用于规范-{zh-hans:实时;zh-hant:即 |
在[[POSIX]]标准中专有一系用于规范-{zh-hans:实时;zh-hant:即时;}-操作系统的API,其中包括POSIX.4、POSIX.4a、POSIX.4b(合称POSIX.4)以及POSIX.13等等。符合POSIX.4的操作系统通常被认可为-{zh-hans:实时;zh-hant:即时;}-操作系统(但-{zh-hans:实时;zh-hant:即时;}-操作系统并不需要符合POSIX.4标准)。 |
||
=== 8位、16位、32位、64位、128位 === |
=== 8位、16位、32位、64位、128位 === |
||
所 |
所谓8位、16位、32位、64位、128位等术语有时指汇流排宽度,有时指指令宽度(在定长指令集中),而在作业系统理论中主要是指记憶体定址的宽度。如果记憶体的定址宽度是16位,那么每一个记憶体地址可以用16个二进位位来表示,也就是说可以在64KB的范围内定址。同样道理32位的宽度对应4GB的定址范围,64位的宽度对应16 Exabyte的定址范围。记憶体定址范围并非仅仅是对作业系统而言的,其他类型的軟件的设计有时也会被定址范围而影响。但是在作业系统的设计与实现中,定址范围卻有着更为重要的意义。 |
||
在早期的16位作 |
在早期的16位作业系统中,由于64KB的定址范围太小,大都都采用“段”加“线性地址”的二维平面地址空间的设计。分配记憶体时通常需要考慮“段置换”的问题,同时,应用程序所能够使用的地址空间也往往有比较小的上限。 |
||
在32位作 |
在32位作业系统中,4GB的定址范围对于一般应用程序来说是綽綽有餘的,因而,通常使用一维的线性地址空间,而不使用“段”。 |
||
== 注释 == |
== 注释 == |
||
第449行: | 第449行: | ||
|location = Hoboken, NJ |
|location = Hoboken, NJ |
||
|ISBN = 978-0-470-12872-5 |
|ISBN = 978-0-470-12872-5 |
||
}}(俗 |
}}(俗称“恐龙书”,OS教科书“圣经”) |
||
* {{cite book |
* {{cite book |
||
|last = Tanenbaum |
|last = Tanenbaum |
||
第459行: | 第459行: | ||
|location = Upper Saddle River, N.J. |
|location = Upper Saddle River, N.J. |
||
|ISBN = 978-0-13-142938-3 |
|ISBN = 978-0-13-142938-3 |
||
}}(Linux由此 |
}}(Linux由此书而启发,可惜新版本将实作内容移除) |
||
* {{cite book |
* {{cite book |
||
|last = Stallings |
|last = Stallings |
||
第472行: | 第472行: | ||
== 参閱 == |
== 参閱 == |
||
{{div col|2}} |
{{div col|2}} |
||
* [[电子计算机| |
* [[电子计算机|计算机]] |
||
* [[内核|操作系统内核]] |
* [[内核|操作系统内核]] |
||
* [[rTOS|实时操作系统]]-[[分时系统]]-[[多任务]]-[[嵌入式系统]]-[[单一用户]]-[[多用户]] |
* [[rTOS|实时操作系统]]-[[分时系统]]-[[多任务]]-[[嵌入式系统]]-[[单一用户]]-[[多用户]] |
||
第496行: | 第496行: | ||
{{div col end}} |
{{div col end}} |
||
== 外部 |
== 外部链接 == |
||
{{div col|2}} |
{{div col|2}} |
||
* {{en}} [http://www.osdata.com/kind/history.htm OS的历史] |
* {{en}} [http://www.osdata.com/kind/history.htm OS的历史] |
||
* {{en}} [https://web.archive.org/web/20061206002850/http://www.iu.hio.no/~mark/os/os.html 简略OS介绍的教育网站....] |
* {{en}} [https://web.archive.org/web/20061206002850/http://www.iu.hio.no/~mark/os/os.html 简略OS介绍的教育网站....] |
||
* {{en}} [https://web.archive.org/web/20190202192615/https://www.operating-system.org/ OSDP,'''所有'''作业系 |
* {{en}} [https://web.archive.org/web/20190202192615/https://www.operating-system.org/ OSDP,'''所有'''作业系统的文件网站] |
||
* {{en}} [http://www.levenez.com/unix/ Unix OS家族的 |
* {{en}} [http://www.levenez.com/unix/ Unix OS家族的历史树] |
||
* {{en}} [http://www.levenez.com/windows/ Windows的 |
* {{en}} [http://www.levenez.com/windows/ Windows的历史] |
||
* {{en}} [http://tldp.org/LDP/tlk/tlk.html TLDP,Linux核心 |
* {{en}} [http://tldp.org/LDP/tlk/tlk.html TLDP,Linux核心彻底讲解,适用于想要彻底了解OS核心结构者] |
||
* {{De icon}} [http://www.kreissl.info/diggs/bs_inhalt.php 作 |
* {{De icon}} [http://www.kreissl.info/diggs/bs_inhalt.php 作业系统原理介紹] |
||
{{div col end}} |
{{div col end}} |
||
{{-}} |
{{-}} |