深入理解電腦系統讀書筆記之第一章:漫遊

來源:互聯網
上載者:User

標籤:

我是從豆瓣上看到好多人都在推薦這本書,於是就去借來讀一讀,昨天晚上用了好長時間來讀這本書的第一章節,感覺這本書比較符合我(有些基礎還不太明白,這本書詳細的進行了講解,很好)。

下面寫一下我的理解(順便回顧一下知識)

第一節主要講的是: A Tour of Computer Systems

以hello.c為例進行講解,介紹這個程式如何從一個來源程式變成可執行程式,再到執行,顯示屏上出現“hello,world”

··················································································································································

文章比較有條理,符合人的一般思維。(我覺得既然電腦是人製造的,用來對人的思維計算進行拓展的,那麼他的一些操作就應該能用人的一般思路來進行理解)以我的思路來進行回顧一下。

其實這本書的原名叫做:Computer Systems: A Programmer‘s Perspective(以一個程式猿的角度來進行理解電腦系統)

下面假設自己是一個電腦小白(其實也差不多,嘻嘻,不,比小白強一點的,但是有些概念什麼的還是不明白,電腦的工作原理也搞不清楚,但是這一章以一個c來源程式的執行過程對對電腦進行了講解,非常棒,有很大的收穫,廢話不多說了)Let‘s begin.

  1電腦來說就不用講了

  2電腦中有很多資訊吧。那麼資訊又是什麼呢?資訊=位+上下文明白電腦是0,1二進位進行儲存,計算的。基本存放裝置就是位。但是相同的位又在不同的檔案中又不同的含義這又是為什麼呢?因為他們有不同的上下文,就是說他們的上下的資訊不同,舉一個例子來說就像是:文言文中的“其”“之乎者也”等雖然他們是同一個字但是他的上下文不同,所以就有了分別。所以資訊就有了區分.

  3.理解了資訊以後,那麼我們就以hello.c檔案為例。對他的執行過程進行分析理解。

我們明白hello.c的程式

  

#include <stdio.h>
main()
{
  printf("Hello world!\n");
}
這就是hello.c一般這是學習c語言的第一個程式。
這是由c語言寫的但是不能 有電腦直接進行執行。c語言這是進階語言,這種語言是給程式猿看的,但是電腦看不懂。所以我們就要來請一個翻譯官,讓兩個檔案能進行理解,交流。
“翻譯官”就是一個編譯系統。那麼我們來看一下這個編譯系統由哪些部分來組成。
  先行編譯
  編譯
  彙編
  連結
先行編譯這個階段來說:就是講#開頭的directives來進行處理,(這是系統中原有的)經過這個階段以後hello.c變成hello.iwenjian
編譯:包含一個組合語言程式,將進階語言寫的程式變成由組合語言寫的。hello.i變成hello.s
彙編階段呢:就是將這個helo.s變成hello.o的程式,這個程式已經是由機器語言,二進位的,用文字編輯器開啟會出現亂碼
最後一個階段就是連結:這個階段呢,就是由於來源程式中出現了一些調用庫中的函數什麼的,但是這個程式中沒有所以需要連結形成一個真正的可執行程式。儲存到儲存空間中
4對硬體進行講解(我們知道了如何產生可執行程式的,而且已經儲存到了儲存空間中那麼,電腦是如何進行執行的呢?硬體上對他的執行過程進行講解嘍,,,,)
硬體的話,首先,整體的瞭解一下這個硬體系統

             電腦硬體系統構成

總體上明白了電腦硬體系統的構成以後那麼,我們來詳細的瞭解一下具體組成,各個名詞的含義。

(1)匯流排:一個貫穿於整個系統的一條電子通道。主要進行在各個硬體之間傳遞資訊的。我覺得就像是一條條公路,使得各個點之間相連起來,能形成交流,資訊的交換。

(2)I/O裝置: 輸入輸出裝置。嗯,這個。。。。這個是系統與外界之間的交流的通道。

I/O裝置有什麼構成呢?由一個控制器或者是一個適配器與I/O匯流排之間相連起來。那麼是控制器,什麼是適配器呢?

控制器:I/O裝置本身或者是在主板上的一個晶片集

適配器:插在主板上的卡槽上的卡

(3)主存:一個臨時存放裝置。(DRAM),在執行程式時負責儲存程式以及其程式處理的資料。

(4)處理器(CPU):解釋/執行儲存在主存的指令的引擎的核心。就相當於大腦,對來自各個系統的資訊進行分析,發出執行命令,kernel

處理器又能執行些什麼操作呢?

    載入:對主存中的資訊進行載入。從主存中拷貝一個字/位元組放到寄存器中,覆蓋原來的資訊

    儲存:從寄存器中拷貝一個字/位元組放到主存的某個位置,覆蓋原來的資訊。

    更新:拷貝兩個寄存器中的內容到ALU,ALU對其進行相加放到一個寄存器中,覆蓋原來的資訊。

    I/O讀:從I/O裝置中拷貝一個字/位元組到寄存器中,覆蓋

    I/O寫:從寄存器中拷貝一個字/位元組到I/O裝置中,覆蓋

    轉移:從指令中拷貝一個字,拷貝到PC中,覆蓋
5.瞭解了硬體後,那麼如何對其進行加速呢?
資訊太多,轉移速度慢,程式已耗用時間啊長,等待時間長,所以,我們需要對這個過程進行加速。但是,這個過程中,主要耗費時間的地方在哪裡呢?只有明白了這個點才能對其進行加速,效果更明顯。
主要的耗費時間點在與:讀取資訊,就是資訊的轉移,從一個位置轉貸另一位置,比如說從主存到寄存器中。(我們明白:較大的存放裝置運行比較小的存放裝置運行要慢的多)
如何解決呢?引出來一個概念叫做快取。
磁碟->主存->寄存器
  快取


金字塔上越高已耗用時間越短,越快,但是相應的造價越高。
上面的可以做下面的進階緩衝。
7明白了硬體系統後,就應該進行執行了。
執行,又要明白作業系統。要知道程式不能之間控制硬體,中間有作業系統 。作業系統直接控制硬體。

明白一些概念
進程:假象,好像獨佔處理器,主存和I/O裝置,只有這個程式在運行。      
實際上數多個程式在執行。並發運行(一個程勳的指令與另一個程式的指令在相互的執行),環境切換:儲存程式運行所需要的全部資訊
虛擬儲存空間:假象,每個進程獨佔主存。有唯一的地址
檔案:位元組序列。
8.網路也是一種I/O裝置
上面是一台電腦的執行過程,但是沒有和其他的電腦進行交流。

·····················································································································
最後了,終於完成對第一章的回顧了,下面感慨一下:
這一章是從整體上進行講解。沒有詳細的講解。
這種分配非常好。
我們在學習時,首先,我們從整體上,明白一下這個過程,然後我們再來詳細的瞭解各個過程。
嗯哪,花了一上午的時間終於寫完了,有成就感!!!!
下午看第二章,待續。。。。。。

深入理解電腦系統讀書筆記之第一章:漫遊

相關文章

聯繫我們

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