深刻理解計算機系統 第一章 計算機系統漫遊 第二遍

 

《深刻理解計算機系統》 第三版html

 

第二遍讀這本書,每週花兩到三小時時間,能讀多少讀多少(此次看了 1 ~ 9 頁)sql

第一遍對應筆記連接 http://www.javashuo.com/article/p-outpbrlm-ha.html數據庫

 

信息就是位 + 上下文,即位和上下文環境可肯定信息的內容,位不能脫離上下文環境而表示某種確切的信息。編程

 

編譯系統由預處理器、編譯器、彙編器和連接器組成緩存

我以爲能夠重點記憶編譯器和彙編器的做用框架

編譯器將源程序轉化爲彙編程序spa

彙編器將彙編程序轉化爲二進制的可執行程序操作系統

即,彙編程序做爲中間結果而存在設計

爲何須要彙編程序的存在呢?書中給出的解釋以下:htm

「彙編語言是很是有用的,由於它爲不一樣高級語言的不一樣編譯器提供了通用的輸出語句。」

結合實際工做中的項目狀況來看,其實就是封裝和解耦,好比,咱們有一套系統給客戶使用,若是這個系統頗爲複雜,那麼針對每一個客戶都從新開發的話,會形成不少沒必要要的浪費

因此咱們須要將其分爲幾個部分,通常是在數據的來源和目標之間設置一個或多箇中間結果,與客戶對接的那一部分代碼是定製化代碼,根據每一個客戶不一樣的狀況進行定製化開發,這部分定製化開發的目標就是生成固定格式的中間結果,而後由系統中不多變化的部分讀取中間結果進行處理產生最終結果,可是無論客戶是誰,後面這部分代碼都不用重複開發了,它只要獨立地進行版本的升級、迭代便可

 

「瞭解編譯器是如何工做是大有益處的」

這裏能夠類比於實際工做中使用框架,對於框架源碼中的細節能夠不瞭解,可是咱們得大體知道它是如何工做的,這樣咱們使用它的時候,就可以更高效地利用它,讓他爲咱們提供更好的服務

 

字長的概念

硬件系統中的總線,一般被設計成傳送定長的字節塊,也就是字(word),字中的字節數(即字長)是一個基本的系統參數,各個系統中都不盡相同。

咱們常說的 32 和 64 位操做系統,分別對應 4 和 8 個字長。

 

重要的局部性原理

程序具備訪問局部區域裏的數據和代碼的趨勢,這個思想對於緩存來講很是重要

 

處理器、主存與磁盤之間巨大的速度差別

因爲這種差別的存在,再結合局部性原理的理論基礎,就引出了緩存的概念

一、處理器與主存之間差別的解決:

ps:「處理器從寄存器文件中讀數據比從主存中讀取幾乎要快 100 倍」

因而有了 L一、L二、L3 等分級的高速緩存(L1 與 寄存器速度差很少,L1 比 L2 快 5 倍,L2 比 主存快 5~10 倍)

二、主存與磁盤之間差別的解決:

ps:「對於處理器而言,從磁盤驅動器上讀取一個字的時間開銷要比從主存中讀取的開銷大 1000 萬倍」

因爲磁盤 I/O 太過消耗時間,因此,在程序中處理大量數據時,應該儘可能避免磁盤 I/O,實在避免不了,也要想辦法減小磁盤 I/O 的次數

因而出現了數據庫的索引技術(儘可能少的磁盤 I/O),以及用 Redis 等對 Mysql 作一層緩存(能避免磁盤 I/O 就避免)

 

疑問:

一、Java 中的字節碼程序跟這裏的彙編程序有什麼區別?

二、JVM 中有沒有連接器之類的東西?

三、控制器與適配器的區別?

四、內存和磁盤 I/O 時,不須要 CPU 的參與,是由於有這個直接存儲器存取(DMA)技術(書中第 8 頁提到了這個技術)嗎?

相關文章
相關標籤/搜索