添加的内容 删除的内容
(我来啦, 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),…) |
小 (机器人:清理不当的来源、移除无用的模板参数) |
||
(未显示2个用户的4个中间版本) | |||
第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||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语言|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通用公共许可证]]发布,成为[[自由软件]]Unix |
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}} [ |
* {{en}} [http://www.iu.hio.no/~mark/os/os.html 简略OS介绍的教育网站....] |
||
* {{en}} [ |
* {{en}} [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}} |
||
{{-}} |
{{-}} |