笨兔兔的故事——帶你瞭解Ubuntu,瞭解Linux (34~37)

來源:互聯網
上載者:User
  (34) QQ  
  
主人整來一大堆照片,用GIMP處理了一下,調調顏色,亮度啥的,還別說,調完了還是比以前好看了不少。不過,有道是獨樂樂不如眾樂樂,主人光自己看著好看不行,還想和朋友分享,怎麼辦呢?找人吧,這個人您大概也認識——QQ。
  
Qq和皮筋一樣,也是一個即時通訊軟體,也就是個送信的。不過他不是超級牛力從軟體源裡請的,而是狐狸妹妹直接去QQ的網站上下載的。這QQ是一個叫做疼痛,哦不對,叫疼……疼什麼來著?哦,對,疼殉,一開始是疼,後來就殉了-_-b,是一個叫疼殉的公司做的。話說這個疼殉啊,看人家icq軟體玩的挺火,於是也弄了個oicq,搶佔了國內市場,結果一發不可收拾。後來oicq改名,叫QQ了,可是一直以來,由於各種原因,疼殉這個公司只能做出wdinwos版本的QQ來,linux下的沒有。要說沒有也不要緊,人家google
talk也沒有linux的版本,但是人家是基於開源的XMPP協議的,協議是公開的,於是世界各地的linux牛人們,很輕易的就做出了很多種用來在linux下聊googlt
talk的軟體。其實就算他們不做這些,皮筋本身也是支援XMPP協議的,設定一下就能聊gatlk了。可是QQ不一樣,QQ的協議是那個疼殉公司自己定的,還不讓別人知道,又不提供linux的版本,結果,在linux下使用QQ一直是個很頭疼事情。當然,這些都是曆史了,現在疼殉公司終於想開了,提供了linux版的QQ,雖然功能簡陋的不能再簡陋,不過,傳個圖片還是沒問題的。好,廢話不多說(這廢話就不少了),趕緊叫QQ起床幹活去。
  
QQ迷迷瞪瞪的走進工作間,把主人寫的文字一條條的打好包,封好信封,寄給那邊的QQ。過了一會主人要發圖片了,QQ有點忙亂,好像對寄圖片這工作不如寄文字來的順手,不過好歹是寄出去了。mm那邊也寄過來兩張圖片,QQ收下了開啟給主人看,主人很滿一,讓mm多發幾張,於是mm一口氣發了5張,然後…………QQ就暈了,折騰好幾次也沒法和對方的QQ建立好串連,結果照片終於沒傳成。要說這傢伙也真是不爭氣,這麼點事情都做不好。主人一氣之下,只好把QQ關了,讓我去叫醒另一個人——EVA
  
EVA的大名相信大家都聽說過,他的英文名字叫EVA,他的中文名字叫新世紀福音戰士。話說日本有個貞本義行……哦,對不起,扯遠了。忘記貞本義行和新世紀福音戰士吧,他們跟我這裡的EVA沒關係,跟我這個EVA有關的是雲帆大姐姐。在疼殉公司還沒有給出linux版本QQ的時候,很多人們就用eva來聊qq,這個eva完全是雲大姐根據抓包研究的結果,黑盒破解windows的QQ而編寫的。功能也算是強大了,基本的聊天,傳圖片,群裡收發自訂表格情,都可以。甚至還支援顯示好友的自訂頭像。(這看似簡單的功能,疼殉官方的QQ目前都沒實現)於是,在QQ不靠譜的時候,主人還是叫來了可靠的EVA繼續跟mm傳圖片。QQ跟EVA有很多不同,一個是官方的,一個是山寨的(山寨不含貶義);一個是基於GTK的,一個是基於QT的;一個是閉源的,一個是開源的;一個是32位的,一個是64位的。

  (35) 運算
   有人問了,你老說這32位,64位。到底啥意思阿?
  
