推倒胡麻将碰牌27口诀

千鋒教育-做有情懷、有良心、有品質的IT職業教育機構

編程硬核資料庫,
隨查隨看隨問答!

當前位置:首頁  >  關于學院  >  技術論壇  >  正文

千鋒物聯網教程之Linux可執行文件結構與進程結構

時間:2019-08-22 10:14     來源:千鋒教育 作者:小鋒
分享: 更多

  一、Linux可執行文件結構

  在 Linux 下,程序是一個普通的可執行文件,以下列出一個二進制可執行文件的基本情況:

圖片1

  可以看出,此可執行文件在存儲時(沒有調入到內容)分為代碼區(text)、數據區(data)和未初始化數據區(bss)3 個部分。各段基本內容說明如下:

  代碼區:

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

  代碼區的指令包括操作碼和操作對象(或對象地址引用)。如果是立即數(即是具體的數值),將直接包含在代碼中,如果是局部數據,將在運行時在棧區分配空間,然后再引用該數據的地址,如果是未初始化數據區和數據區,在代碼中同樣將引用該數據的地址。

  全局初始化數據區/靜態數據區(數據段):

  該區包含了在程序中明確被初始化的全局變量、已經初始化的靜態變量(包括全局靜態變量和局部靜態變量)和常量數據(如字符串常量)。

  例如,一個不在任何函數內聲明(全局變量),如下:

  int count = 100;

  使得變量 count 根據其初始值被存儲初始化數據區中。

  在任意位置定義靜態變量方式如下:

  static int num = 200;

  這聲明了一個靜態數據并初始化,如果在任意函數體外聲明,則表示其為一個靜態全局變量,如果在函數體內(局部),則表示其為一個局部靜態變量。另外,如果在一個函數名前加上 static,則表示此函數只能再當前文件中被調用。

  未初始化數據區(又叫 BSS 區):

  存入的是全局未初始化變量和未初始化靜態變量。未初始化數據區的數據在程序開始執行之前被內核初始化為 0 或者空(NULL)。

  例如,一個不在任何函數內聲明的未初始化變量。

  long sum[1000];

  將 sum 存儲到未初始化數據

  二、Linux進程結構

  在 Linux 系統下,如果將某個可執行文件加載到內存運行,則將演變成一個或多個進程(多個進程的原因是進程在運行時可以再創建新的進程,但加載時只有一個進程)。進程是 Linux 事務管理的基本單元,所有的進程均擁有自己獨立的處理環境和系統資源。進程的環境由當前系統狀態及其父進程信息決定和組成的。

  下圖為可執行文件存儲結構和 Linux 進程基本結構(部分)的對照圖。

圖片2

  一個進程是一個運行著的程序段,一個進程主要包括在內存中申請的空間,代碼(加載的程序,包括代碼段,數據段,BSS),堆,棧,以及內核提供的內核進程信息結構體task_struct (位置在 /usr/include/linux/sched.h)、打開的文件、上下文(指進程執行活動全過程的靜態描述)信息以及掛起的信號等。

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

  (2)全局初始化數據區/靜態數據區(Data Segment)。加載的是可執行文件數據段,存儲于數據段(全局初始化,靜態初始化數據)的數據的生存周期為整個程序運行過程。

  (3)未初始化數據區(BSS)。加載的是可執行文件BSS段,位置可以分開亦可以緊靠數據段,存儲于數據段的數據(全局未初始化,靜態未初始化數據)的生存周期為整個程序運行過程。

  (4)棧區(stack)。由編譯器自動分配釋放,存放函數的參數值、返回值、局部變量等。在程序運行過程中實時加載和釋放,因此,局部變量的生存周期為申請到釋放該段棧空間。

  (5)堆區(heap)。用于動態內存分配。堆在內存中位于BSS區和棧區之間。一般由程序員分配和釋放,若程序員不釋放,程序結束時有可能由OS回收。

  系統之所以分成這么多個區域,主要基于以下考慮:

  代碼段和數據段分開,運行時便于分開加載,在哈佛體系結構的處理器將取得更好得流水線效率。

  代碼時依次執行的,是由處理器 PC 指針依次讀入,而且代碼可以被多個程序共享,數據在整個運行過程中有可能多次被調用,如果將代碼和數據混合在一起將造成空間的浪費。

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

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

  三、各存儲類型比較

圖片3

