黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 千鋒物聯(lián)網(wǎng)教程之Linux可執(zhí)行文件結(jié)構(gòu)與進(jìn)程結(jié)構(gòu)

千鋒物聯(lián)網(wǎng)教程之Linux可執(zhí)行文件結(jié)構(gòu)與進(jìn)程結(jié)構(gòu)

來源:千鋒教育
發(fā)布人:小鋒
時(shí)間: 2019-08-22 10:14:00 1566440040

  一、Linux可執(zhí)行文件結(jié)構(gòu)

  在 Linux 下,程序是一個(gè)普通的可執(zhí)行文件,以下列出一個(gè)二進(jìn)制可執(zhí)行文件的基本情況:

圖片1

  可以看出,此可執(zhí)行文件在存儲(chǔ)時(shí)(沒有調(diào)入到內(nèi)容)分為代碼區(qū)(text)、數(shù)據(jù)區(qū)(data)和未初始化數(shù)據(jù)區(qū)(bss)3 個(gè)部分。各段基本內(nèi)容說明如下:

  代碼區(qū):

  存放 CPU 執(zhí)行的機(jī)器指令。通常代碼區(qū)是可共享的(即另外的執(zhí)行程序可以調(diào)用它),使其可共享的目的是對(duì)于頻繁被執(zhí)行的程序,只需要在內(nèi)存中有一份代碼即可。代碼區(qū)通常是只讀的,使其只讀的原因是防止程序意外地修改了它的指令。另外,代碼區(qū)還規(guī)劃了局部變量的相關(guān)信息。

  代碼區(qū)的指令包括操作碼和操作對(duì)象(或?qū)ο蟮刂芬?。如果是立即數(shù)(即是具體的數(shù)值),將直接包含在代碼中,如果是局部數(shù)據(jù),將在運(yùn)行時(shí)在棧區(qū)分配空間,然后再引用該數(shù)據(jù)的地址,如果是未初始化數(shù)據(jù)區(qū)和數(shù)據(jù)區(qū),在代碼中同樣將引用該數(shù)據(jù)的地址。

  全局初始化數(shù)據(jù)區(qū)/靜態(tài)數(shù)據(jù)區(qū)(數(shù)據(jù)段):

  該區(qū)包含了在程序中明確被初始化的全局變量、已經(jīng)初始化的靜態(tài)變量(包括全局靜態(tài)變量和局部靜態(tài)變量)和常量數(shù)據(jù)(如字符串常量)。

  例如,一個(gè)不在任何函數(shù)內(nèi)聲明(全局變量),如下:

  int count = 100;

  使得變量 count 根據(jù)其初始值被存儲(chǔ)初始化數(shù)據(jù)區(qū)中。

  在任意位置定義靜態(tài)變量方式如下:

  static int num = 200;

  這聲明了一個(gè)靜態(tài)數(shù)據(jù)并初始化,如果在任意函數(shù)體外聲明,則表示其為一個(gè)靜態(tài)全局變量,如果在函數(shù)體內(nèi)(局部),則表示其為一個(gè)局部靜態(tài)變量。另外,如果在一個(gè)函數(shù)名前加上 static,則表示此函數(shù)只能再當(dāng)前文件中被調(diào)用。

  未初始化數(shù)據(jù)區(qū)(又叫 BSS 區(qū)):

  存入的是全局未初始化變量和未初始化靜態(tài)變量。未初始化數(shù)據(jù)區(qū)的數(shù)據(jù)在程序開始執(zhí)行之前被內(nèi)核初始化為 0 或者空(NULL)。

  例如,一個(gè)不在任何函數(shù)內(nèi)聲明的未初始化變量。

  long sum[1000];

  將 sum 存儲(chǔ)到未初始化數(shù)據(jù)

  二、Linux進(jìn)程結(jié)構(gòu)

  在 Linux 系統(tǒng)下,如果將某個(gè)可執(zhí)行文件加載到內(nèi)存運(yùn)行,則將演變成一個(gè)或多個(gè)進(jìn)程(多個(gè)進(jìn)程的原因是進(jìn)程在運(yùn)行時(shí)可以再創(chuàng)建新的進(jìn)程,但加載時(shí)只有一個(gè)進(jìn)程)。進(jìn)程是 Linux 事務(wù)管理的基本單元,所有的進(jìn)程均擁有自己獨(dú)立的處理環(huán)境和系統(tǒng)資源。進(jìn)程的環(huán)境由當(dāng)前系統(tǒng)狀態(tài)及其父進(jìn)程信息決定和組成的。

  下圖為可執(zhí)行文件存儲(chǔ)結(jié)構(gòu)和 Linux 進(jìn)程基本結(jié)構(gòu)(部分)的對(duì)照?qǐng)D。

