[转]奇文-闲话操作系统(1/4)
最近在看Eric.Raymond寫(xiě)的一本《Unix編程藝術(shù)》,里面講了不少計(jì)算機(jī)的、特別是Unix的歷史淵源,出于個(gè)人愛(ài)好,我對(duì)電腦的發(fā)展史一向比較關(guān)心,也看過(guò)一點(diǎn)相關(guān)的書(shū)本、資料,于是就當(dāng)是作筆記也好,寫(xiě)學(xué)習(xí)總結(jié)也好,把我所知道的關(guān)于計(jì)算機(jī)操作系統(tǒng)的歷史拉拉雜雜地寫(xiě)下了一點(diǎn)文字(如果有人喜歡看,以后也會(huì)寫(xiě)些其他方面的),想到壇子里也許還有同好,就貼了上來(lái),歡迎交流,歡迎拍磚(如能有根有據(jù)地拍,那就更求之不得:)。
閑話少說(shuō),開(kāi)練。
關(guān)于操作系統(tǒng)的定義,我沒(méi)有找到一個(gè)權(quán)威的解釋,基本上可以說(shuō),它是一個(gè)程序,一個(gè)介于計(jì)算機(jī)硬件和計(jì)算機(jī)用戶/開(kāi)發(fā)者之間的程序,用戶通過(guò)它來(lái)操作計(jì)算機(jī),開(kāi)發(fā)者用它提供的接口來(lái)編寫(xiě)程序。操作系統(tǒng)大概可算是最重要(也可算是最復(fù)雜)的程序,基本上,它決定了我們能用電腦干什么和怎樣用電腦,軟件當(dāng)然是千變?nèi)f化,不斷發(fā)展,但無(wú)論是在那一種操作系統(tǒng)下跑的軟件,必然受限于操作系統(tǒng)所提供的功能,換句話說(shuō),它只能在操作系統(tǒng)劃下的圈子里翻筋斗。
第一代計(jì)算機(jī)是電子管(vacuum tube)計(jì)算機(jī)(大約1945~1959)是沒(méi)有操作系統(tǒng)的,比如1945年問(wèn)世的第一臺(tái)電腦ENIAC,那玩意每秒只能做5000次加減法,連現(xiàn)在地?cái)偵献盍畠r(jià)的計(jì)算器都不如,你給它寫(xiě)個(gè)操作系統(tǒng),它也跑不動(dòng)啊。所以那時(shí)操作電腦都是赤祼祼地跟主機(jī)打交道,要它干活,得一步步地按開(kāi)關(guān)來(lái)告訴它(鍵盤(pán)是沒(méi)有的,因?yàn)橛玫氖菣C(jī)器語(yǔ)言,開(kāi)關(guān)就夠用了,后來(lái)出現(xiàn)了匯編語(yǔ)言,才出現(xiàn)打孔帶這種輸入方式),至于輸出,它是靠?jī)膳判襞莸拈W爍來(lái)實(shí)現(xiàn)(跟眨眼睛差不多,閉著就是0,開(kāi)著就是1,所以按照信息技術(shù)的理論,眉目豈止能傳情,任何信息都可以通過(guò)眨眼睛來(lái)表達(dá):)。藍(lán)色巨人——IBM(國(guó)際商用機(jī)器公司)從這時(shí)就開(kāi)始涉足計(jì)算機(jī),在這個(gè)時(shí)代,他們推出的產(chǎn)品是700系列。
第二代的計(jì)算機(jī)是晶體管(transistor)計(jì)算機(jī)(大約1959~1964),這個(gè)時(shí)代的計(jì)算機(jī)都是所謂的大型機(jī),代表產(chǎn)品是IBM的1403機(jī),運(yùn)算能力比第一代快多了,達(dá)到了每秒幾十~幾百萬(wàn)次,這個(gè)數(shù)字看起來(lái)還不錯(cuò),操作系統(tǒng)夠簡(jiǎn)單的話,是可以跑得動(dòng)的,操作系統(tǒng)也就是在這時(shí)候出現(xiàn)的(也有一種說(shuō)法,說(shuō)是在五十年代中期就出現(xiàn)了簡(jiǎn)單的操作系統(tǒng),但沒(méi)看到進(jìn)一步的介紹,)。那時(shí)的大型機(jī)基本上是一種型號(hào)配一種操作系統(tǒng),通用?沒(méi)門(mén)。這時(shí)候的計(jì)算機(jī)工程師通常也是橫跨硬、軟件領(lǐng)域,非常的牛X,比如著名的CRAY巨型機(jī),就是由Seymour Cray一手包辦軟硬件設(shè)計(jì),讓很多計(jì)算機(jī)FANS驚為天人,后來(lái),蘋(píng)果電腦橫空出出世,Steven Wozniak也曾再現(xiàn)這種輝煌,這種包辦一款電腦軟硬件設(shè)計(jì)的壯舉,擱現(xiàn)在,相信沒(méi)人 可以辦到了。在文明發(fā)韌之初,類似情形比較常見(jiàn),古希臘的那些大牛,亞力士多德什么的,都是學(xué)貫文理,很多領(lǐng)域都插上一杠子,往往還成了創(chuàng)始人,到了牛頓,雖然差點(diǎn),文科基本沒(méi)沾邊(神學(xué)據(jù)說(shuō)他鉆研頗深,但成就如何不得而知),但在理科的好幾個(gè)領(lǐng)域也是開(kāi)宗立派、威風(fēng)八面,現(xiàn)在的科學(xué)家大概只有高山仰止的份了。但學(xué)術(shù)的傳承有好幾千年,牛頓到現(xiàn)在也有三四百年了,而計(jì)算機(jī)的歷史到今天滿打滿算也不過(guò)六十一年,居然就到了這份上,可見(jiàn)其發(fā)展之快。
那時(shí)的操作系統(tǒng)跟我們現(xiàn)在所看到的其實(shí)大相徑庭,當(dāng)時(shí)只是把它稱作Batch System,它的功能也非常單一,僅僅是把一些常用的操作指令進(jìn)行了封裝以供程序調(diào)用,甚至都談不上用戶界面。
但就在這個(gè)時(shí)代,有一個(gè)特別值得一提的操作系統(tǒng)已經(jīng)開(kāi)始醞釀,就是大名鼎鼎的OS/360。
這款操作系統(tǒng)出自藍(lán)色巨人——IBM(國(guó)際商用機(jī)器公司)之手,IBM在電腦史上的地位堪稱泰山北斗,甚至有專家說(shuō)過(guò),“電腦的歷史就是IBM的歷史”。而“360系統(tǒng)”堪稱IBM歷史上最重要的項(xiàng)目之一。
在61年年底,IBM開(kāi)始打算實(shí)施“360系統(tǒng)電子計(jì)算機(jī)計(jì)劃”,據(jù)當(dāng)時(shí)的估算,整個(gè)計(jì)劃投資約需50億美元(這可是在60年代初,十幾年前的“曼哈頓工程”才花了20億),這是不折不扣的大手筆,要知道,當(dāng)時(shí)IBM的年?duì)I業(yè)額還不到這個(gè)數(shù)字。
之所以如此花錢(qián),是因?yàn)檫@項(xiàng)計(jì)劃要做一些以前沒(méi)人做過(guò)的事,這將是一個(gè)通用的系統(tǒng)(360就是360度的意思,表示該系統(tǒng)全面的應(yīng)用范圍),該系列不同型號(hào)的計(jì)算機(jī)將能享用同樣的設(shè)備,如磁帶機(jī)、打印機(jī)等,能使用同樣的軟件,并且可以相互連接,一起工作,這些在今天看來(lái)理所當(dāng)然的事,在當(dāng)時(shí)可是聞所未聞。
該項(xiàng)目在硬件設(shè)計(jì)上很有創(chuàng)新,乃至IBM不得不自己動(dòng)手設(shè)計(jì)制造芯片(因?yàn)橘I(mǎi)不到),但更大的困難卻是在軟件方面,要讓所有的軟件適用于所有的電腦(當(dāng)然,僅限于360系列),這個(gè)理念讓IBM的軟件工程師們傷透腦筋,投入到這個(gè)項(xiàng)目中的軟件工程師超過(guò)2000人(Windows2000也只動(dòng)用了1700名),花費(fèi)超過(guò)5億美元,竟然超過(guò)了硬件研發(fā)的費(fèi)用,所有這些都是創(chuàng)紀(jì)錄的。
負(fù)責(zé)這項(xiàng)艱苦卓絕的開(kāi)發(fā)任務(wù)的,是Frederick Brooks,當(dāng)時(shí)年僅三十,他是世界上第一批獲得計(jì)算機(jī)科學(xué)博士學(xué)位的人之一,有趣的是,當(dāng)開(kāi)發(fā)這個(gè)新型操作系統(tǒng)的計(jì)劃提出時(shí),Brooks本是最強(qiáng)硬的反對(duì)派,因?yàn)樗X(jué)得這個(gè)項(xiàng)目的難度駭人聽(tīng)聞,實(shí)在是不切實(shí)際。但當(dāng)IBM的管理層拍下板來(lái),要Brooks擔(dān)當(dāng)重任時(shí),他居然慨然應(yīng)允,高風(fēng)亮節(jié),實(shí)在是令人佩服。
360操作系統(tǒng)的開(kāi)發(fā)用了5000個(gè)人年(人年就是一個(gè)人一年的工作量),由于從未有過(guò)開(kāi)發(fā)這種大型軟件的經(jīng)驗(yàn),開(kāi)發(fā)組陷入了“有史以來(lái)最可怕的軟件開(kāi)發(fā)泥潭”,最終也沒(méi)能實(shí)現(xiàn)當(dāng)初的設(shè)想。Brooks后來(lái)根據(jù)這次開(kāi)發(fā)任務(wù)的經(jīng)驗(yàn),寫(xiě)了一本《人月神話》(The Mythical Man-Month),成為軟件工程領(lǐng)域內(nèi)的經(jīng)典著作(某種程度上是宣揚(yáng)的一種失敗論)。他本人更在99年獲得了計(jì)算機(jī)領(lǐng)域的最高獎(jiǎng)——“圖靈獎(jiǎng)”。
盡管軟件開(kāi)發(fā)工作未獲全勝,但360項(xiàng)目還是取得了輝煌的成功,IBM在籍此在計(jì)算機(jī)行業(yè)幾乎是一統(tǒng)天下,IBM/360更被譽(yù)為人類從原子能時(shí)代進(jìn)入信息時(shí)代標(biāo)志。此后IBM開(kāi)發(fā)的大型機(jī)系列都保持了與360系統(tǒng)的兼容,直到最新的z系列,在360上寫(xiě)的程序仍可以不經(jīng)修改的運(yùn)行,“兼容”這一概念從此開(kāi)始深入人心。
需要交待一下,360計(jì)劃雖然是在61年開(kāi)始啟動(dòng),但等到完成己是1964年,它的主要部件采用了集成電路(Intergrated Circuit,IC),屬于第三代計(jì)算機(jī),它也是第三代計(jì)算機(jī)的標(biāo)志產(chǎn)品,還有前面提到的CRAY巨型機(jī),也屬于第三代。Cray此人厲害無(wú)比,不可一世的IBM幾次栽在他手上,在IBM研制360時(shí),Cray還在CDC(控制數(shù)據(jù)公司,好象那時(shí)的計(jì)算機(jī)公司起名都很低調(diào),象IBM、DEC都是平鋪直敘,不象現(xiàn)在的IT公司,名字一個(gè)比一個(gè)花哨)工作,他帶領(lǐng)的團(tuán)隊(duì)只花了700萬(wàn)美元就搞出了一臺(tái)比IBM的產(chǎn)品快上3倍的東東,讓IBM震驚不己,而他的訣竅就在于開(kāi)創(chuàng)性地使用了并行技術(shù)(就是用多個(gè)處理器并行工作),這項(xiàng)技術(shù)到現(xiàn)在還是制造超級(jí)計(jì)算機(jī)的基礎(chǔ)。
Cray后來(lái)離開(kāi)CDC自立門(mén)戶,于1972年開(kāi)了家用自己名字命名的公司(這好象是西方的傳統(tǒng),象HP、DELL都是這么來(lái)的,Microsoft也差點(diǎn)就叫Alan-Gates),專搞巨型機(jī),并練就了一門(mén)叫做“向量處理”的絕技,獨(dú)步天下,在80年代,他的產(chǎn)品一度占到世界巨型機(jī)總數(shù)的70%(“侏羅紀(jì)公園”里的恐龍DNA就是用CRAY機(jī)來(lái)處理的,呵呵),讓IBM丟盡臉面。不過(guò)CRAY公司其亡也忽焉,后來(lái)漸漸沒(méi)落,公司幾次易手,先后被SGI和TERA收購(gòu),巨型機(jī)老大的位子不久就被IBM奪回去了。
說(shuō)了半天,也沒(méi)提操作系統(tǒng),有點(diǎn)跑題了,呵呵。其實(shí)是因?yàn)殛P(guān)于CRAY機(jī)的操作系統(tǒng),我也一抹黑:(,只是聽(tīng)說(shuō)它的操作系統(tǒng)都是由Cray博士用機(jī)器碼(就是0101001......)寫(xiě)出來(lái)的,居然沒(méi)出現(xiàn)什么BUG,我真是無(wú)語(yǔ)了~~
CDC和CRAY并非唯一斬IBM于馬下的公司,在小型機(jī)領(lǐng)域,IBM也是一敗涂地,勝利者叫做DEC(數(shù)據(jù)設(shè)備公司,成立于1957年,明明是家計(jì)算機(jī)公司,招牌上卻不帶計(jì)算機(jī)字樣,之所以如此,是因?yàn)楫?dāng)時(shí)IBM在計(jì)算機(jī)領(lǐng)域只手遮天,不敢攖其鋒芒也),創(chuàng)始人Ken.Olsen,是計(jì)算機(jī)歷史上一個(gè)頗有悲劇色彩的人物,他能力非凡, 白手起家創(chuàng)建了長(zhǎng)期排名世界第二的計(jì)算機(jī)公司,在1986年被《財(cái)富》雜志評(píng)選為“全美歷史上最成功的企業(yè)家”,但最終卻因經(jīng)營(yíng)不善,被他自己一手創(chuàng)建的公司掃地出門(mén)(Steve.Jobs倒也有此經(jīng)歷,不過(guò)他卷土重來(lái)了),更因?yàn)閷?duì)PC的錯(cuò)誤估計(jì)(1977年曾說(shuō)“我們沒(méi)有理由認(rèn)為人們會(huì)需要家用電腦”)被人們引為笑柄(其實(shí)犯這種錯(cuò)誤的名人多了,不一一列舉)。
為了不引起IBM注意,DEC推出的第一臺(tái)機(jī)器都不敢叫計(jì)算機(jī),而是取了個(gè)曖昧的名字叫做“程序數(shù)據(jù)處理機(jī)”(PDP,呵呵,了解電腦發(fā)展史的人肯定如雷貫耳)。PDP-1于1959年推出,全晶體管構(gòu)造,在當(dāng)時(shí)還是電子管計(jì)算機(jī)當(dāng)?shù)赖哪暝?#xff0c;可說(shuō)是相當(dāng)先進(jìn)。相比當(dāng)時(shí)的那些大塊頭,這臺(tái)只有冰箱大的機(jī)器顯得相當(dāng)小巧,這臺(tái)設(shè)計(jì)精良的機(jī)器讓DEC發(fā)展迅速,僅僅幾年功夫,DEC就從借來(lái)的七萬(wàn)美元起家發(fā)展到年銷售額幾百萬(wàn)美元,在六十年代初,這可是個(gè)很可觀的數(shù)字。
DEC堅(jiān)持走小型機(jī)的道路讓一些本來(lái)只能望著昂貴的計(jì)算機(jī)興嘆的單位終于可以買(mǎi)上一臺(tái),它獨(dú)創(chuàng)的分時(shí)技術(shù)也為更多的人使用計(jì)算機(jī)創(chuàng)造了機(jī)會(huì),在眾多的受益者當(dāng)中,有一個(gè)叫Ken Thompson,在操作系統(tǒng)的歷史上值得大書(shū)特書(shū)。
Unix可能是世界上最有影響的操作系統(tǒng),它的第一版是由Ken Thompson在一臺(tái)PDP-7上完成的。
Thompson當(dāng)時(shí)供職于AT&T的Bell Labs(貝爾實(shí)驗(yàn)室,一個(gè)資格極老、極牛的科研機(jī)構(gòu),晶體管就是在這里發(fā)明的,96年AT&T被拆分后劃歸朗迅),Bell Labs曾經(jīng)參與了一個(gè)叫做Multics(Multiplexed Information and Computing System)的研究聯(lián)盟,該項(xiàng)目旨在建立一個(gè)多功能的“信息應(yīng)用工具”,以支持多用戶對(duì)大型機(jī)的交互式分時(shí)操作,但跟IBM的360計(jì)劃一樣,這個(gè)志向高遠(yuǎn)的項(xiàng)目不幸以失敗告終,盡管也得到了幾個(gè)不太成功的系統(tǒng)。Thompson參與了這個(gè)開(kāi)發(fā)項(xiàng)目,散攤子的時(shí)候,他收獲了一些靈感,還有一個(gè)自己編寫(xiě)的游戲(不務(wù)正業(yè)啊~~這個(gè)叫做《星際旅行》的游戲只比公認(rèn)的史上第一款游戲《太空爭(zhēng)霸戰(zhàn)》(1962)晚了幾年而已)。
Thompson首先是在GE(通用電器,沒(méi)錯(cuò),他們那時(shí)也造計(jì)算機(jī))的大型機(jī)上玩,糟糕的是,在這臺(tái)機(jī)器上,源自Multics項(xiàng)目的操作系統(tǒng)運(yùn)行的很不盡人意,玩起游戲來(lái),響應(yīng)忽快忽慢,讓Thompson很是不爽(我們當(dāng)然能夠理解,想想你正在魔獸中殺的過(guò)癮,機(jī)子忽然停下來(lái)狂讀硬盤(pán)是何等掃興),于是他以開(kāi)發(fā)一個(gè)新的交互式操作系統(tǒng)的名義,向領(lǐng)導(dǎo)要求配備一臺(tái)DEC-10——另外還有一個(gè)原因,據(jù)Thompson的死黨Dennis Ritchie(也是個(gè)大牛人,C語(yǔ)言的發(fā)明者,Unix的合作發(fā)明者)透露,在Ge上玩一次游戲的費(fèi)用高達(dá)75美元(當(dāng)時(shí)的機(jī)時(shí)可是很貴的),想來(lái)如此揮霍公款,Thompson心下也有點(diǎn)惴惴,要臺(tái)機(jī)子自己瞎掰,就安全的多——但剛在Multics項(xiàng)目上遭遇失敗的領(lǐng)導(dǎo)們斷然拒絕了他的無(wú)理要求(呵呵,可憐的Thompson),最后,Thompson只搞到了一臺(tái)已經(jīng)廢棄的PDP-7。
PDP-8是DEC的第一臺(tái)采用集成電路的計(jì)算機(jī)(第三代),也就是說(shuō)PDP-7還是一臺(tái)晶體管計(jì)算機(jī),這就好比,你向領(lǐng)導(dǎo)打報(bào)告要配一臺(tái)酷睿2,最后卻只能在倉(cāng)庫(kù)里翻一臺(tái)286出來(lái)用,Thompson的沮喪可想而知。PDP-7的配置如何,我沒(méi)查到資料,但PDP-11也只有512KB的磁盤(pán),PDP-7想來(lái)更少得多,內(nèi)存應(yīng)該只幾十K(別吃驚,這個(gè)數(shù)字我估計(jì)得很樂(lè)觀了,幾十K內(nèi)存也是可以做不少事的,Gates同學(xué)寫(xiě)的第一個(gè)BASIC解釋器可是在一臺(tái)4K內(nèi)存的Altair上跑),顯示器當(dāng)然是別想,一臺(tái)電傳打字機(jī)把輸入輸出都包了(什么?沒(méi)顯示器怎么玩游戲?誰(shuí)告訴你是游戲一定是視頻的?)。后來(lái),Thompson在憶苦思甜的時(shí)候告訴Raymond,我那時(shí)用的機(jī)子那個(gè)慘啊,內(nèi)存磁盤(pán)加一塊還趕不上現(xiàn)在一個(gè)最便宜的手機(jī)~~
要在這么爛的的機(jī)器上玩游戲,當(dāng)然得下一番功夫,原有的系統(tǒng)肯定是不能支持了,得重頭干,沒(méi)說(shuō)的,為了游戲。經(jīng)過(guò)Multics項(xiàng)目的煅煉,Thompson對(duì)于寫(xiě)操作系統(tǒng)已很在行,反正機(jī)器爛,不可能搞什么復(fù)雜的名堂,什么項(xiàng)目計(jì)劃書(shū)呀,都免了,就跟Ritchie兩人合計(jì)合計(jì),他一個(gè)人花了兩天時(shí)間就搞出來(lái)一個(gè)原型,厲害吧?WindowsNT的主設(shè)計(jì)師(也是VMS的設(shè)計(jì)師)David Cutler曾有一句名言——“Who can't write an OS in a week?”,固然牛氣哄哄,比起Thompson似乎還頗有不如,呵呵。
那是1969年,Thompson搞出來(lái)的這個(gè)東西就是Unix的雛形,盡管把它稱作Unix還有點(diǎn)勉強(qiáng),但已經(jīng)顯示出Unix的一些基本特征——簡(jiǎn)潔、高效、比當(dāng)時(shí)所有的操作系統(tǒng)都更注重交互性、對(duì)程序員友好(它就是程序員寫(xiě)出來(lái)給自己用的,是當(dāng)時(shí)唯一允許程序員邊寫(xiě)代碼邊測(cè)試的系統(tǒng)),也許,還有那么一點(diǎn)散漫,而且,即使如此惡劣的硬件條件下,它仍然具備一個(gè)簡(jiǎn)陋的文件系統(tǒng),有特殊的文件類型以支持目錄和設(shè)備,甚至,可以支持多任務(wù)(想想晚它十幾年問(wèn)世的DOS還只能支持單任務(wù),就知道Thompson有多牛了,當(dāng)然,DOS可以用變通的方式支持多任務(wù),但畢竟不是原生的)。當(dāng)然, 還有很多Unix的特性它還不具備,比如,它的核心是用匯編寫(xiě)的(匯編器也是Thompson自己寫(xiě)的),當(dāng)然不具備可移植性,并且,只支持兩個(gè)用戶(想來(lái)就是Thompson和Ritchie,呵呵)。
有一點(diǎn)值得一提,這個(gè)系統(tǒng)除了用匯編以外,還用到了另外一種語(yǔ)言,就是解釋型的B語(yǔ)言(也是Thompson自己發(fā)明的,這家伙真是自力更生模范的說(shuō)~~),主要用來(lái)寫(xiě)應(yīng)用程序。B語(yǔ)言是Thompson在一種叫作BCPL(Basic Combined Programming Language,由劍橋大學(xué)的Matin Richards在CPL語(yǔ)言的基礎(chǔ)上簡(jiǎn)化而來(lái),CPL是在ALGOL 60語(yǔ)言上發(fā)展而來(lái),至于ALGOL 60可就牛了,它被稱作是“計(jì)算機(jī)科學(xué)誕生的標(biāo)志”,這些語(yǔ)言通通源自劍橋)的語(yǔ)言的基礎(chǔ)上簡(jiǎn)化改進(jìn)而來(lái)(之所以叫B語(yǔ)言,就是把BCPL精簡(jiǎn)提煉的意思),它非常簡(jiǎn)單(不支持?jǐn)?shù)據(jù)類型和結(jié)構(gòu),放在今天真難以想像),并且極親近硬件,可以把它看作是一種稍微高級(jí)了一點(diǎn)的匯編語(yǔ)言。后來(lái),Ritchie給B語(yǔ)言加上了數(shù)據(jù)類型和結(jié)構(gòu)的支持,推出了一代王者——C語(yǔ)言(意思是“BCPL”中排在B之后,在TIOBE語(yǔ)言排行榜上至今在一、二名徘徊),并將Unix用C語(yǔ)言重寫(xiě),那就是后話了。
經(jīng)過(guò)一番鼓搗,Thompson的游戲終于可以在PDP-7上跑起來(lái)了,但這臺(tái)機(jī)子畢竟太爛,而且還是借來(lái)的,Thompson他們一直期待著能搞臺(tái)更好的機(jī)器用,在1970年,這個(gè)機(jī)會(huì)來(lái)了,Bell Labs的專利部門(mén)需要一套“文字處理系統(tǒng)”(他們的專利可是很多的),當(dāng)時(shí)可沒(méi)有現(xiàn)成的Word,Thompson就把這活接下來(lái)了, 并名正言順地買(mǎi)了一臺(tái)PDP-11/20(比當(dāng)初申請(qǐng)的DEC-10還是便宜多了)。
他們首先把Unix從PDP-7上移植了過(guò)來(lái),匯編寫(xiě)的代碼沒(méi)什么可移植性,所以基本上就是在PDP-11上重寫(xiě)了一次,這種沒(méi)多大創(chuàng)造性的工作想來(lái)做起來(lái)并不怎么愉快,給后來(lái)Thompson下定決心,用高級(jí)語(yǔ)言(C語(yǔ)言)來(lái)寫(xiě)操作系統(tǒng)增加了動(dòng)力(MULTICS可能是最早用高級(jí)語(yǔ)言寫(xiě)操作系統(tǒng)的嘗試,當(dāng)時(shí)用的是PL/I,以失敗告終,那時(shí)的普遍觀念,操作系統(tǒng)是不宜用高級(jí)語(yǔ)言來(lái)寫(xiě)的)。
在PDP-7上,他們?cè)?jīng)寫(xiě)過(guò)一個(gè)叫做roff的文本格式化程序,再配上一個(gè)編輯器,一個(gè)“文字處理系統(tǒng)”基本上就齊活了,于是Bell Labs的專利局成了Unix的第一個(gè)商業(yè)用戶,這是在1971年11月,在與系統(tǒng)配套的手冊(cè)中,該版本被稱做“First Edition”,有些史料就把這一年作為Unix的誕生之日。
順便說(shuō)一下,Unix這個(gè)名字是Thompson在Bell Labs的同事Brian Kernighan取的,在1970年,Kernighan開(kāi)玩笑地把Thompson在PDP-7上的那個(gè)簡(jiǎn)陋系統(tǒng)稱為“UNICS”,意思是“UNiplexed Informationand Computinig System”,這是相對(duì)于MULTICS來(lái)的, MULTICS是“Multiplexed Information and Computing System”的意思,后來(lái),UNICS變成了Unix并且流傳開(kāi)來(lái)(這種簡(jiǎn)化應(yīng)該是出自一種黑客趣味)。
1972年Unix發(fā)布了第二版,最大的改進(jìn)是添加了后來(lái)成為Unix標(biāo)志特征之一的管道功能,所謂管道,就是程序之間交流數(shù)據(jù)的通道。這一設(shè)計(jì),對(duì)鼓勵(lì)簡(jiǎn)潔、小巧、靈活,而又注重通用和協(xié)作的Unix程序設(shè)計(jì)風(fēng)格意義重大,與此相關(guān)的,還有過(guò)濾器這一設(shè)計(jì),Unix下的程序大多小而精,但相互之間的協(xié)作性極好,與WINDOWS下推崇大而全的程序設(shè)計(jì)風(fēng)格大異其趣,這是在系統(tǒng)設(shè)計(jì)之初就埋下了種子的。這一年,Unix的裝機(jī)數(shù)達(dá)到10臺(tái),都是Bell Labs內(nèi)部的機(jī)器。
在寫(xiě)第二版的時(shí)候,Thompson和Ritchie曾經(jīng)試圖用B語(yǔ)言來(lái)重寫(xiě)核心,但因?yàn)锽語(yǔ)言功能太弱,最后放棄了。Ritchie因些萌生了搞一個(gè)新語(yǔ)言的想法,它必須強(qiáng)大到可以寫(xiě)系統(tǒng)級(jí)軟件。于是,在對(duì)B語(yǔ)言進(jìn)行了卓越的改進(jìn)之后,一個(gè)傳奇——C語(yǔ)言誕生了,這是在1973年,此后,這一語(yǔ)言包攬了絕大多數(shù)的系統(tǒng)級(jí)開(kāi)發(fā),在前兩年泄露出來(lái)的WINODWS2000的多達(dá)幾百M(fèi)的源代碼中,大家看到,除了極少的匯編和C++,絕大部分代碼都是C語(yǔ)言寫(xiě)就,在記者問(wèn)到Ritchie為什么C語(yǔ)言會(huì)如此受歡迎時(shí),Ritchie很低調(diào)的回答,可能是C語(yǔ)言的抽象程度既能滿足需要,又比較容易掌控。跟Unix一樣,C語(yǔ)言確實(shí)是一種簡(jiǎn)潔而優(yōu)美的語(yǔ)言,“審美”是這種殿堂級(jí)軟件設(shè)計(jì)思想的核心,愛(ài)因斯坦曾經(jīng)說(shuō)過(guò),描述基本物理理論的數(shù)學(xué)方程中必須有美,與軟件設(shè)計(jì)倒是不謀而合(但世事難料,比如Windows,或者Perl,這些許多人認(rèn)為比較臃腫、丑陋的設(shè)計(jì)也都活得有滋有味,當(dāng)然,能挺多久難說(shuō))。順便說(shuō)一下,雖然C語(yǔ)言如此威猛,但身為C語(yǔ)言之父的Ritchie最愛(ài)的語(yǔ)言卻并不是它,而是一種我聽(tīng)都沒(méi)聽(tīng)說(shuō)過(guò)的Alef。
有了C語(yǔ)言這柄利劍,Thompson和Ritchie很快就重寫(xiě)了Unix,在MULTICS項(xiàng)目失敗以后,用高級(jí)語(yǔ)言寫(xiě)操作系統(tǒng)的夢(mèng)想終于實(shí)現(xiàn)了,好多年后,Ritchie驕傲的寫(xiě)到,很肯定,Unix的成功很大程度上源自其以高級(jí)語(yǔ)言作為表述方式所帶來(lái)的可讀性、可改性和可移植性。看著這個(gè)基本上達(dá)到了預(yù)想的作品,Thompson和Ritchie不免有些沾沾自喜,覺(jué)得可以拿出去“炫”一把了,于是在1974年,他們?cè)凇睹绹?guó)計(jì)算機(jī)通信》(Communications of the ACM)上發(fā)表了一篇文章,第一次對(duì)外面的世界展示了Unix的存在。
且說(shuō)這個(gè)新版的Unix搞出來(lái)以后,Bell Labs里的很多科學(xué)家都挺感興趣,經(jīng)常跑到那臺(tái)PDP-11上去鼓搗一番,但很快他們就發(fā)現(xiàn),自己設(shè)置的帳戶Thompson總能輕易地闖進(jìn)去,Bell Labs里的人物豈是泛泛之輩,怎甘受此羞辱,于是就有人把源碼翻了出來(lái),經(jīng)過(guò)一番分析,去掉了后門(mén),然后重新編譯,于是,整個(gè)世界清靜了——且慢,正在他們沾沾自喜的時(shí)候,卻發(fā)現(xiàn),帳戶又被Thompson破解了,這下大家徹底郁悶了,這一郁悶就是好多年,Thompson的洋洋自得就別提了。直到14年后,Thompson才突然良心發(fā)現(xiàn),道出了個(gè)中巧妙,原來(lái)代碼中的后門(mén)是有的,不光是系統(tǒng)本身,還藏了一個(gè)在C編譯器中,系統(tǒng)本身的后門(mén)雖然被清除了,可還是用有后門(mén)的編譯器來(lái)編譯的啊!哈哈。
而Ritchie就厚道多了,他只是很熱心地向大家推介他的C語(yǔ)言,并鼓勵(lì)大家使用C語(yǔ)言中的函數(shù)調(diào)用——這真是一種先進(jìn)的設(shè)計(jì)方法,何況還有Ritchie信誓旦旦地保證——C語(yǔ)言中的函數(shù)調(diào)用的機(jī)器開(kāi)銷真的很小很小,于是,人人都開(kāi)始寫(xiě)函數(shù),搞模塊化,等到大家終于搞清楚,在PDP-11上,函數(shù)調(diào)用的機(jī)器開(kāi)銷竟達(dá)到50%時(shí),已經(jīng)是積習(xí)難改、欲罷不能了,至于Ritchie,當(dāng)然是躲到一邊偷笑去了(話說(shuō)回來(lái),這種設(shè)計(jì)思想畢竟是正確而先進(jìn)的,只是在當(dāng)時(shí)落后的硬件條件下,顯得有些奢侈,呵呵)。
Thompson和Ritchie在Communications of the ACM上的文章發(fā)表后,引起了許多大學(xué)和實(shí)驗(yàn)室的關(guān)注,因?yàn)槲闹兄毓拇礥nix的簡(jiǎn)約設(shè)計(jì)及在低性能機(jī)器上的良好表現(xiàn),大家(主要是那些用落后機(jī)器的窮單位,嘿嘿)都想見(jiàn)識(shí)一下。本來(lái)這是筆送上門(mén)來(lái)的生意,但AT&T有點(diǎn)特殊情況,因?yàn)樗蓙?lái)已久的壟斷地位,早在1958年就被反托拉斯調(diào)查,根據(jù)那次調(diào)查達(dá)成的協(xié)議,AT&T不準(zhǔn)進(jìn)入計(jì)算機(jī)相關(guān)的商業(yè)領(lǐng)域(IBM少了個(gè)大對(duì)頭),也就是說(shuō),AT&T不能拿Unix賣錢(qián)(交待一下,Unix雖然是Thompson他們自作主張搞出來(lái)的,但畢竟是AT&T員工的工作成果,因此AT&T享有版權(quán)),而且依據(jù)那次協(xié)議,AT&T有義務(wù)將電話(這是本行)以外的技術(shù)許可給任何提出要求的人——這條有點(diǎn)匪夷所思,簡(jiǎn)直是欺負(fù)人嘛:)——正是這條協(xié)議,給Unix的流傳大開(kāi)方便之門(mén)。于是,在僅收取工本費(fèi)之后,Thompson開(kāi)始將Unix的磁帶和磁盤(pán)一包包的寄往世界各地(是不是有點(diǎn)史詩(shī)味道?:)——據(jù)說(shuō),每一包里都附了張小紙條,上書(shū)“l(fā)ove,ken”——真是劍膽琴心的說(shuō)~~~~
寄出去的Unix是第五版,附有源代碼。猶如散落的火種,這些被安裝在各處管理松散的廉價(jià)計(jì)算機(jī)上(這點(diǎn)很重要,如果是安裝在昂貴的大型機(jī)上,就沒(méi)有那么多機(jī)會(huì)讓人瞎鼓搗了)的操作系統(tǒng),點(diǎn)燃了許多計(jì)算機(jī)愛(ài)好者的創(chuàng)造熱情,他們?nèi)找岳^夜撲在上面,擺弄代碼,添加功能,然后彼此交流,相互炫耀。不少大學(xué)都開(kāi)始拿Unix作教學(xué)之用。
大家在遇到麻煩的時(shí)候,可以向Thompson他們的小組打電話 , 或者通過(guò)原始的UUCP(Unix to Unix Copy Program, Bell Labs開(kāi)發(fā)的一的種在Unix機(jī)器之間通過(guò)電話線和MODEM通訊的程序)發(fā)送問(wèn)題,甚至可以跑到Bell Labs去與他們當(dāng)面交流。Unix許多重要的改進(jìn)和發(fā)展正是由這群主要來(lái)自于各所大學(xué)的愛(ài)好者們完成的,這些成果被反饋到Bell Labs。在1979年發(fā)布的第7版Unix中包含了很多由愛(ài)好者們貢獻(xiàn)的創(chuàng)意乃至代碼,這是公認(rèn)的第一個(gè)完整意義上的Unix。可惜由于版權(quán)問(wèn)題及商業(yè)利益的影響,這種開(kāi)歷史先河的發(fā)展模式并沒(méi)有持續(xù)多久,幸好,在好多年以后,在Internet的支持下,我們將會(huì)看到,Linux,這一Unix的變種,成功地將這一模式予以了輝煌的再現(xiàn)。
最早散布出去的UNIX幾乎都是裝在DEC的PDP機(jī)器上,在1976年前后,開(kāi)始有好事者將其移植到其他種類的機(jī)器上,包括Interdata系列、IBM的Series1系列以及VM/370。這時(shí),Thompson和Ritchie用C語(yǔ)言編寫(xiě)系統(tǒng)的苦心開(kāi)始得到回報(bào)——即使是設(shè)計(jì)大不相同的異構(gòu)機(jī)器,移植工作也進(jìn)行的相當(dāng)順利(當(dāng)然,是相對(duì)的),Ritchie甚至宣稱,將UNIX移植到別的機(jī)器上比把一個(gè)應(yīng)用程序移植到另一個(gè)操作系統(tǒng)中還要簡(jiǎn)單。1978年,DEC公司推出新的拳頭產(chǎn)品VAX后,UNIX很快就被移植到上面,盡管沒(méi)有支持VAX特有的換頁(yè)功能(一種內(nèi)存管理的技術(shù)),但仍然很快流行開(kāi)來(lái),對(duì)DEC苦心開(kāi)發(fā)的專門(mén)用于VAX機(jī)器的VMS構(gòu)成了重大威脅。
UNIX在初期主要是用于DEC的機(jī)器,盡管沒(méi)有正規(guī)的技術(shù)支持,但仗著靈活、快捷、容易修改和擴(kuò)充以及資源豐富(包括支持的硬件設(shè)備更豐富,DEC的操作系統(tǒng)只支持自己的系列產(chǎn)品)的強(qiáng)大優(yōu)勢(shì),很快就嚴(yán)重影響到DEC自身的軟件推廣。碰上這樣的飛來(lái)橫禍,DEC當(dāng)然是非常惱火,他們對(duì)使用UNIX而帶來(lái)的硬件問(wèn)題拒不提供支持,但盡管如此也不能阻擋大家對(duì)UNX的熱情。而VAX/VMS乃是DEC寄予厚望的戰(zhàn)略級(jí)產(chǎn)品,技術(shù)那是相當(dāng)?shù)膬?yōu)秀,居然甫一推出,就又遭到UNIX的追殺,也難怪老板Olsen會(huì)口出惡言,譏諷UNIX是“蛇油”(意為“騙人的萬(wàn)用藥”)了。DEC苦撐了幾年之后,終于不支,改變態(tài)度,于1982年推出了自己的UNIX變種——DEC ULTRIX,但在推廣策略上,仍是以自家的VMS為主導(dǎo)。DEC公司的保守作風(fēng)終于釀成大禍,在別的公司推出專門(mén)針對(duì)UNIX設(shè)計(jì)的機(jī)器后,DEC的江湖地位每曠愈下,在PC問(wèn)世后,更是一蹶不振,后來(lái)連年虧損,1992年把Olsen趕下臺(tái)也沒(méi)解決問(wèn)題,終于在1998年,這個(gè)曾經(jīng)的傳奇——一度排名世界第二的計(jì)算機(jī)公司被后起之秀COMPAQ并購(gòu),不過(guò)96億美元的天價(jià)也算是對(duì)它價(jià)值的承認(rèn)。COMPAQ后來(lái)被HP以260億美元收購(gòu),HP后來(lái)被……HP這么大的塊頭,估計(jì)一時(shí)半會(huì)也沒(méi)人吞得下它,呵呵。
DEC的機(jī)器曾是UNIX誕生的溫床,但DEC的沒(méi)落UNIX卻起到了相當(dāng)重要的推波助瀾的作用,如果DEC當(dāng)時(shí)采取擁抱UNIX的策略,也許計(jì)算機(jī)產(chǎn)業(yè)又是另一番格局了。當(dāng)然,世事難料,這種推測(cè)也只是扯淡罷了。
??????原帖鏈接http://www.tianya.cn/new/publicforum/content.asp?idarticle=52231&stritem=itinfo
轉(zhuǎn)載于:https://www.cnblogs.com/yizhu2000/archive/2007/09/06/884903.html
總結(jié)
以上是生活随笔為你收集整理的[转]奇文-闲话操作系统(1/4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 向页面中添加音乐或flash
- 下一篇: [转]获取机器的硬件信息(CPU ID序