如果你全力投身學習本書中的概念,完全理解底層計算機系統以及它對應用程序的影響,那麼你會步入上成為為數不多的“大牛”的道路。
一、信息=位 上下文<1>hello.c 這樣隻由 ASCII 字符構成的文件稱為文本文件,其他的所有文件都稱為二進制文件
<2>系統中所有的信息-包括磁盤文件、内存中的程序、内存中存放的用戶數據以及網絡上傳送的數據,都是由一串比特表示的。區分不同數據對象的唯一方法是我們讀到這些數據對象時的上下文。比如,在不同的上下文中,一個同樣的字節序列可能表示一個整數、浮點數、字符串或者機器指令。
二、程序被其他程序翻譯成不同的格式hello.c文本文件會經過四個階段的程序(預處理器、編譯器、彙編器、鍊接器)生成一個目标程序(也叫可執行目标程序)
三、處理器讀并解釋存儲在内存中的指令CPU 在指令的要求下,可能會執行的操作。(一些簡單操作的例子)
五、操作系統管理硬件
操作系統有兩個基本功能:
操作系統通過幾個基本的抽象概念(進程、虛拟内存和文件)來實現這兩個功能。
1、進程進程是操作系統對一個正在運行的程序的一種抽象。
從一個進程到另外一個進程的轉換是由操作系統内核來管理的。内核是操作系統代碼常駐内存的部分。當應用程序需要執行操作系統的某些操作時,比如讀寫文件,它就執行一條特殊的系統調用(System call)指令,将控制權傳遞給内核。然後内核執行被請求的操作并返回應用程序。
注意:内核不是一個獨立的進程。相反,它是系統管理全部進程所有代碼和數據結構的集合。
2、線程每個線程都運行在進程的上下文中,并共享同樣的代碼和全局數據。多線程比多進程之間更容易共享數據,也更高效。
3、虛拟内存
圖中的箭頭,指的是存儲空間動态擴展的方向。沒有文字标識的空間是空白空間。
4、文件文件就是字節序列,僅此而已。每個I/O設備,包括磁盤、鍵盤、鼠标、顯示器,甚至網絡,都可以看成文件。系統中的所有輸入輸出都是使用一小組稱為 Unix I/O 的系統函數調用讀寫文件來實現的。
文件這個抽象概念非常強大。例如:處理磁盤文件内容的程序員可以非常幸福,因為他們無需了解具體的不同德磁盤技術。
六、系統之間通過網絡進行通信我們一直把系統視為一個孤立的硬件和軟件的集合體。實際上,現代系統經常通過網絡和其他網絡連接在一起,例如分布式系統。從一個單獨的系統來看,網絡可以視為I/O設備。系統可以從主存中複制一串數字到網絡适配器。
七、重要主題1、Amdahl 定律當我們對系統的某部分加速時,其對系統整體性能的影響取決于該部分的重要性和加速程度。
2、并發和并行
1、并發是指兩個進程或者兩個線程交替執行。
2、并行是指在同一時刻(計算機同一時鐘周期)内,2個進程或線程同時在執行。
3、計算機系統中抽象的重要性
文件是對I/O設備的抽象;虛拟内存是對程序存儲器的抽象;而進程是對一個正在運行的程序的抽象,指令集架構是對處理器的抽象,底層的硬件遠比抽象描述的要複雜精細。API接口是對函數的抽象;虛拟機是對整個計算機的抽象。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!