亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

006 | linux發(fā)展歷史-02

本文為《跟馬哥學Linux》系列文章的第五篇,上一篇文章為《 Linux發(fā)展歷史-01》。

假設(shè)說一個程序需要運行首先這個程序文件必須從磁盤給他裝載到內(nèi)存上,這是第一步,而程序是又指令假數(shù)據(jù)組成,這就意味著指令和數(shù)據(jù)都在內(nèi)存中,比如指令做加法運算加誰,加第一個內(nèi)存單元的數(shù)字和第三個內(nèi)存單元中的數(shù)字,加完以后放哪去等等,背后會涉及到一系列復雜的問題,因此不管怎么講要知道指令和數(shù)據(jù)全都在內(nèi)存中存放,假如說前三個格子方的是指令,后三個格子方的是數(shù)據(jù)。cpu首先要加載第一個指令在這個指令當中會告訴cpu運算的數(shù)據(jù)在什么位置。

所以這個時候cpu會找到對應(yīng)的內(nèi)存單元當中把數(shù)據(jù)取出來,假如說算的是第四個和第八個數(shù)字做加法運算,于是第一個我們先取出指令,第二個取出指令所關(guān)聯(lián)到的數(shù)據(jù),于是把數(shù)據(jù)取出直接做加法運算,因此在此說明指令和數(shù)據(jù)都在內(nèi)存中,都得先從內(nèi)存中取出來才可以,

而內(nèi)存就是指編制的存儲單元。雨點晦澀對嗎,我不知道朋友們能不能聽的懂大體上這么理解就可以,真是聽不懂就當故事聽了,回過頭來再看,但對我們而言這確實是基礎(chǔ)知識。繼續(xù)往后描述當數(shù)據(jù)取出來cpu開始把這些數(shù)據(jù)運算,運算完會有一個結(jié)果事實上在此之前還有一個步驟指令運行完以后還有第個指令還有第三個指令,沒準還要進一步加工所以能夠讓cpu知道運行完第一條指令后緊接著運行第二條指令在什么地方,cpu內(nèi)部就有了寄存器,寄存器叫做register,他主要保存的是就像最長的就是指令之指針寄存器。我們稱之為PC,這個PC指的是什么呢比如當我們加在完指令后。每一個程序指令運行大體上是有算法+數(shù)據(jù)結(jié)構(gòu)組成也就意味著一個程序的多條指令是有關(guān)系的,

這種語言對于一個過程式編程語言來講,他內(nèi)部的邏輯無非只有三種,今天我們先來了解一下。第一種是順序執(zhí)行,挨著執(zhí)行,先執(zhí)行第一條,再執(zhí)行第二條,第三條,這叫順序執(zhí)行,第二種稱為循環(huán)執(zhí)行,也就意味著,我們將代碼像拉貨似的進行來回運算N編,叫做循環(huán)執(zhí)行,第三種叫做選擇執(zhí)行選擇執(zhí)行就是我們的代碼可能有10條但是分成兩類,比如說再你面前有兩次機會左輪手槍中3個槽有子彈,3個槽沒子彈,現(xiàn)在給你一個機會讓你選擇一個抓鬮,輪盤賭。類似于這種形式的所以選擇執(zhí)行大體上就是有一種位真是我們就執(zhí)行為真的代碼否則就執(zhí)行另外一種代碼,分成兩種情況,當然有時也會分為N中情況這種球成為選擇執(zhí)行只執(zhí)行代碼中的一部分。

接著,cpu執(zhí)行完第一條指令后為了不耽誤時間需要知道第二條指令在什么地方因此寄存器就保存了下一條指令保存在哪個位置,哪一個存儲單元中放著,所以叫指令指針寄存器。我們在做加法運算時首先要取出被加數(shù)接著再取加數(shù),兩者只能是依次進行,而不能同時進行,所以第一個數(shù)取完以后要先暫存下來再去取第二個然后才能做運算而暫存下來的數(shù)一樣也用到了數(shù)值寄存器等等,內(nèi)存跟cpu比起來非常慢迄今為止內(nèi)存的工作頻率在1888,160……比起cpu主頻來講像3G赫茲要慢的多的多,也就是說cpu說一句話,的空轉(zhuǎn)兩圈內(nèi)存才可能接收到指令所以cpu比內(nèi)存要快的多。