相關文章

  • 北京總部地址:北京市海淀區寶盛北里西區28號中關村智誠科創大廈4層
    北京沙河校區:北京市昌平區沙陽路18號北京科技職業技術學院廣場服務樓
    咨詢電話:400-811-9990
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、Linux云計算+網絡安全培訓、互聯網營銷培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 深圳校區地址:深圳市寶安區寶安大道5010號西部硅谷B座A區6層A605/B座C區1層108
    咨詢電話:0755-23015275/23015546-801/86660670
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、Linux云計算+網絡安全培訓、互聯網營銷培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 上海校區地址:上海市寶山區同濟支路199號智慧七立方3號樓2-4層
    咨詢電話:400-811-9990 021-65233829-609
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、Linux云計算+網絡安全培訓、互聯網營銷培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 廣州校區地址:廣州市天河區元崗路200號慧通產業園B9三層
    咨詢電話:020-87088521
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 鄭州二七區校區地址:鄭州市二七區航海中路60號海為科技園C區10層
    鄭州高新區校區地址:鄭州市高新區金梭路與銀杏路交叉口教育科技產業園南門D座4層
    咨詢電話:0371-55191750/18610973027
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 大連校區地址:遼寧省大連市高新園區愛賢街10號大連設計城A座901
    咨詢電話:400-811-9990
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 武漢金融港校區地址:武漢市東湖高新技術開發區光谷大道77號金融港B18棟3樓
    武漢智慧園校區地址:武漢市東湖高新技術開發區光谷大道61號智慧園21棟2樓
    咨詢電話:027-59313371
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 成都校區地址:成都市武侯區科華北路62號力寶大廈N(北樓)16樓
    咨詢電話:18628039301/18280029283/13028173481/18613201237
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 西安校區地址:西安市雁塔區高新六路52號立人科技C座西區4樓
    咨詢電話:029-85363390
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 杭州旺田校區:浙江省杭州市江干區九堡旺田書畫城A座4層
    杭州龍馳校區:浙江省杭州市下沙經濟技術開發區元成路199號龍馳智慧谷B座7層
    咨詢電話:400-811-9990 0571-86893632/0571-86094032
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 青島校區地址:青島市市北區龍城路31號卓越世紀中心4號樓5層
    咨詢電話:18610973011
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 重慶校區地址:重慶市高新區科園一路2號大西洋國際12-1
    咨詢電話:400-811-9990 023-68883009
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 長沙校區地址:湖南省長沙市岳麓區麓谷企業廣場A2棟三單元306號
    咨詢電話:0731-85513210
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 哈爾濱校區地址:哈爾濱市松北區世澤路689號科技創新城4號樓11樓
    咨詢電話:400-811-9990/0451-87173191
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 南京校區地址:南京市建鄴區應天大街780號弘輝產業園1棟2層
    咨詢電話:400-811-9990
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 太原校區地址:太原市小店區長治路230號能源互聯網大廈6層
    咨詢電話:400-811-9990 16603513433
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 沈陽校區地址:遼寧省沈陽市渾南區世紀路16號東大軟件園B園B1座A201
    咨詢電話:400-811-9990
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 合肥校區地址:合肥市包河區徽州大道396號東方廣場B座12A
    咨詢電話:400-811-9990
    面授課程:HTML5大前端培訓、JavaEE+分布式開發培訓、Python全棧+人工智能培訓、全鏈路UI/UE設計培訓、云計算培訓、全棧軟件測試培訓、大數據+人工智能培訓、智能物聯網+嵌入式培訓、Unity游戲開發培訓、Go語言開發培訓、PHP全棧+服務器集群培訓、網絡安全培訓、互聯網營銷培訓、好程序員
    認證課程:軟考、Adobe認證、PMP認證、紅帽RHCE認證
  • 千鋒教育服務號

    了解千鋒動態
    關注千鋒教育服務號

  • 千鋒教育移動站

    掃一掃快速進入
    千鋒移動端頁面

  • 千鋒互聯服務號

    掃碼匿名提建議
    直達CEO信箱

推倒胡麻将碰牌27口诀 辽宁十一选五走势图基本走势图 快中彩中奖规律 百赢棋牌真人赌博下载 国际股票指数 体彩四川金7乐走势图 悠洋棋牌网页直接玩 3d今日开奖号码 山东11选5一定牛走势图 股票行情实时查询006507 天津十一选五助手