前言程序員
入坑計算機原理嘛,漫遊慢慢遊shell
思惟導圖緩存
1.1 信息就是位+上下文安全
什麼是位? 一個程序的生命週期是從一個源程序開始的,源程序實際上就是一個有值 0 和 1 組成的 位(比特 序列,8個位 爲一組稱爲字節 每一個字節表示程序中的某些文本字符網絡
位<字節<字符 這樣子的組成關係吧
多線程
系統中全部的信息——包括磁盤文件、內存中的程序、內存中存放的用戶數據以及網絡上傳的數據,都是由一串比特表示是的併發
什麼是上下文?在不一樣的上下文中,一個一樣的字節 可能表示一個整數、浮點數、字符串或者是機器指令性能
1.2程序被其餘程序翻譯成不一樣的格式優化
hello程序的生命週期是一個高級c 語言程序開始的,爲了看的懂,每一條C語句須要被其餘程序轉化爲一系列低級機器指令,即爲可執行目標文件操作系統
1.3瞭解編譯系統如何工做是大有益處的
老是說要優化,若是瞭解計算機是如何編譯的,是否是可以從底層優化呢?帶着疑問閱讀後面章節
1.4 處理器讀並解釋儲存在內存中的指令
這個是指咱們經常使用的運行命令的shell,hello程序被編譯成可執行目標文件,shell加載並運行 輸出hello程序它的消息 而後等待下一個命令行
1.4.1 系統的硬件組成
這個我認爲就是 電腦的組成啊(有鼠標鍵盤 顯示器 主板 內存 CPU) 而後後面的章節會講詳細講到他們是怎麼密切配合工做的
1.4.3 hello 程序運行
hello程序放在磁盤上
程序加載,從磁盤複製到主存
當處理器運行程序,從主存複製處處理器
數據串「hello Word」開始時在磁盤上,複製到主存上,而後再從主存複製到顯示設備
哇 複製來複制去的 是否是額外的開銷,是否是能夠提高一下速度呢?(高速緩存)
1.5高速緩存相當重要
結論:高速緩存存儲器存在的應用程序員可以利用高速緩存將程序的性能提升一個數量級
在處理器和一個較大較慢的設備(主存)之間插入一個更小更快的存儲設備(高速緩存)的想法已經成爲一個廣泛的觀念
1.6存儲設備造成層次結構
這個圖告訴我,高速緩存器能夠加不少個,那就是有好多級啊 而後經過需求來提升哪一級的性能麼?
1.7 操做系統管理硬件
這個是講 I/O 設備
運行hello程序都沒有直接訪問鍵盤啊 鼠標顯示器這些的 它們依靠着操做系統提供服務
操做系統有兩個基本功能 一是防止硬件失控的應用程序濫用 二是 嚮應用程序提供簡單一致的機制來控制複雜又一般大不相同的低級硬件設備
1.7.1 進程
進程是操做系統對一個正在運行的程序的一種抽象
實現進程這個抽象概念須要低級硬件和操做系統軟件之間的緊密的合做
1.7.2 線程
線程:一個進程能夠由多個稱爲線程的執行單元組成,每一個線程都運行在進程的上下文中,並共享一樣的代碼和全局數據。 多線程之間比多進程之間更容易共享數據,線程通常也比進程更高效。
1.7.3虛擬內存
虛擬內存:虛擬內存是一個抽象概念,它爲每一個進程提供了一個假象,即每一個進程都在獨佔地使用主存。每一個進程看到的內存都是同樣的,稱爲虛擬地址空間。
1.8 系統之間利用網絡通訊
網絡提供了計算機系統之間通訊的手段。從特殊系統的角度來看,網絡就是一種I/O設備。