電腦群組成原理簡介

來源:互聯網
上載者:User
電腦群組成原理
這門學科告訴你什麼是電腦。
首先,我們可以把電腦分解成最原始的組件——晶體管。晶體管是一種半導體材料,其最重要的作用就是半導:可以通過電流的變化,實現電路的切換。比如電腦最基礎的與或非運算,都可以通過晶體管組成的電子元件實現。而通過晶體管的電位差不同,就可以體現"位元據",即0和1。再加上電容和電阻,就能把這種位元據臨時儲存起來。
綜合這些特性,大牛們發現把晶體管用作精密的數學計算,可以極大的提高運算的效率。比如我有2個電容,分別是充滿電和沒有電,對他們同時釋放電訊號,電容就會把其中的電子放出來,經過特定的邏輯電路,如與門,得到了0的結果。要計算1+1,實際上也是類似的原理。我先設計一個加法電路,把若干電容組合成的"數字"流過這個電路,把結果存入目標電容,就得到了結果。大規模的複雜運算以此類推。
最早期的電腦真的就是用許多結晶體管實現的複雜電路結構,通過控制輸入電流得到希望的輸出結果。後來人們發現,這種計算可以用某些形式抽象成多種指令,不用針對每次計算設計複雜的電路,只要調用指令就可以實現任何一種計算群組合,於是誕生了cpu。只有cpu,每次都要自己配置輸入訊號,實在太痛苦,就做了紙帶輸入給電腦。後來又發現紙帶還是很麻煩,於是發明了輸入終端和對應的存放裝置。後來又發現很多資料要臨時儲存起來,供連續計算使用,於是發明了記憶體。再後來pc的發展經曆了無數次的變革,讓電腦一步步到了今天的地步,也就是你現在看到的這樣。
其中的曆程非常曲折,也許有機構能夠把他們全部組織成一本漫長的曆史,但個人肯定是無能為力的。


作業系統
綜上所述,電腦發展到一定程度,什麼東西都靠人工也未免太累了。
比如通過輸入裝置組織指令給cpu去計算,你希望能夠找一個快速的輸入裝置(比如鍵盤),在能看到結果的地方輸入(比如螢幕),然後再用很方便的方式提交給cpu(比如按鍵或者指令),讓cpu去算好了,再把結果展示出來(比如螢幕)。
理想很美好,但是這麼複雜的流程,人工管理起來不還是很麻煩嗎。除非我構造一個裝置,把這些所有裝置都管理起來,於是主板就誕生了。

現在主板解決了我們大量的問題,但是我發覺我的需求還遠遠不夠。
我希望我寫過的程式能在任何一台機上運行。
我希望我能邊聽音樂邊幹活——即同一時間可以運行多個程式。
我希望別人寫的傻×東西不要影響到我的工作——即多任務控制。
我希望電腦裡面的各種資源都能得到良好的組織,更快的訪問。
我希望我的使用者介面更好看,使用更方便,功能更強大。
我是個小白使用者,啥都不懂,別跟我扯這些有的沒的,我就像隨便操作兩下就能達到我想要的。
如果這些需求全部都做在主板bios裡面,那將是一場災難。除非bios經過極大的調整和改動,劃分出一大塊地區存放作業系統,並且完成複雜的體繫結構改革。
電腦發展到這種程度,早就已經有很多的機構和廠商介入其中,試圖從中漁利。他們當然不會求著電腦標準委員會和主板生產廠商去做所謂的主板改革,而是編寫自己的程式——作業系統,來解決這些所有的問題。

