天天看點

讀書筆記Pt.3——《深入了解計算機系統》

目錄

  • ​​傳統藝能????​​
  • ​​指令級并行????​​
  • ​​單指令,多資料并行????​​
  • ​​系統中抽象的重要性????​​
  • ​​小結(必看)????​​
  • ​​第二章​​
  • ​​資訊存儲????​​
  • ​​十六進制表示法????​​
  • ​​字????​​

傳統藝能????

小編是雙非大學大一菜鳥不贅述,歡迎大佬指點江山

此前部落格​​點我!點我!請搜尋部落客 【知曉天空之藍】​​

喬喬的gitee代碼庫(打灰人 )​​歡迎通路,點我!​​

????????非科班轉碼社群誠邀您入駐????????

小夥伴們,打碼路上一路向北,背後煙火,彼岸之前皆是疾苦

一個人的單打獨鬥不如一群人的砥砺前行

這是我和夢想合夥人組建的社群,誠邀各位有志之士的加入!!

社群使用者好文均加精(“标兵”文章字數2000+加精,“達人”文章字數1500+加精)

直達: ​​社群連結點我​​

讀書筆記Pt.3——《深入了解計算機系統》

指令級并行????

在比較低的抽象層次上,現代處理器可以同時執行多條指令的屬性稱為指令級并行。早期的處理器,執行完一條指令所需要的周期通常是多個,比較先進的也就保持2-4條指令一個周期,本質上一條指令執行完是需要大約 20 個或者更多周期的,但是處理器非常聰明,他有手段來同時處理100條指令,比如後序會引入的 流水線 概念。

如果處理器可以達到一個周期一條指令或者更快的話,我們稱之為超标量處理器,大多數可以支援這個功能,後面也會介紹超标量的進階模型,如果了解了這個模型就可以更好的了解程式的性能,寫出擁有更高的指令級的并行性的代碼,進而可以跑的更快。

單指令,多資料并行????

在低層次上,現代處理器擁有特殊的硬體,允許一條指令産生多個可以并行執行的操作,被稱為單指令,多資料并行,也被稱為 SIMD 并行,比如我們熟知的英特爾的AMD處理器都可以用這種屬性來完成四對浮點數的加法操作。

提供這種機制其實是為了完成影像,聲音,視訊等資料的處理的速度。

讀書筆記Pt.3——《深入了解計算機系統》

系統中抽象的重要性????

抽象這個詞本來就很抽象了,但不巧的是他還是一個最為重要的概念之一,例如,為一組函數規定簡單的程式接口就是一個好習慣, == 計算機系統裡面抽象就是用來隐蔽實際實作的複雜性==,無聊晦澀的書面語咱無需咀嚼,形象的來說C語言的函數原型就是抽象的使用,我們無需了解他内部的原理就可以使用。不同的語言提供不同形式和等級的抽象支援。

讀書筆記Pt.3——《深入了解計算機系統》

之前我們已經介紹過幾個抽象了,比如處理器裡面指令級結構提供了實際處理器硬體的抽象。使用這個抽象,就好像它是運作在一個一次隻執行一條指令的處理器上,底層的硬體比抽象描述的複雜精細許多,它并發的執行多條指令,但又總是與那些簡單有序的模型保持一緻。隻要執行模型一樣,不同處理器實作也能處理同樣的機器代碼。

學習作業系統咱必須知道三個抽象:

  1. 檔案是對I/O的抽象;
  2. 虛拟存儲器是對存儲器的抽象;
  3. 程序是對一個正在運作程式的抽象;

小結(必看)????

  1. 計算機系統由硬體和軟體組成,他們共同協作以運作程式。計算機内部資訊被表示為一組組的位,他們依據上下文和不同的解釋方式,程式被其他程式翻譯成不同的形式:開始是ASCII文本,然後被編譯器和連結器翻譯成二進制檔案。
  2. 處理器讀取并解釋二進制指令,因為程式講大量時間用于各種裝置硬體之間資料的複制,是以将系統的存儲劃分出了層次結構:CPU寄存器位于最上面,接着是高速緩存,主存,和磁盤。金字塔結構裡面成本和執行速度是對立的層次中較高層次的存儲結構可以作為較低層次存儲結構的高速緩存。
  3. 作業系統核心是程式和硬體之間的媒介。他提供三個基本抽象:檔案,虛拟存儲器,程序。
  4. 最後,網絡提供了計算機系統之間的通信手段,從特殊的角度上講,網絡就是一種 I/O的抽象。
    讀書筆記Pt.3——《深入了解計算機系統》

第二章

這部分屬于程式的結構和執行,如果你覺得等式和公式令人生畏,不要讓他阻止你閱讀這部分,為了完整性,我的讀書筆記也不會精簡太多,但我會跳過某些晦澀的推導,有興趣的可以自行進行查閱。

啾~

資訊存儲????

大多數計算機都是8位的位元組,作為最小可尋址的存儲器單元,而不是存儲器中通路單獨的位。機器級程式将存儲器看成一個非常大的位元組數組,稱為虛拟存儲器,存儲器每個位元組都是由一個唯一的數字來辨別,他就是位址,所有可能的位址集合成為虛拟位址空間。顧名思義,這個虛拟存儲空間隻是一個概念性的映像。實際的實作依賴于 RAM,磁盤,硬體和作業系統的結合,為程式提供一個看上去統一的數組。

十六進制表示法????

一個位元組由8位組成,二進制表示法中,他的值域是二進制的00 00 00 00-11 11 11 11,也就是十進制的 0-255,二進制表示法太冗長,十進制表示法與位模式互換又很麻煩,我們就有相應替代的方法:16 進制簡寫為 hex,使用 0-9,A-F 表示16個整型數字,下圖就是 16 進制表示法:

讀書筆記Pt.3——《深入了解計算機系統》

C語言裡面,以 0x 或者 0X 開頭的數字常量就是 16 進制,a-f 科大寫可小寫甚至可以混合使用,書中下文的讨論也是使用 C語言标準的 16 進制表示法,關于數字之間的轉換,這裡給了一個竅門:記住每個十六進制數字 A-F 對應的十進制數字的值,可通過計算他們與前三個值的相對關系來看:

假設這裡有個 0x173a4c,我們展開他的每一個十六進制數字:

讀書筆記Pt.3——《深入了解計算機系統》

這樣就得到了二進制的: 000101110011101001001100

反過來一樣的,我們可以講十進制序列每四位分成一組,再轉換成 16 進制,如果序列不滿足 4 的倍數,最左邊一組可以小于 4 ,前面,前面用 0 來補足再轉換出 16 進制。

再來點邪術:

讀書筆記Pt.3——《深入了解計算機系統》

字????

每台計算機都有一個字長,指明了整數和指針資料的大小,因為我們的虛拟位址也是靠字來編碼的,是以字長決定的最重要的就是虛拟位址空間的最大大小,也就是說,一個字長為 w 位的機器虛拟位址範圍就是 0-2^(w-1) ,于是做多通路 2 的 w 次方個位元組。

現在大多數計算機的字長都是 32 位,限定了虛拟位址空間為 4 千兆位元組(4GB),随着存儲器價格的降低,字長為 64 位的高端機器正在為大規模科學與資料庫應用提供平台基礎,往背景式本和筆記本也會變成 64 位元組。

今天就到這裡吧,摸了家人們

繼續閱讀