- 鴻蒙操作系統設計原理與架構
- 李毅 任革林
- 7055字
- 2024-07-24 11:18:07
1.2 操作系統的發展史
從某種意義上說,操作系統的發展史就是計算機硬件和軟件的發展史,它的發展與計算機硬件體系結構、軟件技術的發展密不可分。特別是幾次產業浪潮,極大地促進了操作系統的快速發展和普及。
ENIAC(Electronic Numerical Integrator And Computer,電子數字積分計算機)被認為是世界上第一臺通用計算機。它基于二進制的真空管技術,可編程并執行復雜的操作序列(操作序列中可以包含循環、分支和子程序)。實際上,早期的計算機是沒有操作系統的,經過培訓的計算機操作員通過記錄程序和數據的卡片來操作機器,這通常需要花費幾個星期的時間。隨著硬件和用戶程序越來越復雜,對計算機的操作變得更加復雜。后來,用每個程序都需要的輸入和輸出等公共操作組成了統一的代碼庫,這也被認為是操作系統的雛形。1956年,美國通用汽車公司和北美航空公司推出世界上第一個可用的操作系統GM-NAA I/O,在隨后幾十年間,操作系統跟隨計算機技術的蓬勃發展而不斷演進,多次推動信息產業浪潮的發展,如圖1-1所示。
1. 第一代計算機階段(1945—1955年):真空管
在這個階段,匯編語言還沒有出現,所有的程序設計都用機器語言直接操控硬件,還沒有形成操作系統的概念。程序通過打孔的形式被記錄在卡片上,計算機通過讀取這些卡片來處理計算任務,輸出的數據也通過卡片呈現。對于一些復雜的任務,卡片的數量高達數百萬張,可以想象,操作第一代計算機是一件非常費時費力的事情。

