BSS(二進(jìn)制文件術(shù)語(yǔ))是“Block Started by Symbol”的縮寫,意為“以符號(hào)開始的塊”,。 BSS是Unix鏈接器產(chǎn)生的未初始化數(shù)據(jù)段,。其他的段分別是包含程序代碼的“text”段和包含已初始化數(shù)據(jù)的“data”段。BSS段的變量只有名稱和大小卻沒(méi)有值,。此名后來(lái)被許多文件格式使用,,包括PE。“以符號(hào)開始的塊”指的是編譯器處理未初始化數(shù)據(jù)的地方,。BSS節(jié)不包含任何數(shù)據(jù),,只是簡(jiǎn)單的維護(hù)開始和結(jié)束的地址,以便內(nèi)存區(qū)能在運(yùn)行時(shí)被有效地清零,。BSS節(jié)在應(yīng)用程序的二進(jìn)制映象文件中并不存在,。 在采用段式內(nèi)存管理的架構(gòu)中(比如intel的80x86系統(tǒng)),bss段(Block Started by Symbol segment)通常是指用來(lái)存放程序中未初始化的全局變量的一塊內(nèi)存區(qū)域,,一般在初始化時(shí)bss 段部分將會(huì)清零,。bss段屬于靜態(tài)內(nèi)存分配,即程序一開始就將其清零了,。 比如,,在C語(yǔ)言之類的程序編譯完成之后,已初始化的全局變量保存在.data 段中,,未初始化的全局變量保存在.bss 段中,。 text和data段都在可執(zhí)行文件中(在嵌入式系統(tǒng)里一般是固化在鏡像文件中),由系統(tǒng)從可執(zhí)行文件中加載,;而bss段不在可執(zhí)行文件中,,由系統(tǒng)初始化,。 |
|