為了兩者之間不會耽誤太長時間,在cpu內(nèi)部就引入了各種各樣的緩存,其實cpu的緩存越大就以為這他內(nèi)部的提取的數(shù)的命中率越高,命中率越高就意味著性能越好,同樣的主屏下cpu的緩存越大就越貴,因為cpu緩存的工作機制與內(nèi)存的工作機制不一樣造價比內(nèi)存要高,另一方面,cpu的面積時有限的盡可能的越做越小所以cpu中的緩存非常小,而且,比如我們cpu的緩存從512增長到1兆價格就要翻一倍所以千萬不要小瞧緩存,對于互聯(lián)網(wǎng)時代,緩存為王。這是加速當中非常重要的解決方式,在計算機中有一個特性,這種思維邏輯就是,任何兩個層次之間在速度上或在邏輯上,只要是不暇接就加中間層比如cpu快內(nèi)存慢怎么辦?加中間層就是緩存層,還有語言是一樣的道理,人說的機器聽不懂,怎么辦?加中間層,用編譯器來實現(xiàn)通常都是這么著來解決問題的所以任何包括人類社會領(lǐng)域也是一樣的任何兩個層次之間不能快速流暢銜接的話我們只需要加一個中間層來解決問題。加一個中間層會在一定程度上影響性能,但是提升的效果要比提升的效果號很多,比如果和老外交流,對方說英語。我們說漢語,為了交流我們得學會英語這個可能得需要一兩年的功夫但是找一個翻譯只需要幾分鐘就可以搞定。這個就時我們計算機內(nèi)部的簡單工作法則。而硬件本身時沒有任何指令和任何程序所以說程序員寫的軟件非常關(guān)鍵,計算機自己被制造出來后他內(nèi)部并沒有帶程序所以程序員需要寫好程序把指令和數(shù)據(jù)輸入給計算機讓計算機能夠運行,并且講運行后的結(jié)果反饋給我們所以就需要輸入輸出設(shè)備,這種輸入和輸出通常被稱為I/O設(shè)備,

比如像磁盤他即能輸入又能輸出,在計算機的角度來想,即能夠從磁盤中讀出來數(shù)據(jù),我們把數(shù)據(jù)加工以后還可以存到磁盤中去,所以他既是輸入又是輸出,鍵盤可以輸入還能輸出嗎,他不能接受給我們做回饋,不過現(xiàn)在有一些增強現(xiàn)實的一些設(shè)備時可以的,比如現(xiàn)在用的手柄,玩游戲時可以有震動回饋,他也可以輸出要看你的設(shè)備是否支持輸出機制,有些鍵盤可能有震動,比如說玩游戲是有問題了走在一個非常不光滑的路面上時鍵底下可能有震動,通常交互式設(shè)備,娛樂設(shè)備通常時有輸出的,但是我們鍵盤是不可以的,另外一個像我們的鼠標也是個輸入設(shè)備,不能做輸出的。

