我所理解的計算機 三 之 UNIX與交響樂

2021-04-01 06:25:01 字數 2366 閱讀 7317

表面上看unix是一種作業系統,實際上它代表著計算機世界裡的貴族文化。如果你做得事是和unix沾上一點邊,那麼大家都對你刮目相看,哪怕你是看機房的。

unix產生和發展以大公司和大學為背景

[d1] (那時候有數的幾台計算機都在**、大公司、學校裡)教授和學生都有很多研究題目需要用計算機來算。而作業作業系統在多人共享使用方面做得太差,提交乙個作業要排很久的隊,還要看管理員的臉色行事,比現在買經濟適用房還難。終於在某個大學,幾個老師和學生受不了了,寫出了一種面向多使用者的作業系統,叫做unix。實際上它的本意是單使用者作業系統,這點幽默有跟我們京劇中的淨角有暗合的意思。它的努力方向是讓更多的人可以來使用計算機,下面就會說到它努力的成果。

它讓每個使用計算機的人都有乙個自己獨佔的使用者介面,互不影響。雖然許可權上仍然受管理員的限制,但是在授權範圍內有了最大程度的自由。你可以和你的程式你一言我一語的互動,也可以把程式扔在後台,然後聊天泡mm或者玩遊戲,再也不用通過管理員了。

使用者終端獨佔好說,反正**便宜量又足。但是印表機、掃瞄器、月光寶盒什麼的,一人乙個實在是奢侈,一起用又會亂套。動不動就把分別給mary和betty的情書混著打到一起,可不能冒這個險。所以就有了虛裝置這個概念,作業系統偽造乙個裝置給使用者使用,其實真正的裝置它給藏起來,只自己用。它有這個權利是因為它宣誓公正完整的完成所有使用者交給的任務,使用者就滿足於表面上的獨佔使用而不深究了。【馬丁.福勒說:

[d2] 程式設計師認為所有的問題都可以通過增加一層間接性加以解決的】

多個使用者的多個程式都會同時在一台主機上執行,有時候乙個程式還要同時執行幾個例項。程式在記憶體中的執行實體叫做程序,主機中的程序數要遠大於cpu的數量(cpu很貴的)。平衡這個矛盾的方法叫做程序排程。排程演算法要滿足cpu這個不知疲倦的工作狂,又能讓使用者感到公平,還要能讓有急事的先乾。一般都是帶優先順序請求佇列的輪轉時間片演算法,或者類似的。

unix還有乙個我最喜歡的優點,它把所有的東西都看成是檔案。不管是資料、程式、裝置、記憶體……統統都用檔案的形式來表示,簡單有效。從unix開始,檔案成為了使用最廣泛的資料表示形式。現在說到檔案的時候我已經不再聯想到紙了,只有拷貝的慾望。

現代作業系統基本上全都具備上邊的特徵,或者類似,好像沒什麼特別的。但是那是在70年代,已經足夠先鋒了,和在溫布林登球場裸奔的尊敬的女士有的一比。

在那只有字元介面和單色顯示器的時代,人們如果只能使用作業系統提供的命令,程式語言的語法又那麼簡單,那坐在機器前該多單調啊!怎麼可能吸引那麼多程式設計師用unix。所以unix的使用者環境,洋文叫做shell,提供了處理字元文字的程式設計能力,而且這個能力隨時間越來越強大。處理文字的著名工具awk的作者那三個老外aho 、 weinberger 和kernighan還因為研究文字處理的正規表示式而獲過圖靈獎。shell的程式設計能力是立等可取的,現在追求快速程式設計的各種指令碼語言都是以它為鼻祖。喜歡吃快餐的程式設計師基本上都是指令碼語言的愛好者。

指令碼語言畢竟能力有限,偶爾吃吃還能忍,一年到頭吃誰也受不了。林林總總的高階語言還是程式設計師的主要兵器。這些兵器表達邏輯的能力很強,只要你能想出來的邏輯行為都可以用標號、跳轉(goto)表達出來。但是這種能力傷敵的時候也容易傷到自己。當年我用basic的時候,當程式行數一多,就會覺得自己是乙隻迷宮裡的**在程式裡跳來跳去,在沒有像仙劍那樣的帥哥美女吸引我的時候,一般我對迷宮沒什麼興趣。這時候dijkstra跳了出來,告訴我們其實所有程式邏輯都可以表示為順序、條件、迴圈三種形式,所有的程式宮殿都只需要三塊積木就能搭出來。這種程式就叫做結構化程式,我個人認為叫做塊狀程式或者磚頭狀程式更形象。磚頭程式的意義在於它的邏輯表示更貼近人的邏輯思考習慣,而不是更貼近計算機,而且使程式重用成為可能,當然重用的前提是磚頭的質量比較好。像我們人類這麼容易犯錯又懶惰,只有磚頭程式才有可能壘到幾十萬行那麼大。

說了這麼多,該回到我們的unix上了。與unix聯絡最密切的磚頭語言叫c語言。最早unix不是用c語言寫的,但是當它們相遇的時候,就產生了一段浪漫而穩定的婚姻。unix被c語言重寫以後煥發了前所未有的力量,而c語言的介面主宰了作業系統的api定義,並成為作業系統或者同層次程式開發的首選。c語言厲害之處在於:1,具有向彙編靠攏的執行效能;2,具有結構化的特點,就是可以寫成磚頭。3,易學難精,學好以後都是牛人,還不愁沒有學徒,掙錢大大的容易。因此c語言及衍生語言(後邊會講到c++)形成了目前世界上第一大的程式設計師生物群落,並牢牢把持住了作業系統級程式開發這塊領地。

到後來unix便繼承了由作業計算機遺留下來的產業,並全面接管了大中小型伺服器領域。隨便點幾個名字,aix, hp-unix,solaris, sco-unix都是unix林林總總的變種的一種,它們長相雖然不一樣,骨子裡的脾氣秉性都非常相似。除了伺服器,也有人使用unix工作站。但是因為貴和複雜,unix在小型伺服器和工作站市場上站的並不那麼穩當,後面我們會看到乘虛而入的競爭對手們。

[d1]本部分參考unix作業系統教材和《life with unix(r) -- a guide for everyone》don libes, sandy ressler

[d2]《重構》

《我與計算機》

1.個人介紹 我是計應191 西 的康文龍。第一次接觸計算機的時候是小學一年級的時候。那個時候看我哥玩電腦,便坐在旁邊 對此產生很大的興趣。便從小學一直到現在還在繼續堅持。學的其實並不怎麼的。但是一些基礎的東西還是有點懂得。本人邏輯思維並不是那麼強,所以後端並不太適合我。我比較喜歡鑽研前端設計。我是...

我與計算機

說起計算機,我竟然了解很少,作為計算機專業一名學生,我感覺我對計算機很陌生,來到大學,我是乙個對口來的,因為在高中就已經接觸計算機了,而我在這三年中並沒有學到什麼感覺,因為所在學校我並沒有真正認識計算機是幹什麼的,從當初選擇這門專業的時候,我就像老師所說的一樣,衝著電腦打遊戲而來的,而我在這裡感覺到...

我與計算機

第一次見到 接觸到計算機是在初中,那時候每週一節電腦課,但是那時候課上老師不講課,進去之後就是玩遊戲,初三就已經沒有了,再接觸就是在中專的時候了,前兩年學的平面設計皮毛,最後一年的學高考課程,死記硬背了一年。高考前後沒多久你問我計算機開機過程 某些硬體定義 效能指標什麼之類的,我也許會將書上的定義一...