1. 程式人生 > >《深入理解計算機系統》讀書筆記(第一章)

《深入理解計算機系統》讀書筆記(第一章)

主要內容

0.計算機系統是由硬體和系統軟體組成的,它們共同工作來執行應用程式。
1.程式是怎樣編譯執行。
2.程序,執行緒,虛擬記憶體,檔案等基本概念。
3.本書內容提前瀏覽。

資訊就是位+上下文

本書用了一個hello.c的表示方法說明了一個思想:無論是磁碟檔案還是記憶體中的程式亦或是網路上傳的資料都是一串位元表示的,區分他們的根據是上下文不同,正如標題說的資訊就是位+上下文

程式被其他程式翻譯成其他格式

如hello.c這個程式被GCC編譯器(另一個程式)編譯的過程:
hello.c —0—> hello.i —1—> hello.s —2—> hello.o —3—> hello
0.前處理器,處理後仍然是文字(註釋沒了,巨集定義替換)。詳細效果見

預處理
1.編譯器,處理後是組合語言的文字。
2.彙編器,處理後變成可重定位的目標程式。
3.連結器,可執行目標程式。

系統的硬體組成

0.匯流排

貫穿整個系統的是一組電子管道,稱為匯流排。它攜帶資訊位元組並負責在各個元件之間傳遞。通常匯流排被設計成傳送定長的位元組,我們通常稱為字(word)。ps:哈哈哈,原來如此,這應該就是我們所說電腦有啥32位又是64位。

1.I/O裝置

I/O裝置是系統與外界聯絡的通道。比如鍵盤呀,滑鼠呀,顯示屏,還有負責儲存的磁碟等都是I/O裝置。

每個I/O裝置都通過一個控制器介面卡與I/O匯流排相連。
通俗地說控制器是I/O裝置本身或者主機板上的晶片組,介面卡是插在主機板插槽上的卡。

2.主存

通俗的說使我們所說的記憶體,主存是一個臨時儲存裝置,在處理器執行程式時來放置程式執行時所處理的資料。就像車的後備箱,車就是執行的程式。

3.處理器

CPU,中央處理單元,負責運算……
這裡寫圖片描述

執行hello程式

ps:不得不說CSAPP確實本神書,它巧妙的用了一個小節的內容就把從在終端輸入./hello到終端顯示hello,world的全過程總結出來。
大體上是這樣的:
我的總結:
Linux的shell其實也是一個程式,他在等待使用者輸入指令,輸入什麼他就聽話地去做,當用戶將./hello輸入到終端,按下回車,這條指令就逐字儲存到主存中。
然後,主存的指令傳給處理器,處理器恍然大悟,“原來你要執行×目錄下的hello程式呀!”。後來,磁碟中的hello程式的資料就會被複制到主存中,最後通過I/O裝置(顯示屏)輸出hello,world

程序,執行緒的基本概念

程序

程序是對系統正在執行程式的一種抽象,系統一般是多程序的,也就是同時進行多個程式,而程序與程序之間的排程轉換是由系統核心完成的。
就比如說shell和hello程式,當輸入./hello時hello程式開始執行,此時shell程序掛起(系統儲存shell程序上下文)。待hello程序over,shell繼續進行,等待使用者輸入指令。
程序之間的切換

執行緒

在現代作業系統中,一個程序可以由多個執行單元組成(執行緒)。執行緒在程序的上下中,共享著程序的程式碼和全域性資料。
注:多執行緒比多程序更容易實現共享資料

虛擬記憶體

虛擬記憶體是計算機系統記憶體管理的一種技術。
它使得應用程式認為它擁有連續的可用的記憶體(一個連續完整的地址空間),而實際上,它通常是被分隔成多個實體記憶體碎片,還有部分暫時儲存在外部磁碟儲存器上,在需要時進行資料交換。與沒有使用虛擬記憶體技術的系統相比,使用這種技術的系統使得大型程式的編寫變得更容易,對真正的實體記憶體(例如RAM)的使用也更有效率。

檔案

Linux上一切皆檔案,這是一個學長給我推薦Linux時說的。每個I/O裝置,鍵盤、滑鼠、顯示器,甚至是網路都可以看成檔案。系統之間通過網路連線,而網路其實可以看成I/O裝置(檔案),一個系統將資訊複製到網路介面卡,資料流通過網路到另一個系統。

最後總結

作業系統核心是程式和硬體之間的媒介。它提供三種基本的抽象:檔案是對I/O裝置的抽象虛擬主存是對主存和硬碟的抽象程序是處理器、主存和I/O裝置的抽象

這裡寫圖片描述

注:

本篇文章的大部分內容是來自《深入理解計算機系統》,還包括我的一些總結。目前大一,知識儲備有限,哪些地方總結有誤,請在評論區指出,我會進行修改。
本文包括以後發的某些文章會隨著我的深入學習進行修改和擴充,敬請期待……

相關推薦

深入理解計算機系統讀書筆記第一

主要內容 0.計算機系統是由硬體和系統軟體組成的,它們共同工作來執行應用程式。 1.程式是怎樣編譯執行。 2.程序,執行緒,虛擬記憶體,檔案等基本概念。 3.本書內容提前瀏覽。 資訊就是位+上下文 本書用了一個hello.c的表示方法說明了一個思

3.2《深入理解計算機系統筆記內存和高速緩存的原理【插圖】

img sram 本質 text ddr rate too 是我 很大的 《深入計算機系統》筆記(一)主要是講解程序的構成、執行和控制。接下來就是運行了。我跳過了“處理器體系結構”和“優化程序性能”,這兩章的筆記繼續往後延遲! 《深入計算機系統》的一個很大的用處