最常用的輸出設(shè)備是什么?顯示器了,這是一個輸出設(shè)備,而且是一個最為廉價的輸出設(shè)備,是人類計算機誕生開始到現(xiàn)在最為廉價的輸出設(shè)備了因為早些時候的輸出設(shè)備是穿孔紙帶,任何一次輸出都需要弄一條紙帶在上面打孔,有空的地方標識1,沒空的地方標識0這些記錄員再將這個翻譯成二進制在轉(zhuǎn)換成十進制在根據(jù)碼表在轉(zhuǎn)換成字符,像早期的電報就是通過這種方式來發(fā)報的,幾長幾短,幾短幾長,早期的時候莫爾斯碼就是這種方式實現(xiàn),那么莫爾斯碼中我們按下去馬上迅速抬開標識0,按下去持續(xù)元短時間在抬開標識一個1那么按下去很長時間再抬開這表示幾個一。我們要輸入的數(shù)據(jù)是01110,那是幾個1呢,雙方必須按照同一時序進行工作,要么是同步要么是異步,異步的話要實現(xiàn)定義好比如每一毫秒的時長標識一個1如果按下不松開這就是1000個1.所以時間再數(shù)據(jù)傳輸過程中是至關(guān)重要的沒有時間我們將無從知道是一個1還是一堆1,這就是為什么計算機內(nèi)部會有頻率,每一個頻率是指在一個時鐘周期內(nèi),時間結(jié)束了干一件事就干完了是這樣的意思。這就是為什么主頻越高,cpu的性能越好所謂3G赫茲就是指1秒鐘內(nèi)能做3G赫茲次的操作30多億次運算如果是1g赫茲就只能做10億次運算了。所以一直叫赫茲,赫茲指的是頻率。像現(xiàn)在的顯示器如果我們要用打印機輸出的話。每一張紙打印后就不能用了,我們很難對他清理,但顯示器不是,顯示一屏再一屏好像也沒什么價錢,所以一次購入后能億萬次的使用因此我們說他是最廉價的輸出設(shè)備而且是最直觀的輸入設(shè)備。早期的輸出設(shè)備是一級顯像管現(xiàn)在都是液晶的了不過哪種顯示器再顯示色彩上,色調(diào)上更逼真了在有些場景中可能會使用。大家要知道這是一種輸出設(shè)備就可以了。而我們的整個計算機也就是由所謂的5大基本部件組成,但是我們買了一臺計算機或者買了一個沒有裝系統(tǒng)的筆記本發(fā)現(xiàn)我們什么事也做不成因此我們就需要程序。軟件才是真正幫助我們干活的那么一個東西但是我們的計算機從最初發(fā)展到今天帶蓋爺經(jīng)歷了好幾代了我相信很多同學再上計算機顆的時候老師會講計算機發(fā)展經(jīng)過了四代,有什么電子管時代,晶體管時代,集成電路時代,然后是超大規(guī)模集成電路時代,現(xiàn)在不知道事什么時代了,據(jù)說中國的某一家組織某一個研究所已經(jīng)快研究出光子計算機了,量子計算機了,據(jù)說全球人民都在搶奪量子計算機這一制高點,像現(xiàn)在的計算機是電子計算機,是基于電子來進行計算的那下一時代有可能是光子的也有可能是量子的對于量子而言,一般來講,一個電子只能標識2個數(shù)字,要么是0要么是1但是對于量子而言他是種模糊態(tài)他的特性是不確定的有各種各樣的可能性,舉個例子。從這到天安門有多少條路可以走,發(fā)現(xiàn)有無數(shù)條路可以去,只要不走就是模糊的,但是我們一旦選定了這個狀態(tài)就確定了,大體上就是這門一種形式。當你不觀測時特就像一個波,觀測時他就是一個電子。如果根據(jù)這種態(tài)來實現(xiàn)數(shù)據(jù)記錄的話,很可能任何一個事態(tài)再觀察之前是模糊的他能存儲N種可能性這就是的同樣的位比如10位類存儲數(shù)據(jù),10位量子可能比我們現(xiàn)在的全球的所有的電子計算機加起來所能提供的運算能力和存儲能力都要強各國軍方都在研究量子計算機,因為量子計算機的計算能力超強無比,現(xiàn)在的各種加密機制,揭秘機制,防護機制在量子計算機面前不堪一擊我們有理由相信可能20年以后終結(jié)者會派回地球了來拯救人類了當年的被稱為skynet的公司變成google了。Google公司實在是太強大了背后研究的東西能夠超乎你的想像,比起國內(nèi)的某度某巴某訊都不是一個量級的。我們繼續(xù)說硬件設(shè)備。硬件設(shè)備他不能完成具體的操作,要完成某一個任務(wù)靠的是軟件程序,這個就需要程序員啦,將來沒準每個人都會寫程序,否則再終結(jié)者面前都沒有生存能力,對于學運維的人來講有一個優(yōu)勢你能找到唯一入口給他q一下終結(jié)者就q掉了。沒準20年以后我們生存下來的可能性比較大,所以現(xiàn)在學的是一個活命的技能。對于我們的軟件程序來講程序員需要寫程序,要想讓程序能夠在硬件上運行起來首先他得能夠根據(jù)硬件自己的程序邏輯來寫程序。

A公司所生產(chǎn)的cpu芯片,和B公司所生產(chǎn)的因為是商業(yè)秘密所以彼此之間是不會共享的。也就意味著Inter公司和AMD公司或者其他公司的cpu他的內(nèi)部的執(zhí)行邏輯都不一樣指令也不一樣。因此程序員寫程序就是查看cpu使用說明書,它里面會告訴你,怎么寫程序。而你寫的程序只能在這一類上cpu上運行,換個cpu就不行了因為我們寫的接口就是這樣子的。這是機器語言,說到機器語言可能過于底層。我們至少每一個芯片還有一種叫做微碼編程語言,而微碼編程語言跟你的芯片也是密切相關(guān)的用A微碼編的只能用于A類cpu同一家公司生產(chǎn)的cpu,會向后兼容為奔騰寫的酷睿能運行,為酷睿寫的奔騰不能運行,全球生產(chǎn)芯片的廠商是不是非常多,你寫的程序在A主機上能運行,到了B主機上卻運行不了,所以他們不具有通用性,這是第一個面臨的問題第二個問題,即便他們有通用性。我們的全球的cpu廠商一家公司使用同一個規(guī)范所研發(fā)但仍然會有一個問題,程序員寫程序。我們要完成的功能是只一個但是為了能夠讓這個功能在硬件上運行起來我們得寫很多的代碼才能支撐著這個跑起來,這是底層為了能讓硬件跑程序我們不得不寫的代碼。像驅(qū)動硬件,驅(qū)動程序就是底層代碼。

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓機構(gòu)!