圖片2

  一個(gè)進(jìn)程是一個(gè)運(yùn)行著的程序段,一個(gè)進(jìn)程主要包括在內(nèi)存中申請(qǐng)的空間,代碼(加載的程序,包括代碼段,數(shù)據(jù)段,BSS),堆,棧,以及內(nèi)核提供的內(nèi)核進(jìn)程信息結(jié)構(gòu)體task_struct (位置在 /usr/include/linux/sched.h)、打開的文件、上下文(指進(jìn)程執(zhí)行活動(dòng)全過程的靜態(tài)描述)信息以及掛起的信號(hào)等。

  (1)代碼區(qū)(text segment)。加載的是可執(zhí)行文件代碼段,其加載到內(nèi)存中的位置由加載器完成。

  (2)全局初始化數(shù)據(jù)區(qū)/靜態(tài)數(shù)據(jù)區(qū)(Data Segment)。加載的是可執(zhí)行文件數(shù)據(jù)段,存儲(chǔ)于數(shù)據(jù)段(全局初始化,靜態(tài)初始化數(shù)據(jù))的數(shù)據(jù)的生存周期為整個(gè)程序運(yùn)行過程。

  (3)未初始化數(shù)據(jù)區(qū)(BSS)。加載的是可執(zhí)行文件BSS段,位置可以分開亦可以緊靠數(shù)據(jù)段,存儲(chǔ)于數(shù)據(jù)段的數(shù)據(jù)(全局未初始化,靜態(tài)未初始化數(shù)據(jù))的生存周期為整個(gè)程序運(yùn)行過程。

  (4)棧區(qū)(stack)。由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值、返回值、局部變量等。在程序運(yùn)行過程中實(shí)時(shí)加載和釋放,因此,局部變量的生存周期為申請(qǐng)到釋放該段??臻g。

  (5)堆區(qū)(heap)。用于動(dòng)態(tài)內(nèi)存分配。堆在內(nèi)存中位于BSS區(qū)和棧區(qū)之間。一般由程序員分配和釋放,若程序員不釋放,程序結(jié)束時(shí)有可能由OS回收。

  系統(tǒng)之所以分成這么多個(gè)區(qū)域,主要基于以下考慮:

  代碼段和數(shù)據(jù)段分開,運(yùn)行時(shí)便于分開加載,在哈佛體系結(jié)構(gòu)的處理器將取得更好得流水線效率。

  代碼時(shí)依次執(zhí)行的,是由處理器 PC 指針依次讀入,而且代碼可以被多個(gè)程序共享,數(shù)據(jù)在整個(gè)運(yùn)行過程中有可能多次被調(diào)用,如果將代碼和數(shù)據(jù)混合在一起將造成空間的浪費(fèi)。

  臨時(shí)數(shù)據(jù)以及需要再次使用的代碼在運(yùn)行時(shí)放入棧中,生命周期短,便于提高資源利用率。

  堆區(qū)可以由程序員分配和釋放,以便用戶自由分配,提高程序的靈活性。

  三、各存儲(chǔ)類型比較

