- 統(tǒng)信UOS應(yīng)用開(kāi)發(fā)詳解
- 統(tǒng)信軟件技術(shù)有限公司
- 3385字
- 2023-03-10 17:48:19
第1篇 背景知識(shí)
第1章 操作系統(tǒng)簡(jiǎn)史
操作系統(tǒng)用于管理計(jì)算機(jī)硬件、軟件資源,并提供通用服務(wù),是直接運(yùn)行在計(jì)算機(jī)硬件上的基本系統(tǒng)軟件。其他軟件都必須在操作系統(tǒng)的支持下才能運(yùn)行。操作系統(tǒng)可劃分為批處理操作系統(tǒng)、分時(shí)操作系統(tǒng)等類(lèi)型。實(shí)際上,發(fā)展到現(xiàn)在,分時(shí)操作系統(tǒng)、實(shí)時(shí)操作系統(tǒng)、個(gè)人操作系統(tǒng)、網(wǎng)絡(luò)操作系統(tǒng)、分布式操作系統(tǒng)在不同的場(chǎng)景下都被廣泛使用。本章將對(duì)操作系統(tǒng)的發(fā)展歷史進(jìn)行簡(jiǎn)要介紹。
1.1 人工時(shí)代
在電子管計(jì)算機(jī)時(shí)代,計(jì)算機(jī)是沒(méi)有系統(tǒng)軟件的,只能在少數(shù)領(lǐng)域中得到運(yùn)用,人們用機(jī)器語(yǔ)言編程。編寫(xiě)的程序是用紙帶(或卡片)來(lái)表示的。用戶先把紙帶裝到計(jì)算機(jī)上,然后啟動(dòng)輸入機(jī)把程序和數(shù)據(jù)送入計(jì)算機(jī),接著通過(guò)計(jì)算機(jī)控制臺(tái)開(kāi)關(guān)啟動(dòng)程序運(yùn)行,計(jì)算完畢,輸出機(jī)輸出計(jì)算結(jié)果,用戶卸下并取走紙帶,如圖1-1所示。

圖1-1 人工時(shí)代的計(jì)算機(jī)使用流程
可以看出,這種方式效率很低,CPU有效運(yùn)行時(shí)間極短,因?yàn)橐却罅康娜斯げ僮魍瓿伞6矣脩舄?dú)占機(jī)器,程序運(yùn)行過(guò)程中計(jì)算機(jī)無(wú)法和程序員進(jìn)行交互。為解決上述問(wèn)題,人們開(kāi)始研制不同的操作系統(tǒng)來(lái)適應(yīng)計(jì)算機(jī)的發(fā)展。
1.2 批處理操作系統(tǒng)
批處理操作系統(tǒng)是加載在計(jì)算機(jī)上的一個(gè)系統(tǒng)軟件,在它的控制下,計(jì)算機(jī)能夠自動(dòng)、成批地處理一個(gè)或多個(gè)用戶的作業(yè)(包括程序、數(shù)據(jù)和命令)。
1.2.1 聯(lián)機(jī)批處理操作系統(tǒng)
首先出現(xiàn)的是聯(lián)機(jī)批處理操作系統(tǒng),即作業(yè)的輸入輸出(Input/Output,I/O)由CPU來(lái)處理。批處理是指用戶將批量作業(yè)流提交給操作系統(tǒng)后就不再干預(yù),由操作系統(tǒng)控制它們自動(dòng)運(yùn)行,如圖1-2所示。這種采用批處理作業(yè)技術(shù)的操作系統(tǒng)稱(chēng)為批處理操作系統(tǒng)。批處理操作系統(tǒng)分為單道批處理操作系統(tǒng)和多道批處理操作系統(tǒng)。批處理操作系統(tǒng)不具有交互性,它是人們?yōu)榱颂岣逤PU的利用率而設(shè)計(jì)出的一種操作系統(tǒng)。

圖1-2 聯(lián)機(jī)批處理操作系統(tǒng)
1.2.2 脫機(jī)批處理操作系統(tǒng)
脫機(jī)批處理操作系統(tǒng)是人們?yōu)榱司徑馊藱C(jī)矛盾、主機(jī)與外圍設(shè)備(簡(jiǎn)稱(chēng)外設(shè))的矛盾,以及提高CPU利用率而設(shè)計(jì)出的操作系統(tǒng)。這種操作系統(tǒng)的顯著特征是:增加一臺(tái)不與主機(jī)直接相連而專(zhuān)門(mén)用于與I/O打交道的衛(wèi)星機(jī),如圖1-3所示。

