一作業系統裝入程式到記憶體中幾種方法:
1:絕對裝入方式(Absolute Loading Mode):
即程式在編譯時間就產生物理地址的目標代碼,編譯完成後,不在需要對程式和資料進行修改,程式員也可以在程式中賦值物理地址。
缺點:不靈活,要求程式員對記憶體相當熟悉,只適用於單道程式環境。
2:靜態重定位裝入方式(Relocation Loading Mode):
即程式在編譯時間使用的是邏輯地址,在裝入的時候,臨時將邏輯地址轉換成物理地址。到記憶體中後的地址為物理地址。這種方法叫做靜態重定位裝入。
缺點:不靈活,當進程有需要動態改變地址時則無法改變。
3:動態重定位裝入方式(Dynamic Run-time Loading)
即程式在裝入記憶體之後,在記憶體中仍然使用邏輯地址,只有在取該資料時,才轉換成物理地址。這樣做會影響到程式的執行速度。因此,一般將轉換成物理地址的過程做成硬體來完成轉換,需要添加一個地址轉換寄存器來支援。
二 程式的連結過程
1:靜態連結(Static Linking)
程式在編譯之後形成目標模組,然後將目標模組和庫函數組合成一個模組,不再分開的連結。
缺點:消耗記憶體的資源很大,往往有的庫函數或模組在程式的運行過程中沒有使用,極大的浪費了記憶體空間。
2:裝入是動態連結(Load-time Dynamic Linking)
程式在編譯時間形成目標模組代碼,在需要調入記憶體時,連結成一個模組裝入記憶體。
缺點:和靜態連結一樣,對記憶體消耗大。
3:運行時動態連結(Runtime Dynamic Linking)
程式在編譯時間形成目標模組,在調入記憶體時調入需要執行的代碼模組,當用到某個庫函數或模組式時,由作業系統動態調入記憶體執行。
三 記憶體連續分配方式
1:單一連續記憶體配置
把記憶體地區中劃分OS分區和應用進程地區兩大塊,互不干涉。在應用進程地區的記憶體按照單一的連續分配原則分配給各個進程。
使用範圍:單使用者,單任務的作業系統中。如CP/M,MS-DOS作業系統。
2:固定分區分配
a.固定分區大小一致分配
將記憶體劃分為大小一致的多個分區,這種分配方式缺乏靈活性,當進程太小造成空間浪費,太大則無法分配空間,導致裝入失敗。
b.固定分區大小不一致分配
將記憶體劃分為大小不一致的多個分區。這樣可根據進程大小適當分配地區。
分配具體操作:將各個分區按照大小排隊,用一張分區表格儲存體,該表中包含分區的大小,起始地址,和使用方式
使用範圍:IBM360的MFT