4 1程式編譯連線

2021-09-02 23:36:59 字數 1646 閱讀 2393

儲存器管理

原因:  容量雖不斷擴充,仍不能滿足現代軟體和使用者的需要,是一種寶貴、緊俏的資源;    

多層次處理,協調cpu與儲存裝置的速度差距;

功能:  重點是記憶體管理,對其有效的管理直接影響儲存器的利用率、系統效能。

儲存器資源的分配和**

位址變換(邏輯位址與實體地址的對應關係維護)

儲存共享和保護

虛擬儲存的排程演算法

外存的管理:磁碟儲存器管理、檔案系統等中涉及。

程式的裝入和鏈結

多道程式環境下,程式執行必須為之先建立程序。

建立程序的第一件事:將程式和資料裝入記憶體。

程式進記憶體的一般過程:

編譯compiler:編譯程式:將使用者源**編譯成若干個目標模組。鏈結link裝入load:由裝入程式將裝入模組裝入記憶體,構造pcb,形成程序,開始執行(使用實體地址)

1)位址的概念

邏輯位址(相對位址,虛位址)

使用者的程式經過彙編或編譯後形成目標**,目標**中的指令位址是相對位址。

一般首位址為0,其餘指令中的位址都相對於首位址來編址

不能用邏輯位址在記憶體中讀取資訊

邏輯位址(相對位址,虛位址)

實體地址(絕對位址,實位址)

記憶體中儲存單元的位址

實體地址可直接定址被執行

將使用者程式中的邏輯位址轉換為執行時由機器直接定址的記憶體實體地址的過程即:使用者的第10位元組處的指令在記憶體的第多少位址上

2)程式裝入中的位址處理

絕對裝入(邏輯位址=實體地址)

靜態重定位裝入(邏輯位址à重定位à實體地址)

動態執行時重定位裝入(邏輯位址à重定位à實體地址)

不同的程式鏈結裝入方式(使用記憶體的時機)

靜態鏈結裝入時鏈結執行時鏈結

程式的編譯與連線

一 建立main.c 首先在linux環境中使用命令vim main.c寫乙個這樣的程式 include belongal define max 10 int g val1 11 int g val2 0 int g val3 static int g val5 11 static int g va...

程式的連線和編譯過程

連線 linking 是將各種 和資料片段收集並組合稱為乙個單一檔案的過程,這個檔案可被載入 複製 到記憶體並執行。在早期的計算機系統中,連線時手動執行的。在現代系統中,連線是由 叫做聯結器 linker 的程式自動執行的。main.c sum.c 大多數編譯系統提供編譯器驅動程式 compiler...

GCC編譯連線

引數 e 可以完成程式的預處理工作而不進行其他的編譯工作。gcc e o a.cxx a.c 輸入下面的命令,檢視經過預處理以後的a.cxx 檔案。vim a.cxx 引數 s 可以控制gcc 在編譯c 程式時只生成相應的匯程式設計序檔案,而不繼續執行後面的 編譯。下面的命令,可以將本章中的c 程式...