圖1-3 脫機(jī)批處理操作系統(tǒng)
衛(wèi)星機(jī)的功能是:從輸入機(jī)讀取用戶作業(yè)并放到輸入磁帶上,從輸出磁帶讀取執(zhí)行結(jié)果并傳給輸出機(jī)。這樣,主機(jī)不直接與慢速的I/O打交道,而是與速度相對(duì)較快的磁帶聯(lián)系,可有效緩解主機(jī)與外設(shè)的矛盾。主機(jī)與衛(wèi)星機(jī)可并行工作,二者分工明確,也可以充分發(fā)揮主機(jī)的高速計(jì)算能力。脫機(jī)批處理操作系統(tǒng)在20世紀(jì)60年代應(yīng)用十分廣泛,它極大地緩解了人機(jī)矛盾及主機(jī)與外設(shè)的矛盾,是現(xiàn)代操作系統(tǒng)的原型。1964年,IBM(International Business Machines,國(guó)際商業(yè)機(jī)器)公司發(fā)布了System/360(S/360)系統(tǒng),對(duì)應(yīng)的主機(jī)操作系統(tǒng)為OS/360。OS/360支持多道程序,最多可同時(shí)運(yùn)行15道程序。為了便于管理,OS/360把CPU存儲(chǔ)器劃分為多個(gè)(最多15個(gè))分區(qū),每個(gè)程序在一個(gè)分區(qū)中運(yùn)行。
1.3 分時(shí)操作系統(tǒng)
分時(shí)操作系統(tǒng)使得一臺(tái)計(jì)算機(jī)可采用時(shí)間片輪轉(zhuǎn)的方式,同時(shí)為幾個(gè)、幾十個(gè)甚至幾百個(gè)終端用戶服務(wù)。分時(shí)操作系統(tǒng)把計(jì)算機(jī)與許多終端用戶連接起來(lái),將系統(tǒng)處理機(jī)時(shí)間與內(nèi)存空間按一定的時(shí)間間隔劃分為時(shí)間片,輪流地切換給各終端用戶的程序使用。由于時(shí)間間隔很短,每個(gè)終端用戶會(huì)感覺(jué)自己獨(dú)占了計(jì)算機(jī)。分時(shí)操作系統(tǒng)的特點(diǎn)是可有效提高資源的使用率。例如UNIX操作系統(tǒng)就采用剝奪式動(dòng)態(tài)優(yōu)先的CPU調(diào)度,有力地支持分時(shí)操作。典型的分時(shí)操作系統(tǒng)例子是UNIX和Linux操作系統(tǒng)。其可以同時(shí)連接多個(gè)終端并且每隔一段時(shí)間重新掃描進(jìn)程、重新分配進(jìn)程的優(yōu)先級(jí),還可動(dòng)態(tài)分配系統(tǒng)資源。
1.3.1 UNIX操作系統(tǒng)的誕生
計(jì)算機(jī)操作系統(tǒng)的鼻祖是Multics(Multiplexed Information and Computing System,多路信息和計(jì)算系統(tǒng))操作系統(tǒng),以下簡(jiǎn)稱(chēng)M系統(tǒng)。M系統(tǒng)是1964年美國(guó)貝爾實(shí)驗(yàn)室、麻省理工學(xué)院及通用電氣公司共同研發(fā)的,最初的目的是開(kāi)發(fā)出一套安裝在大型主機(jī)上多人多工的操作系統(tǒng)。因?yàn)楫?dāng)時(shí)的計(jì)算機(jī)一次只能接受一個(gè)任務(wù),多人的任務(wù)需要排隊(duì)執(zhí)行。后來(lái),原M系統(tǒng)設(shè)計(jì)成員肯尼思·湯普森(Kenneth Thompson)想把一款名為《太空旅游》的游戲移植到他們實(shí)驗(yàn)室的一臺(tái)機(jī)器上而開(kāi)發(fā)了一套軟件。該套軟件參考M系統(tǒng)的思路設(shè)計(jì),但是功能單一,實(shí)驗(yàn)室的人戲稱(chēng)此軟件為UNICS(UNiplexed Information and Computing System,單路信息和計(jì)算系統(tǒng))。由于當(dāng)時(shí)的UNICS每次移植到一個(gè)新的機(jī)器上時(shí),都需要重復(fù)在機(jī)器上處理,且需針對(duì)不同的機(jī)器設(shè)備進(jìn)行額外的編程處理,就是驅(qū)動(dòng)都要程序員寫(xiě)、程序員配,因此那個(gè)時(shí)候系統(tǒng)的傳播受限于硬件和使用者的能力,只能供極少部分人使用。
1971年,肯尼思·湯普森 和丹尼斯·里奇(Dennis Ritchie)為了使當(dāng)時(shí)的UNICS具有更好的移植性、適用于不同的硬件設(shè)施,創(chuàng)造了C語(yǔ)言。他們于1973年,用C語(yǔ)言重新改寫(xiě)并編譯UNICS的核心,將其正式命名為UNIX,形成了UNIX的初代版本。該版本由于使用了高級(jí)語(yǔ)言——C語(yǔ)言,減輕了對(duì)底層硬件依賴的問(wèn)題,從而可以廣泛地在各種機(jī)器上使用。初代的UNIX采用了200多條程序命令,雖然內(nèi)核很小,但是功能極為精簡(jiǎn)、強(qiáng)悍。當(dāng)時(shí)原本需要用100~1000行代碼才能實(shí)現(xiàn)的程序,在UNIX中使用不超過(guò)10條命令就可實(shí)現(xiàn)。它極高的效率使它在美國(guó)AT&T公司內(nèi)得以快速傳播。可以設(shè)想一下,本來(lái)要一天才能做完的工作,用當(dāng)時(shí)的UNIX幾分鐘就能搞定,這種“神器”能不快速傳播嗎?
計(jì)算機(jī)軟件的發(fā)展歷程是一個(gè)持續(xù)優(yōu)化、提升效率的過(guò)程。UNICS的發(fā)明是為了將復(fù)雜的任務(wù)簡(jiǎn)單化。為了簡(jiǎn)化軟件和硬件的關(guān)聯(lián)處理而重新創(chuàng)建的一種新語(yǔ)言(C語(yǔ)言),也幫助我們實(shí)現(xiàn)了軟件和硬件的分離,為現(xiàn)代操作系統(tǒng)(UNIX)的發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ)。需要指出的是,當(dāng)時(shí)的UNIX屬于AT&T公司的貝爾實(shí)驗(yàn)室,但該公司和學(xué)術(shù)界院校(美國(guó)加利福尼亞大學(xué)伯克利分校)合作開(kāi)發(fā),使得UNIX在各大高校快速傳播。1977年,加利福尼亞大學(xué)伯克利分校的比爾·喬伊(Bill Joy)在取得了UNIX的核心源碼后,著手將其修改成適合自己機(jī)器的版本,同時(shí)增加了很多功能軟件與編譯工具,最終將它命名為BSD(Berkeley Software Distribution,伯克利軟件套件)。BSD是UNIX很重要的一個(gè)分支,蘋(píng)果公司(后簡(jiǎn)稱(chēng)蘋(píng)果)的操作系統(tǒng)實(shí)際源自此分支。1979年,AT&T公司出于商業(yè)方面的考量,將UNIX的版權(quán)收回。因此,AT&T公司在1979年發(fā)行的第7版UNIX中,特別提到了 “不可對(duì)學(xué)生提供源碼”的嚴(yán)格限制。這導(dǎo)致后來(lái)學(xué)術(shù)界自力更生,安德魯·塔嫩鮑姆(Andrew Tanenbaum)教授參照UNIX的功能,寫(xiě)出了Minix系統(tǒng),用于教授操作系統(tǒng)的相關(guān)教程。該系統(tǒng)在1986年完成開(kāi)發(fā)并發(fā)布,相關(guān)圖書(shū)也于次年出版。這是后來(lái)大名鼎鼎的林納斯·托瓦茲(Linus Torvalds)得以構(gòu)建Linux初代系統(tǒng)的基礎(chǔ)。
1.3.2 可視化操作系統(tǒng)的演進(jìn)
在1984年以前,幾乎所有的操作系統(tǒng)都是基于企業(yè)或高校科研機(jī)構(gòu)的大型機(jī)來(lái)設(shè)計(jì)和使用的,還沒(méi)有達(dá)到普通人能用的地步。當(dāng)時(shí),大部分的計(jì)算機(jī)操作系統(tǒng)是基于命令行終端的,沒(méi)有圖形化的操作界面。這樣的操作系統(tǒng)只能被極少部分的高級(jí)專(zhuān)業(yè)人員和學(xué)術(shù)界的師生使用。但到了1984年,一切都發(fā)生了變化。這時(shí),操作系統(tǒng)的發(fā)展發(fā)生了哪些變化呢?具體如下。
● VisiCorp公司的第一款可視化操作系統(tǒng)Visi On發(fā)布。
● 蘋(píng)果的第一款可視化操作系統(tǒng)macOS 1.0發(fā)布。
● 微軟公司(后簡(jiǎn)稱(chēng)微軟)推出Windows 1.0(1985年)。
● 日本NEC公司(日本電氣股份有限公司)基于ITRON/86規(guī)范,第一個(gè)實(shí)現(xiàn)了ITRON操作系統(tǒng)。
幾乎是不約而同的,世界上幾個(gè)重要的操作系統(tǒng)廠商都在同一時(shí)間段內(nèi)發(fā)布了操作系統(tǒng)的商用版本,且都具有圖形化界面。而這4個(gè)操作系統(tǒng)經(jīng)過(guò)近40年的演進(jìn),幾乎影響了我們現(xiàn)代生活的方方面面。蘋(píng)果的macOS實(shí)際來(lái)源于UNIX(FreeBSD版本),是UNIX陣營(yíng)向普通消費(fèi)者市場(chǎng)進(jìn)軍的主力,圖形化的界面和應(yīng)用降低了系統(tǒng)和計(jì)算機(jī)的使用門(mén)檻。
微軟之前一直使用MS-DOS命令行的系統(tǒng),在看到蘋(píng)果的可視化界面后,緊接著開(kāi)發(fā)出Windows系統(tǒng),以搶占普通消費(fèi)者市場(chǎng),由此開(kāi)啟了蘋(píng)果和微軟兩大公司30多年的激烈競(jìng)爭(zhēng)。
1.3.3 開(kāi)源Linux的誕生與演進(jìn)
從20世紀(jì)80年代中后期開(kāi)始,大量基于可視化操作界面的操作系統(tǒng)問(wèn)世后,操作系統(tǒng)真正普及開(kāi)來(lái)。不過(guò),可視化操作系統(tǒng)是直接裝在機(jī)器上的,它在降低了用戶使用門(mén)檻的同時(shí),也封閉了內(nèi)在復(fù)雜的軟件設(shè)計(jì)。普通的學(xué)院派老師、學(xué)生難以看到其被隱藏的具體設(shè)計(jì)。由此,開(kāi)源的操作系統(tǒng)Linux出現(xiàn)了。
1991年,在芬蘭赫爾辛基上大學(xué)的林納斯·托瓦茲參照UNIX和Minix,重寫(xiě)了一個(gè)初始的Linux系統(tǒng),并于1991年10月5日發(fā)布了0.01版。1993年,100余名程序員參與了Linux內(nèi)核代碼的編寫(xiě)、修改工作,其中核心組由5人組成,此時(shí)Linux 0.99的代碼大約有10萬(wàn)行,用戶數(shù)大約有10萬(wàn)。由于全世界Linux愛(ài)好者、使用者的參與,發(fā)展到Linux 4.9.2時(shí),Linux內(nèi)核源碼就超過(guò)了1800萬(wàn)行。2019年,Linux新版內(nèi)核發(fā)布,該內(nèi)核有大約2500萬(wàn)行代碼。有別于UNIX的閉源(代碼不可獲得),Linux系統(tǒng)遵循開(kāi)源協(xié)議,意味著任何人都可以獲取和編輯代碼,Linux也因此獲得了極大的關(guān)注和應(yīng)用推廣。
- 高質(zhì)量軟件構(gòu)建方法與實(shí)踐
- JavaScript框架設(shè)計(jì)
- Android 網(wǎng)絡(luò)開(kāi)發(fā)與應(yīng)用實(shí)戰(zhàn)詳解
- ODPS權(quán)威指南 阿里大數(shù)據(jù)平臺(tái)應(yīng)用開(kāi)發(fā)實(shí)踐
- 計(jì)算機(jī)軟件技術(shù)基礎(chǔ)
- Arduino項(xiàng)目開(kāi)發(fā):智能家居
- Unity AR/VR開(kāi)發(fā):從新手到專(zhuān)家
- 中國(guó)軟件工程師:工作、生活與觀念
- 深入淺出數(shù)據(jù)結(jié)構(gòu)與算法(微課視頻版)
- 區(qū)塊鏈核心算法解析
- Visual Basic編程寶典(十年典藏版)
- 構(gòu)建跨平臺(tái)APP:jQuery Mobile移動(dòng)應(yīng)用實(shí)戰(zhàn)(第2版) (跨平臺(tái)移動(dòng)開(kāi)發(fā)叢書(shū))
- 移動(dòng)設(shè)計(jì)
- 基于EEG的腦源定位與腦功能網(wǎng)絡(luò)
- 云原生Kubernetes全棧架構(gòu)師實(shí)戰(zhàn)