而作業系統問世之後,一方面接管了主板對於系統資源的管理,加入了自己的中介層——驅動程式,另一方面又充分發揮了人機互動的介面——gui介面,成為了電腦必不可少的組成部分。
作業系統通過bios引導,即作為應用程式開始運行。我們知道程式的本質上就是在cpu上運行種種指令,比如作業系統需要把硬碟上的模組放入記憶體,實際上就是運行了一系列複雜的cpu指令,cpu指令通過主板bus(實際上就是傳遞指令的電路)發送指令給硬碟(比如從哪個扇區位移多少讀多少資料),硬碟再通過晶片集轉動磁頭,把資料讀到緩衝中,完成後給cpu發送一個訊號(即中斷),cpu收到這個訊號,就在寄存器中定址該訊號對應的地址(即我們說的中斷向量表),運行該地址中的指令,發現該指令是發送拷貝指令給主板晶片集,主板就會在cpu的指導下不斷的發送訊號,告訴硬碟緩衝放電,再把接收的電訊號存到指定的記憶體位置去,如此反覆,直到完成cpu的一系列指令為止。
作業系統說白了,就是這樣通過種種cpu指令,實現自身的所有功能。
當然這些指令也不是一條條寫進去的,而是通過程式設計語言完成人類較容易識別的邏輯,然後再通過編譯器把這些邏輯翻譯成cpu指令,這就涉及編譯原理的東西了。

既然作業系統對硬體的訪問都是通過cpu指令來完成的,那為什麼大家都感覺是操作掌管了硬體呢。這就涉及作業系統最本質的功能之一:對系統資源的管控了。
我們啟動並執行所有程式,實際上都是作業系統幫我們啟動並執行。作業系統背後進行了很多的工作,如虛擬位址空間的分配,cpu分時調度,硬體中斷訊號的響應等。這樣對於硬體資源的訪問,也是通過作業系統安排的。比如作業系統會通過把短時間內硬碟讀寫合并成順序的方式,以提高磁頭的利用率,降低磁頭轉向的時間。再比如對記憶體位址的訪問也是由作業系統管控的,某個程式中的記憶體位址具體落到記憶體條的哪個位置,還是硬碟中的虛擬記憶體,就看作業系統的心情了。

至此,作業系統和硬體的互動也介紹的差不多了,更詳細的東西建議參考作業系統相關的書籍吧,比如《深入理解電腦系統》,《linux核心設計與實現》,《unix環境進階編程》之類的。


資料結構
資料結構的作用,就是為了提高硬體利用率。
比如作業系統需要尋找使用者應用程式"office"在硬碟的哪個位置,盲目的搜尋一遍硬碟肯定是低效的,這時候搞個b+樹作為索引,搜尋office這個單詞就很快,然後就能很快的定位office這個應用程式的檔案資訊,再找到檔案資訊中對應的磁碟位置了。

資料結構的東西找本《演算法導論》,《資料結構與演算法分析》之類的看吧。

電腦網路
電腦網路分為3塊:
1. 硬體
網卡,網線,交換器這些,用來處理資料的。
2. 協議
資料在網路中通訊如何組織。如何識別。如何保證資料的正確性。
這2塊我就不多說了。

3. 作業系統
這就是如何把電腦網路和作業系統結合起來的問題了。
對於作業系統來說,網卡也是一種硬體資源。但是網路不單只是一種硬體,而是一種媒體入口。比如作業系統管理硬碟,當然不是簡單的記一下硬碟有多大,然後一切操作都交給硬碟晶片去做,更多的需要組織硬碟的扇區,分區,記錄檔案和扇區/位移的關係等等。
作業系統對於網路來說也是如此,要記錄自身在網路的標識(ip),可被他人訪問的入口(port),以及對方的資訊(remote ip/port)。串連,斷開,資料確認等操作也是由協議控制。
傳遞自身訊息給對方,類似訪問硬碟一樣把記憶體中的資料傳遞給網卡緩衝,再發訊息給網卡讓網卡去傳資料,而是否發送成功這些保證不再由硬體中斷訊號反饋,而是通過網路通訊協定完成。接收對方訊息,也是接收到網卡中斷,再把資料從網卡緩衝移動到記憶體中,再通過協議給予對方反饋。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.