圖片3

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
如何刪除需要使用管理員權(quán)限才能刪除的文件?

如何刪除需要使用管理員權(quán)限才能刪除的文件在Windows系統(tǒng)中,有時(shí)候我們可能會(huì)遇到一些需要管理員權(quán)限才能刪除的文件。這是因?yàn)檫@些文件可能是...詳情>>

2023-10-14 06:27:57
有什么好用的redis可視化管理工具?

一、Redis Desk較好 ManagerRedis Desk較好 Manager是一款非常受歡迎的Redis數(shù)據(jù)庫管理工具。它支持直接進(jìn)行數(shù)據(jù)修改、刪除和新增等操作,而且...詳情>>

2023-10-14 06:24:43
市場(chǎng)上C++主要是用來做什么的?

C++是一種廣泛應(yīng)用于市場(chǎng)上的編程語言,具有高性能和強(qiáng)大的功能。它的設(shè)計(jì)目標(biāo)是提供高效的底層控制和與硬件交互的能力,同時(shí)保持可移植性和可...詳情>>

2023-10-14 06:01:51
為什么說PHP與Swoole是優(yōu)異組合?

PHP與Swoole在Web開發(fā)和網(wǎng)絡(luò)編程領(lǐng)域中,共同構(gòu)成了一種強(qiáng)大的解決方案。什么是PHPPHP是一種廣泛使用的開源服務(wù)器端腳本語言,特別適用于Web開...詳情>>

2023-10-14 05:08:41
Javaweb開發(fā)為什么需要分前后端?

Javaweb開發(fā)采用前后端分離的設(shè)計(jì)模式是有著諸多理由的,以下分析了這種設(shè)計(jì)模式的主要特點(diǎn)和優(yōu)勢(shì)。什么是前后端分離在Web開發(fā)中,前后端分離是...詳情>>

