源程式是由0和1組成的位序列,8個位被組織成一組,稱為位元組。每個位元組表示程式中的某個文字字元。這種形式能夠被人讀懂。
基本思想:系統中的所有的資訊-包括磁碟檔案、儲存器中的程式、儲存器中存放的使用者資料以及網路上傳送的資料,都是由一串位表示的。
區分不同資料物件的唯一方法是我們讀到這些資料物件時的上下文。
為了在系統上執行hello.c程式,每條c語句都必須被其他程式轉化為一系列的低階機器語言指令(如組合語言)。
然後,這些指令按照可執行目標程式的格式打好包,以二進位制磁碟檔案的形式存放起來,其稱為可執行目標程式。
從hello.c到hello.exe的翻譯過程可分為四個階段完成。執行這四個階段的程式(預處理器、編譯器、彙編器和鏈結器)一起構成了編譯系統。
程式由作業系統執行。unix系統中通過shell應用程式及相關命令載入執行。
所有應用程式對硬體的操作都必須通過作業系統。可以把作業系統看成是應用程式和硬體之間插入的一層軟體。
作業系統基本功能:
1) 防止硬體被失控的應用程式濫用
2)向應用程式提供簡單一致的機制來控制複雜而又通常大相徑庭的低階硬體裝置。
其通過程序、虛擬儲存器、檔案等抽象概念來實現這兩個功能。
檔案是對i/o裝置的抽象,虛擬儲存器是對主存(記憶體)和磁碟i/o裝置的抽象,程序則是對處理器、貯存和i/o裝置的抽象。
程序。程序是作業系統對乙個正在執行的程式的一種抽象。在乙個系統上可以同時執行多個程序,而每個程序都好像在獨佔地使用硬體。傳統系統在乙個時刻只能執行乙個程式,而多核處理器能同時執行多個程式。無論是單核還是多核系統,乙個cpu通過在程序間切換,可以併發的執行多個程序。
作業系統保持跟蹤程序執行所需的所有狀態資訊,即上下文,包括程式計數器和暫存器檔案的當前值,主存內容等。在任何乙個時刻,單處理器系統都只能執行乙個程序的**。當作業系統決定要把控制權從當前程序轉移到某個新程序時,就會進行上下文切換。
實現程序這個抽象概念需要低階硬體和作業系統軟體之間的緊密合作。
執行緒。乙個程序實際上可以由多個稱為執行緒的執行單元組成,每個執行緒都執行在程序的上下文中,並共享同樣的**和全域性資料。由於網路伺服器對並行處理的需求,執行緒成為非常重要的程式設計模型,因為多執行緒之間比多程序之間更容易共享資料;當多處理器可用的時候,多執行緒也是一種使程式可以更快執行的方法。
虛擬儲存器。虛擬儲存器這個抽象為每個程序提供了乙個假象,即每個程序都在獨佔地使用主存。每個程序看到的是一致的儲存器,稱為為虛擬位址空間。
檔案。檔案就是位元組序列。每個i/o裝置,磁碟、鍵盤、顯示器、網路等都可以視為檔案。檔案這個抽象向應用程式提供了乙個統一的視角來看待系統中可能出現的各種i/o裝置。
《深入理解計算機系統》讀書筆記
小端模式 低有效位元組在前,高有效位元組在後 代表處理器 intel 大端模式 高有效位元組在前,低有效位元組在後 代表處理器 ibm power sun c語言允許無符號整數與有符號整數之間的轉換,轉換規則是 底層的位保持不變 當執行乙個運算時,若兩個數乙個為無符號數,乙個是有符號數,則c語言隱式...
《深入理解計算機系統》讀書筆記
ip位址是乙個32為無符號整數,ip位址存放在ip位址結構體中 struct in addr tcp ip規定統一的網路位元組順序 大端位元組順序 因為主機位元組順序 host byte order 是小端法,所以必須有函式用於轉換。htonl函式和ntohl是32位整數,short是16位整數 i...
深入理解計算機系統(讀書筆記)
計算機的資訊儲存和處理都是以二進位制為基礎的,通過一系列的0,1組合,我們能夠去表示有限的整數和實數。首先了解三種重要的符號表示方法 有符號表示 用於表示大於或等於0的整數 無符號表示 用於表示有正有負的整數 浮點數 以科學計數法為基礎的二進位制表示方法 在計算機內部資料是按照字進行儲存的,字有著統...