這個多少多少位,說的是cpu一次運算的位元字的位元。這個CPU就像是個計算機,我們軟體用CPU就像人類用計算機似的。它很重要,我們要算一丁點東西,也需要用CPU來算。(別跟我說用心算,我是軟體,ok?)那麼這個CPU算東西的能力,是有限制的,有什麼限制呢?你拿出你家的計算機看看,算個28+783,沒問題是吧。算個7836-473也沒問題是吧,再算個72635446584939202937346537+1,能嗎?估計99%的同志出問題了(不排除有牛人擁有很牛的計算機):"我哪能按出這麼多數來啊,我這計算機總共就能顯示下11位元字"。對,這就是計算機的位元限制。CPU也一樣,他一次能算的數不能無限的大,總得有個邊,只不過不是按照十進位的位元算的,而是按照二進位的位元算的。至於什麼叫十進位,什麼叫二進位,可以去問問狗狗大哥,不過不知道也沒關係,咱暫時按著咱們平常的十進位來說。比如說,我這個CPU只能算99以內的數字,也就是只有2位(十進位位啊)。那我們軟體用這個CPU的時候怎麼用呢,CPU有很多放資料的小匣子,叫做寄存器,每個寄存器有他特殊的用途,咱們就不多介紹了。要做加法的話,得這麼操作:有兩個寄存器,也就是小匣子啊,把這兩個小匣子開啟,往裡面放資料,資料比較抽象,就想想成寫著數位紙條吧。不過,由於是2位的CPU(再次聲明,咱這是拿十進位做比方啊,真正的CPU沒這樣的),所以寄存器裡只能放2位的資料,也就是說,紙條上只能寫99以內的數字放進去。那好,我寫一張12,放在A匣子裡,再寫一張9,放在B匣子裡,然後按個寫著"加法"的按鈕,只聽哢嚓一聲,CPU自動彈出一張紙,紙上寫著21,這就是他的計算功能。再算個大點的,寫一張50放進A,寫一張51放進B,按鈕,哢嚓,出來張紙,寫著01。那位說了,這算錯了啊這個!別急,緊接著哢嚓一下,又出來一張,寫著"對了,還得進一位",這回對了吧。為什麼呢?因為這CPU是兩位的,只能輸出兩位元,超出的就告訴你得進位。
  
好了,基本的操作說完了,現在說正題,不同位元的區別。兩位的CPU就像剛才說的那樣,那麼假設現在需要計算3173+644,這裡有2位的CPU一個,4位的CPU一個,分別用他們做這個計算,有什麼區別呢?  
  
咱先拿這兩位的,有人說了,兩位的只能算兩位啊,這個沒法算哪?唉,這機器是死的,咱軟體是活的啊,一次只能算兩位,咱不會分開了多算幾次麼。首先,寫一張73,寫一張44,按鈕,哢嚓,出來一張17,哢嚓又出來一張寫著還得進位,好,可記住了啊,還得進位。然後再寫一張31,寫一張6,按鈕,哢嚓,出來37。別忙,沒完,剛才還得進位呢麼不是,再寫一張37,寫一張1,按鈕,哢嚓,出來38。好,最後結果拼一塊,高位是38,低位是17,最後結果:3817
  
再拿這4位的算算看。4位的就意味著輸入的資料和輸出的資料都可以是4位,也就是說我直接就可以寫一張3173,寫一張644,放進去,按鈕,哢嚓,出來一張3817,算完收工~

(36) 位
  
這就是2位的CPU和4位的CPU的不同,從理論上來說,4位的要比2位的快,從上面的例子看的很明顯嘛,大一點的數,4位的CPU一下就能算完,2位的CPU要折騰好幾次。但是這4位的CPU還得有人會用才行,這就需要4位的軟體來用著個4位的CPU。
  
終於說到軟體的位元了,CPU的位元就是一次能計算多少位的數,那軟體的位元呢?就是說明這個軟體需要使用多少位的CPU。軟體幹活肯定需要計算,計算就得用CPU,2位的軟體會用2位的CPU,4位的軟體就會用4位的CPU(還是拿十進位位做比喻啊)。比如有一個2位的軟體(就說明這個軟體會用2位的CPU),那麼當這個軟體運行在一個2位CPU的電腦上的時候就是這樣:還比如要算3173+644,他就會先算73+44,然後記住進位,然後計算31+6,然後加上進位,最後拼起來,得到答案,就像上面描述的那樣。那麼當這個2位的軟體運行在一個4位的CPU上的時候會怎麼樣呢?他會先算73+44,然後記住進位,然後計算31+6,然後加上進位,最後拼起來,得到答案……有人說了,他怎麼不直接算啊?4位的CPU不是能直接就算出來嗎?但是別忘了他是兩位的軟體啊,他不會用4位的CPU,但是不會用不等於不能用,他還是可以那4位的CPU當成2位的來用,只是有些浪費而已。那麼要想完全發揮4位CPU的效能怎麼辦呢?當然就得4位的軟體出場了。當一個4位的軟體運行在一個4位的CPU上時怎麼計算3173+644呢?大家大概都知道了,直接算,一次完成。那麼當一個4位的軟體運行在一個2位的CPU上時會怎麼樣呢?這個軟體會寫個3173的紙條要往CPU的寄存器裡塞,急的滿頭大汗就是塞不進去,最後一甩手——不幹了,這破CPU沒法用!當然,這隻是個比喻,並不是說4位軟體在2位CPU上算3173+644就算不了,算1+1就能算。4位的軟體是根本無法運行在2位的CPU上的。

 (37) 協作
  64位的EVA熟練的使用著64位的CPU;同時,32位的奔流也在使用的同一顆CPU;(當然,是當成32位的用。)同時,皮筋也時不時的彙報一下主人的MSN和GTalk上的好友是否有訊息發來;同時,狐狸妹妹也沒閑著,遊走在個個網站之間;同時………………總之,記憶體裡大家各司其職,一派繁榮和諧的景象。而這和諧景象的背後,是由於我認真的學習了XXX思想,XXX理論,並且還戴了三個表。