深入理解計算機系統筆記記憶體和快取記憶體的原理【插圖】

歡迎檢視《深入理解計算機系統》系列部落格 --------------------------------------------------------------------------------------------------------------

深入理解計算機系統學習筆記

程式的編譯過程 為了說明程式的編譯過程,我們用經典的hello world程式作為例子 #include <stdio.h> int main(int argc, char const *argv[]) { printf("hell

深入理解計算機系統筆記連結知識【附圖】

歡迎檢視《深入理解計算機系統》系列部落格 --------------------------------------------------------------------------------------------------------------

深入理解計算機系統筆記棧【插圖】

歡迎檢視《深入理解計算機系統》系列部落格 《深入理解計算機系統》筆記(一)棧(本篇) ------------------------------------------------------------------------------------------

大學計算機第七版讀書筆記第一

大學計算機精簡內容第一章 1,計算裝置 (1)算籌:追溯到2000多年前的春秋戰國時代,世界上最早的計算工具。 (2)算盤:第一種手動式計數器,最早的數字計算機,珠算口訣是最早的體系化演算法。 (3)計算尺:1622年英國的奧特瑞德發明,可執行加減乘除指數三角

Robert Love《linux系統程式設計》讀書筆記第一

第一章. 入門和基本概念            1.2 API 和ABI      1.3 標準 1.4 linux程式設計的概念   &n

不測的祕密:精準測試之路----讀書筆記第一

一、舉步維艱 1、敏捷轉型:測試眼中的研發 傳統: 需求是清晰的 流程是固化的 開發是有序的 系統是可測的 測試時間是充足的 使用者是講道理的 敏捷: 需求頻繁更改 交付問題多 測試時間緊 使用者抱怨多 開發延遲,壓縮測試時間,已成常態 那麼

《影響力》讀書筆記第一

影響力對我們來說,其實並不是個高深的詞彙。大到我們買車買房結婚,小到我們每天吃什麼,都受影響力的牽制。 可以說,很多時候,我們是被其他人有意或者無意地影響了。 《影響力》這本書主要介紹了一些有關影響力的因素:互惠、承諾和一致、社會認同、喜好、權威、稀缺等。 今天主

《MySQL DBA修煉之道》 讀書筆記第一 理解MySQL

l數據庫 描述 負責 mysql權限 serve 擴展 基礎上 title 語境 1、MySQL的基礎架構 1.MySQL是一種關系數據庫產品,是建立在關系模型基礎上的數據庫。架構一般可分為應用層、邏輯層、物理層。應用層:負責和客戶端、用戶進行交互。邏輯層:負責具體的

深入理解計算機系統配套實驗 data lab 函式詳解

/* 135. * bitAnd - x&y using only ~ and | 136. * Example: bitAnd(6, 5) = 4 137. * Legal ops: ~ | 138. * Max ops: 8 139. *

深入理解計算機系統筆記——資訊的表示和處理

資訊的儲存 十六進位制表示法 字 資料大小 定址和位元組順序 資料型別 字串的表示 程式碼的表示 資訊的儲存 資訊是客觀事物的反映,是經過處理加工後得出的資料。 資料是客觀事物的記錄。 計算機內所有的資訊均以二進位制的形式表示,

深入理解計算機系統筆記——計算機系統漫遊

1.計算機系統 由硬體與軟體組成,他們共同工作來執行程式。 2.資訊的表示 #include <stdio.h> int main() { printf("Hello World\n"); return 0; //c標準規定建議main函式返回值為int

深入理解計算機系統筆記:幾個重要概念

執行程式系統 編譯系統 從原始碼文字檔案到可執行目標檔案的轉化由編譯系統(compilation system)完成 前處理器(cpp):hello.c —> hello.i 根據以字元 #

深入理解linux核心讀書筆記第三

1.  程序是程式執行時的一個例項。 2. 從核心的角度看,程序是系統進行資源分配的實體。 3. linux 通過輕量級程序來支援多執行緒應用,每一個輕量級程序對應一個執行緒。    執行緒之間共享地址空間,開啟的檔案等資源,核心對每一個輕量級程序進行單獨排程。 4. 一個

深入理解計算機系統_3e 第十一家庭作業 CS:APP3e chapter 11 homework

cep serve 技術分享 apn only class control 相同 法則 註:tiny.c csapp.c csapp.h等示例代碼均可在Code Examples獲取 11.6 A. 書上寫的示例代碼已經完成了大部分工作:doit函數中的printf("%

CSAPP深入理解計算機系統(第二版)第三家庭作業答案

《深入理解計算機系統(第二版)》CSAPP 第三章 家庭作業 這一章介紹了AT&T的彙編指令 比較重要 本人完成了《深入理解計算機系統(第二版)》(以下簡稱CSAPP)第三章的家庭作業,並與網上的一些答案進行了對比修正。 感謝博主summerhust的整理,以下貼出AT&T常用匯編指令

HTTP圖解讀書筆記第一 瞭解web和網路基礎

一、TCP/IP概念 TCP/IP是網際網路相關聯的協議集合的總稱,協議中存在各式各樣的內容。從電纜的規格到 IP 地址的選定方法、尋找異地使用者的方法、雙方建立通訊的順序,以及 Web 頁面顯示需要處理的步驟,等等。 二、TCP/IP的分層管理 分為四層:應用層、網路層、傳輸層、資料鏈

深入理解計算機系統家庭作業第六

/* ***6.23 */ 等價於求xr(1 - x)的最大值,由代數知識得x=0.5的時候取得最大。 /* ***6.24 */ 0.5 * 60 / 12000 * 1000 + 60 / 12000 * 1000 /500 + 3 = 5.51ms /* ***6