計算機,言外之意,最初人民設計出來它的時候就是爲了解決「計算calculation」的事情,而除了最先期的的算盤之外,最先的是在美國的一次人口普查用的,公元1880年,美國舉行了一次全國性人口普查,爲當時5000餘萬的美國人口登記造冊。當時美國經濟正處於迅速發展的階段,人口流動十分頻繁;再加上普查的項目繁多,統計手段落後,從當年1月開始的此次普查,花了7年半的時間才把數據處理完畢。也就是說,直到快進行第二次人口普查時,美國政府才能得知第一次人口普查期間全國人口的情況。python
直到有一位叫「霍列瑞斯」的人,發明了「打孔製表機」,把穿孔紙帶改形成穿孔卡片,因爲每一個人的調查數據有若干不一樣的項目,如性別、籍貫、年齡等等。霍列瑞斯把每一個人全部的調查項目依次排列於一張卡片,而後根據調查結果在相應項目的位置上打孔。例如,穿孔卡片「性別」欄目下,有「男」和「女」兩個選項;「年齡」欄目下有從「0歲」到「70歲以上」等系列選項,具體實現是怎麼樣的呢,讓咱們來了解下:算法
他的設備核心思想就是用機械來代替人工計數,上面咱們講到了用卡片上的孔來表明某一項的數據,如圖所示,當卡片插入機器時,機器上的小金屬針就會到卡片上,若是某個地方有打孔,那麼小金屬針就會穿過,注入一小瓶汞,聯通電路,電路會驅動電機,給某個選項的齒輪+1。這樣就用自動的電動機械行爲代替了手工運算。當時這類機器的效率是人工運算的10倍。要知道,這個數量級的提高在當時是很是有意義的,也就是說原本一次人工普查的耗時7年,如今減小到不到一年。shell
隨着時代的發現和計算需求的逐漸增大,人民須要計算力更強的機器,打孔的本質其實也是區分0和1,所以人民發現有沒有更快的方式去去分,這樣「繼電器」就產生了,如圖,當電流流過線圈,線圈產生電磁場,吸引金屬臂,從而閉合電路。這個電路能夠連到其餘電路,好比馬達,馬達會讓計數齒輪+1,相似於上面的打孔製表機。這類型的計算機表明就是哈佛馬克系列。微信
不幸的是,繼電器的質量太大,致使開關的速度也不夠快,當時最好的繼電,1秒也就翻轉40次左右。另外,這些繼電器組成的龐大的電路,工做時會發出較高的溫度。而正因爲這些溫度會吸引昆蟲。1947年,哈佛馬克2型出現了一次重大故障,最後查到緣由就是有一隻「死蟲」把其中的繼電器卡住了。所以咱們今天計算機故障都叫「bug」!網絡
正是因爲以上的缺陷,因此咱們又得想更加先進的模式去取代它!中間經歷過真空管,直到1947年,貝爾實驗室科學家發明了晶體管,一個全新的計算機時代誕生了!晶體管的物理學原理有興趣的同窗能夠本身深刻理解下,涉及到物理學和量子力學。咱們只講用於計算機的原理及基礎。架構
晶體管有兩個電極,咱們稱之爲發射機和集電集。電極之間有一種材料隔開它們,這種材料有時候導電,有時候不導電(這叫半導體),控制線連到一個「門」電極,經過改變基級的電荷,咱們能夠控制半導體材料的導電性,來容許電流流動獲不流動。就實現了和以前真空管、繼電器同樣的功能。spa
======================①因此到這裏爲止,咱們終於知道了最佳的用於控制0和1的個體元素。====================【因此說計算機就是由晶體管組成的,下面會講到cpu的三大部件,其實核心本質都是各類晶體管組成的邏輯電路!】操作系統
接下來咱們就用晶體管組成各種邏輯電路,下面是最簡單的一個and電路(「與」門),用兩個晶體管能夠組成,兩個輸入一個輸出,只有兩個輸入都是1的時候,輸出才爲1,不然任何一個輸入不爲1,結果就不成立:設計
而同理,咱們能夠組成或門、非門、或非門。而後這些基礎門再組成龐大的電路來處理複雜的運算。下面組成了一個「半加器」3d
而利用「半加器」又能夠組裝成「全加器」(有進位的加法器)【這些都是「數字邏輯電路」這門課中講到的原理,有興趣的同窗能夠自行深刻了解!】
最先的因特爾74181處理器打工用了70個邏輯門,但不能執行乘除,具體的邏輯電路結構以下:
======================②到這裏爲止,已經把計算機中的ALU(cpu三大部件之一)講清楚了。============================
寄存器,也是由晶體管組成的,看如下兩個電路,第一個電路,開始的時候A、B輸入都爲1,那麼輸出也爲1,若是以後A設爲0,因爲是AND門,輸出會變成0,不管後面輸入變成什麼,output一直爲0.所以,這個電路能記錄0;
同理下面這個電路能夠記錄1
如今有了能記錄0和1的電路,咱們把它們組合起來,變成AND-OR鎖存器,它有兩個輸入,「設置」輸入,把輸出能夠變成1,「復位」輸入
,把輸出能夠變成0。若是「設置」和「復位」都是0,電路會輸出最後放入的內容。(你們能夠本身模擬試如下,只要復位不爲1,輸出就永遠是上一次的輸入!)也就是說,它存住了1bit的信息,這就是傳說中的內存原理!!!
======================到這裏爲止,已經把計算機中的寄存器(cpu三大部件之一)講清楚了。============================
cpu控制器由兩個階段組成,第一個階段就是「取指令階段」,第二個階段是「解嗎階段」,這兩種都是經過電路鏈接解決。這部分用視頻過程演示能夠會更清楚,文字的描述篇幅太大了(具體過程能夠參考視頻講解,關注微信公衆號後,直接發信息便可,我會把視頻連接發給你們)。
======================到這裏爲止,已經把計算機中的控制器(cpu三大部件之一)講清楚了。============================
剩下的就是執行程序了,有好多好多程序語言,最本質的原理無非是每個程序指令會和機器碼對應,而計算機也保存着這份對應關係。以便用做解碼用。
而最終程序也是放在存儲中,讓cpu控制器去取了,而後逐條執行完成計算。這樣就是cpu最簡單的工做模型。
總結下,計算機核心部件以下,而cpu內部包括內存都是由晶體管組成的,其實就看咱們如何去作咱們的集成電路!
能夠關注公衆號「python三人行」,咱們會按期分享討論數據、架構、算法以及計算機或操做系統底層原理,歡迎參與!
---恢復內容開始---
【1】什麼是操做系統?
「操做系統是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。操做系統須要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入設備與輸出設備、操做網絡與管理文件系統等基本事務。操做系統也提供一個讓用戶與系統交互的操做界面。」------這個是百度百科的解釋
其實最簡單的理解就是一個程序,一通電第一個啓動的程序,包含了shell和kernel兩個模塊,shell對接其餘應用程序,也就是用戶;而kernel對接硬件,這裏硬件包含了計算機的底層硬件,另外還有一些外設(包括鍵盤、鼠標等)
計算機底層硬件其實最主要由三部分構成:CPU、內存和磁盤,其中CPU和內存都是由三極管構成的(此部分若是想深刻了解能夠看計算機原理,或聯繫樓主微信allenforu,我這邊有快速理解的視頻資料可分享,這裏不展開來說)
所以操做系統爲了管控其餘各種的應用程序,它有特殊的權限,它的最重要的做用就是把實際的CPU、磁盤、內存分佈抽象成進程、文件、地址空間。因此操做系統是一個很是複雜的軟件,像window操做系統一共有4500萬行的代碼
因此通常人不可能讀完全部源碼,咱們讀懂其中本身關心的一部分已是很不錯了!
上面說到操做系統是一通電第一個啓動的程序,所以咱們來看下啓動的過程及原理:
DISK:存放OS
BIOS:基本I/O處理系統
芯片裏的電路結構會把CS設置爲0xFFFF,IP設置爲0x0000,這樣組成的地址就是0xFFFF0,而這個就是BIOS的入口地址,所以通電之後第一時間,CPU讀取這個地址的代碼。而後BIOS去讀取放在磁盤裏的OS,這樣OS就被運行起來了!
操做系統的三種:
1)中斷:外設
2)異常:應用程序意想不到的行爲
3)系統調用:應用程序請求操做提供服務
【2】
---恢復內容結束---