VxWorks 作業系統記憶體布局

2021-06-19 19:29:00 字數 1737 閱讀 4074

在vxworks

作業系統過程中可能使用到的

bootrom

和vxworks

核心映像本身都可以存

在兩種方式:壓縮的和非壓縮的。

1.非壓縮形式

如果沒有進行壓縮,則只有一次重定位,即從

rom到

ram只存在一次**複製過程,

所有rom

中儲存的**都被一次性複製到

ram中。

① 對於

bootrom 

而言,所有的**被一次性複製到

ram_high_adrs 

指定位址處,

如圖3-1

所示。

② 對於

vxworks_rom 

而言,所有的**被一次性複製到

ram_low_adrs 

指定位址

處,如圖

3-2 

所示。

2.壓縮形式

如果有進行壓縮,則**複製過程將分為兩次,一次是非壓縮**,另一次是壓縮**,且二者複製到記憶體不同的位置處。

① 對於

bootrom 

而言,非壓縮**(

rominit.s

、bootinit.c

)被直接複製到

ram_

low_adrs 

處;壓縮**複製到

ram_high_adrs 

處,並在複製過程中完成解壓縮,如

圖3-3 

所示。

② 對於

vxworks_rom 

而言,非壓縮**(

rominit.s

、bootinit.c

)被直接複製到

ram_high_adrs

處;壓縮**複製到

ram_low_adrs

處,並在複製過程中完成解壓縮,

如圖3-4

所示。

鏈結,另一次是將非壓縮**和壓縮**整合在一起時的鏈結。注意,在進行非壓縮**和

壓縮**的整合時,壓縮**部分是作為資料進入整個映像的,所以不會對其進行重新鏈結。

對壓縮**的鏈結,實際上是在**被壓縮之前完成的,完成**的鏈結後,生成特定格式

的目標檔案(如

elf 

或者coff

),為了在解壓縮後可以直接執行,首先必須將其轉成二進

制可執行檔案,通過

objcopy

函式完成此項功能,此後對生成的二進位制可執行檔案呼叫

deflate

函式進行壓縮,由於需要將壓縮後的**最後整合到整個映像中,故壓縮後的檔案還需要通

過bintoasm 

工具進行轉換,轉成乙個彙編原始檔,該檔案將壓縮後的二進位制**作為資料

部分進行儲存,從而避免在與非壓縮**最後進行二次鏈結時被修改。

於bootrom

,壓縮**被鏈結到了

ram_high_adrs

位址處,而對於

vxworks_rom

,則被鏈結到了

ram_low_adrs 

_rominit

ram_high_adrs

,則最後整合時就為

ram_low_adrs

;如果壓縮**為

ram_low _adrs

,則整合時就為

ram_high_adrs

VxWorks 作業系統記憶體布局

在vxworks 作業系統過程中可能使用到的 bootrom 和vxworks 核心映像本身都可以存 在兩種方式 壓縮的和非壓縮的。1 非壓縮形式 如果沒有進行壓縮,則只有一次重定位,即從 rom到 ram只存在一次 複製過程,所有rom 中儲存的 都被一次性複製到 ram中。對於 bootrom ...

作業系統記憶體管理

作業系統記憶體管理 一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於32位程序來說,這個位址空間為4g,因此程序中的位址可以為0x00000000至0xffffffff之間的任何乙個值。其中4g空間中的低區的2g空間留給程序使用,而高區的2g空間則留給系統使用。在windows200...

作業系統記憶體管理

作業系統記憶體管理一 程序的虛擬位址空間 每個程序都被賦予自己的虛擬位址空間,對於 32位程序來說,這個位址空間為 4g,因此程序中的位址可以為 0x00000000 至0xffffffff 之間的任何乙個值。其中 4g空間中的低區的 2g空間留給程序使用,而高區的 2g空間則留給系統使用。在win...