2023-10-14 05:05:24
快速通道
欧美日本国产| 精品国产一区二区三区久久久狼| a级毛片免费全部播放| 日韩免费在线| 国产视频一区在线| 91麻豆精品国产自产在线| 91麻豆爱豆果冻天美星空| 国产麻豆精品hdvideoss| 久草免费在线色站| 青草国产在线观看| 色综合久久天天综合绕观看| 国产精品1024在线永久免费| 久久精品成人一区二区三区| 91麻豆国产福利精品| 国产韩国精品一区二区三区| 成人免费网站久久久| 国产一区精品| 高清一级毛片一本到免费观看| 日本伦理网站| 精品国产亚洲人成在线| 精品国产一区二区三区精东影业 | 午夜家庭影院| 国产网站免费观看| 亚洲爆爽| 可以免费在线看黄的网站| 色综合久久天天综合绕观看| 精品久久久久久中文字幕2017| 免费的黄视频| 精品视频一区二区| 国产视频一区在线| 九九精品影院| 国产不卡高清| 可以免费看毛片的网站| 成人高清视频在线观看| 久久精品店| 精品视频在线看 | 黄色免费三级| 久久精品店| 亚洲 男人 天堂| 天天色色色| 欧美激情一区二区三区在线播放| 色综合久久天天综合观看| 国产麻豆精品| 日本免费区| 日本伦理黄色大片在线观看网站| 九九热国产视频| 成人影视在线观看| 久久精品店| 午夜在线亚洲男人午在线| 日韩在线观看免费完整版视频| 久草免费在线色站| 久久国产影视免费精品| 成人a大片在线观看| 九九九网站| 亚洲天堂免费观看| 免费毛片基地| 九九久久99| 国产亚洲精品aaa大片| 日韩在线观看免费| 免费一级片在线观看| 久久久久久久男人的天堂| 二级特黄绝大片免费视频大片| 亚洲www美色| 精品视频免费在线| 国产美女在线观看| 国产不卡在线观看| 欧美激情一区二区三区在线播放 | 欧美激情中文字幕一区二区| 精品毛片视频| 黄色福利| 国产国语对白一级毛片| 国产成+人+综合+亚洲不卡| 日韩在线观看视频网站| 亚洲第一页乱| 国产欧美精品午夜在线播放| 久久99中文字幕久久| 日韩中文字幕一区| 亚飞与亚基在线观看| 久久精品免视看国产明星| 久草免费在线观看| 欧美1区| 国产欧美精品| 国产精品免费久久| 色综合久久天天综合绕观看 | 国产精品自拍在线| 欧美α片无限看在线观看免费| 日本伦理网站| 精品国产一区二区三区免费 | 久久久久久久免费视频| 欧美激情中文字幕一区二区| 国产网站在线| 精品在线观看国产| 香蕉视频亚洲一级| 午夜在线亚洲| 国产一区免费在线观看| 亚洲精品中文一区不卡| 黄视频网站在线看| 沈樵在线观看福利| 99色视频在线观看| 国产a视频精品免费观看| 亚洲精品久久久中文字| 久久久久久久男人的天堂| 国产极品白嫩美女在线观看看| 国产一区免费在线观看| 国产网站在线| 午夜欧美成人香蕉剧场| 四虎久久影院| 国产国语对白一级毛片| 999精品影视在线观看| 色综合久久天天综合绕观看| 黄视频网站免费看| 国产高清在线精品一区a| 成人免费观看视频| 青青久久网| 天天做日日爱夜夜爽| 美女被草网站| 深夜做爰性大片中文| 国产视频一区二区在线观看| 国产成人精品综合| 久久成人综合网| 韩国三级视频网站| 久久精品免视看国产明星| 91麻豆爱豆果冻天美星空| 国产伦精品一区二区三区无广告 | 九九免费精品视频| 99久久视频| 日本特黄特黄aaaaa大片| 欧美另类videosbestsex视频| 国产成人精品综合| 精品毛片视频| 97视频免费在线观看| 精品视频在线看 | 韩国三级视频网站| 99色播| 91麻豆精品国产综合久久久| 国产a一级| 国产精品自拍在线观看| 精品国产一区二区三区免费 | 久久国产影视免费精品| 麻豆网站在线看| 国产福利免费观看| 国产精品1024在线永久免费| 黄视频网站免费看| 四虎影视库| 午夜家庭影院| 亚洲精品影院| 91麻豆精品国产片在线观看 | 午夜激情视频在线播放| 中文字幕97| 久草免费在线观看| 九九精品影院| 欧美激情一区二区三区在线播放 | 国产成人精品综合| 韩国三级一区| 四虎久久精品国产| 精品视频免费观看| 亚洲 国产精品 日韩| 日韩中文字幕一区二区不卡| 尤物视频网站在线| 日本特黄一级| 久久精品免视看国产成人2021| 亚洲第一色在线| 91麻豆精品国产片在线观看| 日日夜夜婷婷| 国产麻豆精品| 日韩中文字幕一区二区不卡| 尤物视频网站在线观看| 国产精品自拍在线观看| 国产伦精品一区二区三区在线观看| 日韩中文字幕在线播放| 成人a级高清视频在线观看| 国产网站在线| 久久99欧美| 欧美国产日韩久久久| 日韩综合| 亚洲第一色在线| 国产视频一区二区在线播放| 一级毛片视频播放| 夜夜操网| 沈樵在线观看福利| 日韩字幕在线| 国产网站免费| 国产精品1024永久免费视频| 欧美激情影院| 成人免费观看男女羞羞视频| 日本特黄特黄aaaaa大片| 精品国产亚一区二区三区| 国产韩国精品一区二区三区| 可以免费看毛片的网站| 国产网站在线| 高清一级片| 一级毛片视频播放| 91麻豆精品国产自产在线| 九九久久国产精品| 成人av在线播放| 天天做日日爱夜夜爽| 国产综合91天堂亚洲国产| 国产国语在线播放视频| 精品在线观看一区| 日韩在线观看视频免费|