午夜网站国产欧美_加勒比视频亚洲无码_91亚洲人人在字幕国产_18禁止美女爆乳免费网站_被消防员c哭高h野外糙汉动漫_午夜精品视频在线无码_gogowww人体大胆裸体午液_2021自拍偷区亚洲综合第一页_国产欧美一区二区精品性色超碰_99國產精品無碼

Hi,您好,歡迎來到西安盛圖軟件科技有限公司!

知識(shí)分享|如何理解程序的內(nèi)部結(jié)構(gòu)

發(fā)布時(shí)間:2023-07-28 14:00:11

如何理解程序的內(nèi)部結(jié)構(gòu)

在很多時(shí)候,程序需要一些輔助的工具,需要一些平臺(tái)支持,使得一個(gè)靜態(tài)的、死的軟件程序變成活動(dòng)的、可以運(yùn)行起來的程序,這就是常說的進(jìn)程。在系統(tǒng)程序中常常會(huì)碰到一個(gè)可以運(yùn)行其他程序的程序,接下來我們將深入討論,如何理解程序的內(nèi)部結(jié)構(gòu)。


一、為什么要了解程序的內(nèi)部結(jié)構(gòu)

image.png

對(duì)于嵌人式軟件程序員而言,深入掌握程序的內(nèi)部結(jié)構(gòu),對(duì)于程序設(shè)計(jì)是非常重要的。

由于所開發(fā)的程序需要“燒”到 Flash,在運(yùn)行時(shí)需要搬遷到內(nèi)存,甚至在運(yùn)行的過程中需要移動(dòng)位置、被壓縮、解壓縮以及把一個(gè)靜態(tài)存放在磁盤的程序加載到內(nèi)存當(dāng)中,并別將它們的代碼段,數(shù)據(jù)段復(fù)制到合適的位置。

必要的時(shí)候還可能要與一個(gè)動(dòng)態(tài)庫(kù)相連接,從而解析運(yùn)行時(shí)才能確定的一些符號(hào)地址。由此看來,深人了解程序,有助于對(duì)所設(shè)計(jì)的系統(tǒng)更精確地控制。

那么,程序是什么?一個(gè)程序由哪幾部分組成?這個(gè)看似極其簡(jiǎn)單的問題,要想真正把它弄清楚,卻不那么簡(jiǎn)單。


二、程序=代碼+數(shù)據(jù)

image.png

首先,無論是應(yīng)用程序,還是系統(tǒng)程序,它們都是程序,也就是說,它們都是一些指令代碼與指令所處理的數(shù)據(jù)的集合,即

程序=(代碼+數(shù)據(jù))

代碼是按照程序員的設(shè)計(jì)意圖設(shè)計(jì)出來供 CPU 執(zhí)行的指令序列。而數(shù)據(jù)可以看成是代碼的處理對(duì)象、工作狀態(tài)等的集合。所以一個(gè)程序由最基本的代碼段數(shù)據(jù)段組成。

代碼與數(shù)據(jù)在機(jī)器中都表現(xiàn)為0,1的二進(jìn)制序列,在系統(tǒng)程序中代碼和數(shù)據(jù)并不嚴(yán)格區(qū)分,因?yàn)樽鳛榇a的機(jī)器表示,本身就是數(shù)據(jù)序列。

所有的代碼和數(shù)據(jù)在初始時(shí)都存于 Flash或是別的存儲(chǔ)設(shè)備中,例如:EEPROM,CF卡,SD卡,或是移動(dòng)硬盤。代碼都要被復(fù)制到內(nèi)存或者直接讀到 CPU的指令隊(duì)列之后才能運(yùn)行。


三、堆棧段

image.png

一個(gè)程序除了代碼段和數(shù)據(jù)段之外為了儲(chǔ)存臨時(shí)數(shù)據(jù)變量(包括返回指針以及程序狀態(tài)),一個(gè)完整的程序還必須有堆棧段。代碼段、數(shù)據(jù)段和堆棧段是一個(gè)程序的基本組成部分。

實(shí)際過程中,數(shù)據(jù)段有許多的變種,例如常量數(shù)據(jù),未初始化數(shù)據(jù),臨時(shí)變量數(shù)據(jù),動(dòng)態(tài)申請(qǐng)數(shù)據(jù)等,因而出現(xiàn)了一些特殊的數(shù)據(jù)段。這些數(shù)據(jù)段有些是在程序生成的過程中靜態(tài)確立的,而有一些卻是程序在執(zhí)行過程中靜態(tài)或動(dòng)態(tài)分配并初始化的物理空間這就是常見的 BSS段,以及堆(HEAP)。

之所以有這些變種有2個(gè)主要意圖:

01-讓系統(tǒng)中的其他程序?qū)嶓w共享有限的物理內(nèi)存資源。

02-節(jié)省可執(zhí)行程序在磁盤(或別的存儲(chǔ)體)中的靜態(tài)存儲(chǔ)空間即目標(biāo)程序的大小。

圖片


上一篇:嵌入式實(shí)時(shí)操作系統(tǒng)
下一篇:干貨分享|關(guān)于Linux與和Windows的區(qū)別

歡迎登錄盛圖科技

歡迎注冊(cè)盛圖科技

已有賬號(hào),立即登錄