圖1-1 操作系統與產業浪潮的相互促進
2. 第二代計算機階段(1956—1965年):晶體管
晶體管的發明使計算機的可靠性獲得了極大的提升,計算機第一次可以做到長時間無故障運行。1957年,IBM公司開發出Fortran語言,它是世界上第一個被正式采用并流傳至今的高級編程語言,我們常說的編譯、鏈接、函數庫等計算機基礎概念在這個階段已經被提出并實現。程序員負責寫程序,編碼員負責在卡片上打孔,操作員負責把卡片輸入計算機。為了減少計算機輸入和輸出時間,工程師們設計出一種用于專門處理卡片輸入和輸出且造價較低的計算機。它的處理思路是先用一臺計算機從卡片中讀取數據輸入磁帶;然后操作員通過一個批處理系統讀取磁帶中要處理的任務,并運行該任務;任務完成后將結果輸出到另一個磁帶中;接下來讀取并運行下一個任務、輸出任務結果,如此循環往復。這里提到的批處理系統就是操作系統的雛形,然而它還不是真正意義上的操作系統。
批處理系統的主要設計思想濃縮進了被稱為監控程序(Monitor Program)的軟件中。批處理系統的工作過程如下。
第1步,計算機的控制權由監控程序掌握。
第2步,監控程序從輸入設備中讀取一個任務,然后把任務放置在用戶程序區域,并把控制權交給用戶程序。
第3步,執行用戶程序,當用戶程序執行完成后,監控程序再次獲取計算機的控制權,返回第2步執行下一個任務。
相比操作員而言,監控程序可以“無等待”地讀取任務、執行任務,再讀取任務、執行任務,計算機的利用率得到有效提升。
看到這里,也許您會心存疑問:當用戶程序運行完成后,監控程序通過什么可以再次獲取計算機的控制權?如果用戶程序是一個惡意程序或存在bug,長時間無法運行完成,或者不主動釋放控制權,監控程序如何才能獲取控制權?
實際上,僅靠軟件本身是無法確保監控程序總是可以獲取控制權的。在計算機的世界里,當軟件無法解決問題時,我們還可以依靠硬件來解決,操作系統更需要硬件的幫助。在第二代計算機階段,計算機硬件廠商為操作系統提供如下重要功能。
內存保護(Memory Protection):監控程序的內存空間受硬件保護,一旦檢測到用戶程序試圖更改監控程序的內存空間——不管是有意的還是無意的,CPU的控制權直接轉移給監控程序。內存保護一般采用內存分段(Segmentation)的方式,物理內存被系統分割成許多小的分段,操作系統對需要保護的分段進行特殊標記。
定時器(Timer):用戶程序接管控制權后,定時器會自動啟動。如果定時器時間到了而用戶程序仍未運行完成,控制權會被強行交還給監控程序,監控程序會強行終止用戶程序。
特權指令(Privileged Instruction):只能由監控程序執行、不允許用戶程序直接執行的指令會被系統設置為特權指令,例如I/O(Input/Output,輸入輸出)指令。如果用戶程序想要執行特權指令,可以請求監控程序為自己執行這個指令。特權指令就是為監控程序而設計的,畢竟,只有擁有較高權限的一方才能管控擁有較低權限的一方。
從現代操作系統的角度來講,批處理系統已經具備基本的任務調度能力,它可為計算機系統提供一個自動任務處理序列。從用戶的角度來看,批處理系統已經把CPU的處理時間完全占滿;但從CPU的角度來看,CPU經常“忙里偷閑”。因為訪問 I/O設備仍然需要較長時間,其間,CPU長期處于空閑狀態。I/O訪問的速度相對于CPU的處理速度要慢很多,CPU需要完成I/O操作,才能接著執行其他指令。因此,如何更充分地利用CPU就是操作系統要解決的問題,我們常說操作系統的發展史就是對CPU的“壓榨史”,這不無道理。在這個階段,有一件事情不得不提,1963年,康威定律的提出者康威博士發表論文“A Multiprocessor System Design”,正式提出 fork思想,從而實現多處理器并行。從那之后,操作系統的設計大都采用了該思想。
從操作系統發展的角度來看,這個階段的計算機硬件成本很高,編程語言尚處于雛形期,操作系統與硬件深度耦合,其主要目標是追求較高的硬件使用效率。
3. 第三代計算機階段(1966—1990年):大型機、小型機
使用集成電路使計算機硬件技術產生了質的飛躍,低成本、小型化、專業化的計算機層出不窮。與這些計算機對應的操作系統也各種各樣,每一個操作系統都有自己的操作過程和調試工具。設備廠商每生產一類新的機器都會配備一套新的操作系統。20世紀60年代IBM開發出System/360系列計算機,與前面介紹的設備不同,這些計算機擁有統一的操作系統——OS/360。
前面提到,I/O訪問常常需要占用較長的時間,對于批處理系統,在這段等待時間里,CPU只能“無所事事”。如何讓CPU忙起來?多道批處理系統就是計算機科學家的一種嘗試。一旦有一個任務需要等待 I/O訪問,多道批處理系統就立刻切換到另一個不需要等待 I/O訪問的任務,I/O訪問結束后,再切換回原來的任務繼續處理。多道批處理系統也叫多道程序設計(Multiprogramming)或多任務處理(Multitasking),其核心思想是盡可能讓更多的任務運行起來,竭力不讓CPU閑著。您可能會問,控制權已經交給另一個任務,當I/O訪問結束后怎么切換回原來的任務?像批處理系統一樣,多道批處理系統也必須依賴計算機硬件功能,具體來說,就是支持 I/O 中斷(Interrupt)。當 I/O訪問結束后,一個中斷信號會被發送給CPU,且該信號有較高的權限,CPU收到后必須暫停當前正在運行的任務,轉而處理該任務。在多道批處理系統里,這表現為CPU控制權被轉移給多道批處理系統的中斷處理程序。可以說,沒有中斷就沒有現代操作系統。
多道批處理系統已經具備現代操作系統的一些基本思想,在批任務處理場景中可獲得較高的CPU利用率。隨著需要處理的任務越來越多,以及不同的用戶需要同時處理不同的任務,小型機應運而生。和大型機使用多道批處理系統不同,多個用戶需要頻繁地和小型機進行交互,CPU等待的時間主要花費在與用戶的交互上。如何更好地處理與用戶的交互問題是操作系統首先需要解決的問題,為了解決這個問題,交互式操作系統誕生了。交互式操作系統問題的解決思路是“分時”,即操作系統控制每個用戶程序以很短的時間為單位交替執行。人類的反應速度主要取決于人的感官(如眼睛、耳朵、皮膚等),以及中樞神經系統與肌肉之間的協調關系。沒有受過專門訓練的人的反應時間通常為0.2~0.3 s,而一個訓練有素的運動員的反應時間通常為0.1~0.2 s。因此,只要將用戶程序對每個用戶當前交互操作的響應時長控制在0.1 s以內,幾乎所有用戶就會感覺自己獨占了這一臺計算機。分時操作系統通過時鐘中斷切換用戶程序,例如每10 ms向CPU發出一次中斷信號,要求系統調度用戶程序。
在第三代計算機階段,具有現實意義的操作系統的概念被首次提出,多道批處理系統、分時操作系統、MULTICS(Multiplexed Information and Computing Service,多路信息與計算服務)等概念被操作系統的先驅們一一探索。MULTICS屬于分時多任務操作系統,它幫助程序員調試程序。當然,受限于當時計算機的硬件能力和高昂的價格,相關產品無法大規模商用落地,但商業上的失敗并不能掩蓋MULTICS對操作系統演進的巨大貢獻。20世紀70年代,繼承了MULTICS關鍵思想的UNIX操作系統誕生了。
UNIX操作系統是一個強大的多用戶、多任務操作系統,可支持多種處理器架構。從操作系統的分類上說,UNIX操作系統屬于分時操作系統。UNIX簡潔至上的設計原則,也被稱為KISS(Keep It Simple, Stupid,在設計中應當注重簡約)原則,UNIX提供機制而非策略的設計理念吸引了一大批計算機軟件技術人員。這些設計原則和設計理念對后續操作系統及大型軟件系統的設計產生了持續和深遠的影響。
操作系統的繁榮發展催生了UNIX的多個變種(如BSD和System V)。為了使用戶程序能夠在不同版本的UNIX上運行,POSIX(Portable Operating System Interface,可移植操作系統接口)誕生了。它定義了操作系統必須支持的一組系統調用接口,于1985年由IEEE(Institute of Electrical and Electronics Engineers,電氣電子工程師學會)首次提出,目前已被大多數操作系統支持。
第三代計算機出現的時代是計算機技術發展的第一個黃金時代,硬件層面出現了集成電路,軟件層面創造了操作系統。操作系統的時代已來臨,這一階段的主流操作系統被稱為第一代操作系統。
需要指出的是,這個階段的操作系統的目標人群仍是有一定計算機基礎的技術人員,人機交互方式也不夠友好,如何提升技術人員工作效率和解決特定領域的技術問題是彼時操作系統需要重點解決的。
從操作系統技術發展的角度來看,計算機硬件成本逐漸降低,編程語言快速發展,操作系統的設計目標主要是與硬件解耦,并逐漸形成獨立的理論體系。進程、調度、任務管理、內存管理、虛擬地址、多用戶、并發等操作系統的核心概念都是在這個階段提出并不斷得以實踐的。通用、可靠、穩定和安全是這個階段的操作系統的主要研究方向。現代操作系統理論的基本框架在這個階段基本奠定,為后續操作系統的快速發展打下了堅實基礎。
4. 第四代計算機階段(1991年至今):PC及云主機
隨著集成電路集成度的大幅度提升,計算機微型化從理論變成現實,計算機迎來了第一個大繁榮時代——PC時代。
第四代計算機階段的代表操作系統有MS-DOS、Windows、macOS和Linux。和第一代操作系統相比,它們具備更好的用戶交互接口,通過引入GUI(Graphical User Interface,圖形用戶界面)和鼠標,極大降低了計算機操作的復雜性。計算機由此大規模進入商業公司、政府部門和千家萬戶。1985年,微軟公司推出了以GUI為主的Windows操作系統,并最終獲得了PC操作系統的主導地位。20世紀末互聯網的興起使PC迅速在全球范圍內普及。2005年,全球使用互聯網的人數創下紀錄,達到10億。梅特卡夫定律指出,一個網絡的價值等于該網絡內的節點數的平方,而且該網絡的價值與聯網的用戶數的平方成正比。也就是說,一個網絡的節點數和使用該網絡的用戶數越多,整個網絡和該網絡內的每臺計算機的價值就越大。PC進入千行百業,催生了操作系統更多的應用場景,操作系統因此在多個領域有了長足的發展,下面列舉幾個主要領域做簡要說明。
● 計算機圖形學(Computer Graphics)。計算機圖形學主要研究在計算機世界中表示圖形、存儲圖形、處理圖形和顯示圖形的相關原理與算法。利用計算機繪制出與現實世界接近的圖像,以給人視覺上更加逼真的感受,是計算機圖形學一直努力的方向。自計算機圖形學創立以來,各種圖形技術層出不窮,如GUI、坐標轉換與光線跟蹤、材質貼圖、頂點混合、紋理壓縮和凹凸映射貼圖、3D渲染引擎等。圖形處理涉及大量的圖形計算任務,專為通用計算和邏輯處理而設計的CPU對此顯得力不從心,GPU(Graphics Processing Unit,圖形處理單元)應運而生。GPU是一種特殊類型的處理器,具有數百個、數千個甚至更多的內核,通過并行運行內核來處理大量計算任務。在進行三維繪圖時,GPU的工作比CPU更高效。計算機圖形學在計算機發展史中的地位不管怎么濃墨重彩地描述都不為過。可以說,沒有計算機圖形學,就沒有現代計算機,也沒有互聯網和電影特效,計算機也不會進入普通人的生活。
● 計算機存儲系統(Computer Storage System)。計算機存儲系統的核心是存儲器。存儲器是用來存儲程序和數據的設備。現代計算機系統中常采用由寄存器、高速緩存、主存、外存等組成的多級存儲架構。采用多級存儲架構的主要目的是讓存取速度、存取容量、存儲器成本和易失性等多種因素之間取得平衡。操作系統需要設計適當的算法,利用數據訪問的局部性原理,在不同層級訪問速度存在數量級差異的情況下達到存取性能和成本的最佳平衡。在操作系統中,通常把需要持久化的一組數據抽象為一個文件,操作系統提供打開文件、關閉文件和讀寫文件等基本接口。對文件進行操作時,用戶程序不需要關心數據存儲在存儲器上的具體物理位置,數據在存儲器上的存儲位置由操作系統的文件系統統一管理;操作系統也不用理解數據的具體格式,數據的具體格式由用戶程序定義和解析。計算機存儲系統在云服務器領域被稱為DFS(Distributed File System,分布式文件系統),它通過計算機網絡技術,將分散在多臺機器上的存儲資源組成一個虛擬的存儲設備。通常,DFS的元數據非常多,元數據的存取性能是整個分布式文件系統性能的關鍵所在。
● 計算機網絡(Computer Network)。計算機網絡是指計算機設備通過有線或無線的傳輸介質,通過節點之間的鏈路連接互相交換數據和分享數據的數字通信網絡。計算機網絡把孤立的計算機連接在一起,使單臺計算機可訪問的數據范圍被極大地擴大。連接在互聯網上的計算機變為一個可訪問海量信息的客戶端,通過該客戶端,人們可以進行信息共享、軟件共享和硬件共享。
● 分布式系統(Distributed System)。分布式系統是指將物理上獨立的一組計算機通過計算機網絡連接在一起工作的軟件系統。該軟件系統支持管理所有節點的軟硬件系統資源,能夠控制分布式程序的運行和狀態共享,并可以執行并發操作。
除上述領域外,編程語言、運行時和媒體處理等被引入操作系統并迅速發展壯大。另外,GPU和其他硬件加速器的出現,使原本以CPU為核心的操作系統不得不做出改變。
在這個階段,Windows和macOS在桌面操作系統中占有統治地位,它們較好地解決了用戶通過鼠標與計算機設備進行圖形交互的問題,同時也解決了個人用戶在計算機中使用相關的圖形、多媒體、網絡和Web等的技術問題。Linux在嵌入式設備、超級計算機,尤其在服務器領域確定了其不可挑戰的地位,它是一種自由和開放源碼的類UNIX操作系統。從技術角度來看,Linux實現了系統與網絡通信一體化,并因其低廉的使用成本及對大量硬件的適配支持而“獨步江湖”。
這個階段的操作系統被稱為第二代操作系統,和第一代操作系統相比,使用鼠標等更自然的交互方式被引入,同時TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協議/互聯網協議)等通信技術也被預置到操作系統中。操作系統的交互性更加友好,為辦公數字化、個人娛樂和互聯網技術的發展做出了重要貢獻。操作系統的目標人群不再局限于計算機相關的技術人員,經過簡單培訓的普通人員也可以操作計算機。操作系統交互性的提升促進了用戶程序生態的豐富,用戶程序生態的豐富則推動了PC更大范圍的普及。辦公軟件、影音娛樂、游戲、瀏覽器、工業軟件、企業管理軟件、數據庫軟件等加速了各行各業的數字化改造進程。用戶程序的傳播方式非常靈活,譬如可通過光盤、網絡下載、磁盤復制等進行傳播,但第二代操作系統缺少對用戶程序的統一管理,仿冒、安全木馬、盜版等各種問題層出不窮。
從操作系統技術發展的角度來看,操作系統進入快速發展期,相關理論基本完善,PC成為市場的主角,人機交互、網絡技術、安全、兼容性等成為操作系統追求的主要目標。
5. 第五代計算機階段(2007年至今):移動計算機
移動通信在近30年蓬勃發展,給人們的工作、生活和學習帶來了極大的便利。特別是3G、4G數據業務速率的不斷提高,使互聯網從桌面設備拓展到移動設備。美國蘋果公司準確預判了移動互聯網可能帶來的巨大的發展機會,于2007年推出轟動一時的iPhone手機,該手機搭載iOS系統,給用戶帶來了前所未有的交互體驗。用戶不再需要通過觸控筆和傳統鍵盤的輸入方式來操控移動設備,而是可以通過更自然的方式來操控,譬如通過手指觸摸的方式在顯示屏幕上(實際上是在觸摸屏上)做出點擊、滑動、多指觸控等動作;也可以通過搖一搖、旋轉設備等來跟系統交互。緊隨其后,美國谷歌公司推出了開源的Android系統,微軟公司也推出了Windows Phone系統。
更自然的交互方式大幅降低了操作系統的使用門檻,極大拓展了移動設備使用人群的范圍,幾乎人人都可以操作移動設備。龐大的移動設備用戶群體也促進了應用生態從桌面計算機向移動設備的大規模遷移。移動設備集成了更多的傳感器,應用開發者通過豐富的傳感信息創造出形形色色的、更有創意的應用程序。
第五代計算機階段的操作系統的典型代表是iOS和Android,人們通過移動設備不僅可以瀏覽網頁和閱讀電子書,還可以體驗移動商務、移動視聽、即時通信、手機游戲和移動支付等業務,移動終端操作系統深刻地改變了信息時代人們的生活方式和工作方式。這個階段的操作系統被稱為第三代操作系統。從技術上講,這個階段的操作系統更強調用戶的交互體驗,引入了更多的外圍設備和傳感器;為了使移動設備有更長的續航時間,操作系統提供了強大的功耗管理能力;隨著移動設備上承載的用戶數據的增加,操作系統在安全和隱私保護方面進行了進一步加強;為了方便用戶安全地下載第三方應用,集中式應用生態分發體系誕生了。當然,這些都離不開移動設備計算能力的大幅提升和功耗的下降,以及通信技術的快速發展和傳感器技術的逐步成熟。
從操作系統技術發展的角度來看,操作系統理論日益完善。操作系統設計中與硬件相關的部分比重越來越小,其設計重心從南向硬件生態逐步向北向應用生態遷移。操作系統可以獨立支撐起一個龐大的軟件產業,并從單純地追求高性能逐漸發展到追求更高能效比,UX(User Experience,用戶體驗)在操作系統設計中的權重越來越大。