吾讀 《深入理解計算機系統》第一章計算機系統漫遊

2021-10-24 02:22:31 字數 2409 閱讀 5199

對於電腦來說,資訊都是二進位制。在不同的上下文中,同樣的位元組序列可能表示整數、浮點數、字串或者機器指令。

一切都是位元,到了二進位制級別,一切都沒有區別了。計算機也必須又上層告訴它一串**到底是什麼東西。這就是所謂上下文。

編譯流程

源程式 -》預處理器 -》被修改的源程式 -》編譯器 -》匯程式設計序-》彙編器 -》.o檔案,可重定位的目標程式 -》 聯結器 -》可執行程式。

使用gcc編譯單個檔案,可以設定不同的引數,得到中間檔案。 gcc引數

gcc -e hello.c > ttt.txt 只啟用預處理,需要手動重定向

gcc -e hello.c | more

gcc -s hello.c 生成.s檔案

gcc -c hello.c 生成.o

gcc -o hello.exe hello.c -o指定輸出檔案

乙個程式執行,系統首先要從硬碟讀取資料到記憶體中,然後cpu逐條執行指令,不斷的跟主存進行互動。系統花費大量時間在資料的拷貝上,所以系統需要使這些拷貝動作盡可能的快。

根據機械原理,較大的儲存裝置要比較小的儲存裝置執行的慢。為了解決處理器與磁碟讀取之間速度鴻溝,於是出現了「快取記憶體儲存器」。

本書的重要課題之一就是幫助程式設計師理解快取記憶體儲存器的機理,並利用這些知識極大的提高程式的效能。見第六章。

空間越大的裝置,物理體積可能越大?所以物理上來看讀取的物理指標要花費更多的時間來移動?

###1.6 形成層次結構的儲存裝置

在處理器和乙個較大較慢的裝置之間插入乙個較小的,更快的儲存裝置的想法成為乙個普遍的觀念。實際上,每個計算機系統中的儲存裝置都被組織成乙個儲存器層次結構。

例如:node查詢,使用乙個小型快取結構。增加這種結構的問題是產生了冗餘資料,更新node的時候需要同時更新快取結構。適合乙個管理器內部自己實現,不暴露給外部。內部自己維護好資料。

為什麼計算機儲存裝置沒有這個問題?快取記憶體中的資料會不會變成髒資料?

因為各種快取及主存對系統來說,統一構成了乙個完整的虛擬儲存器,實際上乙份資料並不會冗餘的儲存在多個地方。

作業系統有兩個主要用途:

作業系統使用程序、虛擬儲存器和檔案等抽象概念來實現這兩個功能

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-cizmqhp1-1598882793582)(檔案虛擬概念.jpg)]

1.7.1 程序

程序是電腦科學中最重要和最成功的概念之一。程序是作業系統對執行程式的一種抽象。在乙個系統上可以同時執行多個程序,而每個程序都好像在獨佔的使用硬體。我們稱之為併發執行,實際上是乙個程序的指令和另個程序的指令交錯執行的,作業系統的這種交錯機制稱為上下文切換。上下文就是程序執行所需的所有狀態資訊。

1.7.2 執行緒

每個執行緒都執行在程序的上下文中,並共享相同的**和全域性資料。多執行緒之間比多程序更容易共享資料。執行緒一般都比程序更高效。

1.7.3. 虛擬儲存器

乙個抽象概念,它為每個程序提供了乙個假象,好像每個程序都在獨佔地使用主存。每個程序看到的儲存器都是一致的,稱之為虛擬位址空間。

對於win32程式來說,預設情況下只能處理2g的記憶體區間,可以通過editbin /largeadressaware exepath來讓程式可以支援超過2g的記憶體位址。在32位機器上,開啟了這個設定也沒啥用,還得開啟系統的3g選項。在64位機器上則可以直接使用到4g的記憶體空間。

解決win32程式記憶體超2g崩潰問題

1.7.4 檔案

檔案只不過是位元組序列。每個i/o裝置,包括磁碟、鍵盤、顯示器,甚至於網路,都可以被當成是檔案。檔案這個簡單而精緻的概念異常的強大,它使得應用程式能夠統一的看待系統中可能含有的各式各樣的i/o裝置。

通過本章的學習,我們對計算機的組成有了初步的了解。計算機的主要組成部分,儲存器的層次結構,編譯的幾個步驟,檔案系統的抽象,程序執行緒等等。這些基本概念對後續的學習和認知都舉足輕重。

深入理解計算機系統第一章

即每個程式中的每個字元都在ascii標準中被乙個具體的數值來標明。這些字元稱之為ascii字元,由ascii字元構成的檔案叫做文字檔案,其他都是二進位制檔案 從原始檔到目標檔案需要4個階段,預處理,編譯,彙編,鏈結。系統的硬體組成 匯流排 貫穿系統的是一組電子管道,稱為匯流排,它攜帶資訊位元組並負責...

《深入理解計算機系統》第一章 計算機系統漫遊

計算機系統是由硬體和系統軟體組成的,他們共同工作來執行應用程式。深入理解底層計算機系統以及它對應用程式的影響有助於提高程式的效能。1.1 資訊就是位 上下文 源程式實際上就是乙個由值0和1組成的位序列。程式是由文字字元表示的,8個位被組織成一組,成為位元組,每個位元組表示為程式中的文字字元。文字字元...

深入理解計算機系統 第一章 計算機系統漫遊

本著對計算機執行原理的好奇以及個人職業發展的需要,開始閱讀這本書。以下分節記錄讀書筆記 1.1 資訊就是位 上下文 計算機系統中存放的所有資訊都是由一串位元 bit 表示的,但值得注意的是,同樣的位元資訊在不同的上下文中所代表的意思是不同的。在這裡,我們可以將 上下文 理解為對位元資訊的解讀方式。每...