本作品採用知識共享署名-相同方式共享 4.0 國際許可協議進行許可。
1.記憶體管理概要,功能,記憶體保護
2. 程式的裝入(載入)和鏈結
3. 問題:能夠裝入記憶體任何位置的**程式必須是可動態繫結/重定位的?
4. 練習
重點討論第三點問題,關於重定位,動態繫結的問題。簡要介紹記憶體管理和程式執行前經過的步驟程序管理討論了程序通過程序排程可以共享乙個cpu,為了實現效能改進就必須共享記憶體,但不可能將所有使用者程序資料放入主存,這時就需要對記憶體進行劃分和動態分配,這就是記憶體管理。
記憶體管理可以提高記憶體利用率,通過虛擬技術從邏輯上擴充儲存器,具體功能而言有:
1. 概要:
程式要裝入記憶體才能執行(因為程式執行必須對映到絕對位址並載入到記憶體。程式執行時,cpu(程序)通過產生絕對位址訪問記憶體的程式指令和資料。程式終止,釋放記憶體空間,載入下乙個程式。)
通常程式以二進位制可執行檔案的形式儲存在磁碟上。要執行的話,程式就得被調入記憶體並放在程序空間內。
2. 程式執行前經歷的步驟
而使用者程式在執行前,要經過好幾個步驟:(有的步驟可選)
源程式(.c)–【編譯器/程式(compile)】-- 若干物件/目標模組(.obj) --【鏈結程式/鏈結器(link)】-- 完整的裝入/載入模組(.exe) --【裝入程式/載入器(load)】-- 二進位制記憶體映像
裝入模組(可執行檔案.exe)通過系統庫可通重載入器(裝入程式)載入到記憶體執行
二進位制映象和動態鏈結庫一同在記憶體中執行
1. 重定位和靜態重定位
e.g1把作業位址空間中使用的邏輯位址變成記憶體中實體地址稱為(b)
a.載入
b.重定位
c.物理化
d.邏輯化
e.g2動態重定位過程依賴於( abc)。
a.可重定位裝入程式
b.重定位暫存器
c.位址變換機構
d.目標程式
e.g3
靜態重定位的時機是()
a.程式編譯時
b.程式鏈結時
c.程式裝入時
d.程式執行時(動態重定位)
e.g4
能夠裝入記憶體任何位置的**程式必須是(c)
a.可動態鏈結的
b.可定位的
c.可動態繫結的
d.可靜態鏈結的
5判斷程式必須裝入記憶體才能被執行。
a.√b.
OS虛擬記憶體管理
說在前面的話 os記憶體管理 os的中斷 異常 系統呼叫 計算機記憶體越來越大,但是軟體的記憶體開銷也是隨之增加的,計算機系統總是會出現記憶體不夠的問題,於是出現了以下幾種辦法來解決記憶體空間不夠的問題 覆蓋 overlay 應用程式手動把需要的指令和資料儲存在記憶體中,這項技術的關鍵代表就是ms ...
記憶體管理(1)
在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區 常量儲存區。棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。堆,就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個n...
記憶體管理(1)
記憶體管理 如果對乙個物件使用了alloc,mutable copy withzone 或者retain,那麼你必須使用相應的release或者autorelease。基本型別 任何c的型別 如 int,long,long long,struct等。記憶體管理對於c語言基本型別無效。oc型別 非基本...