-_-b
  好吧,其實之所以大家能夠如和諧的同時工作,都因為我是一個多任務的作業系統。什麼是多任務呢?直觀的說,就是你能一邊聊天,一邊看電影還一邊打字。(什嗎?你說你不能?那是因為你的大腦不是多任務系統。)有的人要說了,哪個電腦哪裡系統不能一邊聊天一邊打字了?這說來又話長了,話說很久以前,還是那有點軟的公司,在查皮的老祖宗問世之前,有點軟公司賴以起家的,是一個叫做"剁死"(DOS)的作業系統。這個作業系統就是單任務的,也就是說,同時只能有一個軟體在記憶體裡運行。
  難道多讓幾個程式跑進記憶體裡很難嗎?答案是——沒錯。我們工作用的記憶體阿CPU阿,都是很重要的資源,尤其CPU,一個CPU同時只能有一個程式在用(現在的多核心CPU對程式來說就是多個CPU),如果要讓很多程式同時跑進來一起幹活,就一定要對CPU進行合理的分配。剁死系統就比較簡單,基本不管分配的事情。比如主人要啟動狐狸妹妹(那念頭當然還沒有狐狸妹妹,咱就打個比方),如果是剁死系統的話,他就會跑去叫醒狐狸妹妹,然後跟她說:狐狸阿,起床幹活了,你看咱這有一個奔騰166的CPU,16M的記憶體,夠你用的不夠?狐狸說,夠了。然後剁死就說,那好,你去幹活吧,我就不管了,幹完了叫我。然後剁死就睡覺去了,整個機器歸狐狸妹妹控制。所以不可能同時運行兩個程式嘛。  
  那多任務的系統又是怎樣的呢?比如我和隔壁的查皮,都是多任務的作業系統,我們不會把整個電腦的所有資源都給一個程式用,而是進行合理和規劃。還比如叫狐狸妹妹,我會去跟她說:狐狸阿,起床幹活了。狐狸妹妹會起來跟我說,好,我現要10M的記憶體。我說檢查一下記憶體空間,然後告訴她,可以,那一塊10M的地方給你用。然後狐狸就走進工作室,開始工作的時候,一定要用到CPU,需要用的時候狐狸要找到我,向我提出申請。我根據情況,看現在有沒有人正在用CPU,要是有的話就讓狐狸等一下,沒有的話就給她用。但是給她用也不能就讓他一直用,只能讓她用一會,因為還有別的程式要用。這個"用一會"的時間,專業的說法叫做時間片。每個運行著的程式都輪流的"用一會",也就是每個程式都分配一定的時間片。沒有分到時間片的程式就等著,不過這個切換的時間是非常短的,在主人那雷根本感覺不到程式等待使用CPU的時間的,所以在主人看來,就是多個程式一起運行了,也就是我們所說的多任務。
  多任務的實現也有不同的模式,有協同式多任務,和搶佔式多任務。
  協同式多任務,需要每個正在使用CPU的程式主動放棄CPU控制權,並由作業系統再次分配。如果我是個協同式多任務的作業系統,那就是這個樣子的:狐狸妹妹用了一會CPU說,好了,我暫時不用了,去網口等個資料包去。兔子哥你讓下一個程式用吧。然後我就回收了CPU的控制全,扭頭一看,皮筋那裡等了半天了,就把CPU給他用,他用了一會說,好了,我一會再用,先讓下一個程式來吧……就這樣,大家互相謙讓,記憶體裡一派繁榮和諧的景象。這主要是因為我學習XXX思想,XXX理論……戴了三個表。不過這樣做得缺點就是萬一有個程式不和諧就壞了。比如狐狸妹妹用了半天了,我跟她說:狐狸呀,你看,你用CPU都用了1秒了(對於我們程式來說,1秒已經是相當長的時間了)是不是該讓其他的小朋友們……哦,不對,是不是剛讓其他的程式用用阿?狐狸扭頭斬釘截鐵的說:不!於是我也沒辦法。如果狐狸始終不能放開CPU,那其他程式就一直等著,直到天荒地老,滄海桑田,直到機器重啟,直到小區停電。
  搶佔式多任務是怎麼樣呢?就是由作業系統決定什麼時候收回CPU的控制權,而不是靠程式主動放棄。這種方式的核心就是一個字——搶!如果我是個搶佔式多任務的作業系統,其實不用如果,我就是個搶佔式多任務的作業系統。那麼情況就是這個樣子的:狐狸妹妹用了一會CPU,我對她說,你本次使用CPU的時間已到,立刻停止使用並重新排隊。然後狐狸就乖乖的交出CPU,排到隊尾等待下一次使用CPU。我則讓下一個程式來使用CPU,使用了一段時間後,我又讓這個程式停止使用,讓再下一個來,如此迴圈往複,一派繁榮和諧的景象,這主要是……思想……理論……還戴三塊表。
當!哎喲~

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.