IT培训机构|91免费精品视频|专注编程培训|91免费精品|软件开发培训_91免费国产视频_华清远见教育


Linux下進程的內存結構

分享到:
           

    Linux操作系統采用虛擬內存管理技術,使得每個進程都有各自互不干涉的進程地址空間。該地址空間是大小為4GB的線性虛擬空間,用戶所看到和接觸到的都是該虛擬地址,無法看到實際的物理內存地址。利用這種虛擬地址不但能起到保護操作系統的效果(用戶不能直接訪問物理內存),而且更重要的是,用戶程序可以使用比實際物理內存更大的地址空間。

    4GB的進程地址空間會被分成兩個部分:用戶空間與內核空間。用戶地址空間是從0到3GB(0xC0000000),內核地址空間占據3GB到4GB。用戶進程在通常情況下只能訪問用戶空間的虛擬地址,不能訪問內核空間的虛擬地址。只有用戶進程使用系統調用(代表用戶進程在內核態執行)時可以訪問到內核空間。每當進程切換時,用戶空間就會跟著變化;而內核空間由內核負責映射,它并不會跟著進程改變,是固定的。內核空間地址有自己對應的頁表,用戶進程各自有不同的頁表。每個進程的用戶空間都是完全獨立、互不相干的。進程的虛擬內存地址空間如圖3.3所示,其中用戶空間包括以下幾個功能區域。

    ● 只讀段:包含程序代碼(.init和.text)和只讀數據(.rodata)。
    ● 數據段:存放的是全局變量和靜態變量。其中可讀可寫數據段(.data)存放已初始化的全局變量和靜態變量,BSS數據段(.bss)存放未初始化的全局變量和靜態變量。
    ● 堆:由系統自動分配釋放,存放函數的參數值、局部變量的值、返回地址等。
    ● 堆棧:存放動態分配的數據,一般由程序員動態分配和釋放。若程序員不釋放,程序結束時可能由操作系統回收。
    ● 共享庫的內存映射區域:這是Linux動態鏈接器和其他共享庫代碼的映射區域。


圖3.3 進程的虛擬內存地址空間

    由于在Linux系統中每一個進程都會有/proc文件系統下與之對應的一個目錄(如將init進程的相關信息在/proc/1目錄下的文件中描述),因此通過proc文件系統可以查看某個進程的地址空間的映射情況。例如,運行一個應用程序(示例中的可運行程序是在/home/david/project/目錄下的test文件),如果它的進程號為13703,則輸入“cat /proc/13703/maps”命令,可以查看該進程的內存映射情況,其結果如下:

    $ cat /proc/13703/maps
    /* 只讀段:代碼段、只讀數據段 */
    08048000-08049000 r-xp 00000000 08:01 876817 /home/david/project/test
    08049000-0804a000 r--p 00000000 08:01 876817 /home/david/project/test
    /* 可讀寫數據段 */
    0804a000-0804b000 rw-p 00001000 08:01 876817 /home/david/project/test
    0804b000-0804c000 rw-p 0804b000 00:00 0
    08502000-08523000 rw-p 08502000 00:00 0 [heap] /* 堆 */
    b7dec000-b7ded000 rw-p b7dec000 00:00 0
    /* 動態共享庫 */
    b7ded000-b7f45000 r-xp 00000000 08:01 541691
    /lib/tls/i686/cmov/libc-2.8.90.so
    b7f45000-b7f47000 r--p 00158000 08:01 541691
    /lib/tls/i686/cmov/libc-2.8.90.so
    b7f47000-b7f48000 rw-p 0015a000 08:01 541691
    /lib/tls/i686/cmov/libc-2.8.90.so
    b7f48000-b7f4b000 rw-p b7f48000 00:00 0
    b7f57000-b7f5a000 rw-p b7f57000 00:00 0
    /* 動態鏈接器 */
    b7f5a000-b7f74000 r-xp 00000000 08:01 524307 /lib/ld-2.8.90.so
    b7f74000-b7f75000 r-xp b7f74000 00:00 0 [vdso]
    b7f75000-b7f76000 r--p 0001a000 08:01 524307 /lib/ld-2.8.90.so
    b7f76000-b7f77000 rw-p 0001b000 08:01 524307 /lib/ld-2.8.90.so
    bff61000-bff76000 rw-p bffeb000 00:00 0 [stack] /* 堆棧 */

    本文選自華清遠見嵌入式培訓教材《從實踐中學嵌入式Linux應用程序開發》

   熱點鏈接:

   1、Linux下進程的創建、執行和終止
   2、Linux下的進程結構
   3、Linux下多任務系統之進程的基本概念
   4、Linux下多任務系統之任務介紹
   5、實驗:Linux下多路復用式串口操作

更多新聞>> 

主站蜘蛛池模板: 免费照片视频制作软件_照片做成视频的软件_制作照片视频的软件 - 万彩影像大师官网 | 开关柜无线测温_电缆接头测温系统_六氟化硫sf6气体泄漏报警监测_卫星同步时钟-山东正瑞电子有限公司 | 钠长石-硅铁-硅钙-孕育剂-球化剂-安阳李氏实业有限公司 | 全自动圆木多片锯_立式圆木多片锯价格_大型圆木多片锯厂家-邢台友创机械制造有限公司 | 上海慧泰仪器制造有限公司| 康复支具-医用颈托-辅助固定矫形器-骨折固定带生产厂家-安平县康信医疗器械有限公司 | 商用车之家——观点有态度 热点不缺席 靠谱的商用车门户网站 | 远程供电系统-电源发生器-隔离电源转换器-深圳市安博特电源设备有限公司 | 同步分流马达_液压泵维修_派克多路阀-济南富诚液压设备有限公司 通用变频器|国产变频器|深圳变频器厂家-深圳市英捷思技术有限公司 | 上海专升本-上海统招专升本网 | 医用手摇病床,医用电动病床,康养手摇病床,康养电动病床-河北丁丁医疗器械有限公司 | 转轴测试机-按键寿命测试机-连接器插拔力试验机-深圳市丹荣检测 转盘萃取塔,DMF回收塔生产厂家-无锡弘鼎华化工设备有限公司 | 碳化硅微粉_超细碳化硅微粉_潍坊凯华碳化硅微粉有限公司 | 洒水车_水车_洒水车价格_喷水车_绿化喷洒车_绿化洒水车- 程力专用汽车股份有限公司 | 雷达液位计_耐磨热电偶_蒸汽_柴油,汽油_天然气流量计_巴歇尔槽_一体化温度变送器-江苏翔腾仪表有限公司 | 首页 - 郑州市宏美彩印包装有限公司 | 重大事件回顾:三亚哪里可以打炮?2025年最全实战攻略带你玩转真枪射击 | 吉林省新思路教育发展有限公司| 浙江中凯科技股份有限公司-KB0控制与保护开关_KBO | 真石漆生产厂家|外墙水包水|水包砂-新佳官网| 温湿度记录仪_温度监控_冷链监控云平台_USB/PDF温度记录仪-深圳市鸿睿物联科技发展有限公司 | 清扫器-聚氨酯清扫器-合金清扫器-四连杆自动纠偏-机械纠偏-锥辊纠偏-衡水涌泉机械科技有限公司 | 饮料瓶-白酒瓶-绿色玻璃瓶-山东玻璃瓶厂家-枣庄市金泰玻璃有限公司 | 小程序开发,网站建设,APP开发,商城系统开发,社区团购系统开发,区块链溯源,互联网资质办理-软多信息技术有限公司_河南软多信息技术有限公司 | 智慧环保大数据云平台_车载走航式扬尘/恶臭/噪声污染源在线监测管控信息系统平台_环保土壤/环境监测系统云平台-奥斯恩智能科技 | 泡沫混凝土垫层填充厂家,发泡混凝土垫层填充,轻质混凝土垫层填充厂家,深圳市鸿奥建材发展有限公司 | 珠海市甜菊科技发展有限公司| 玉米脱皮制糁机-玉米深加工机械价格-玉米糁加工机器设备-玉米渣加工成套设备-河南粮院 | 外墙涂料_真石漆_真石漆批发_河南宝润达真石漆厂家 | 混凝土布料机,隧道布料机,衬砌台车布料装置 - 河北聚力智能装备有限公司 | 首页|YULI玉立专业厨房电器官网|集成灶十大品牌 油烟机 燃气灶 | 无塔供水_无塔供水设备_全自动_石家庄工泉水处理设备有限公司_家用无塔供水器 | 上海眼科医院_上海希玛瑞视眼科医院【上海医保定点单位】 | 上海汽车音响_上海汽车隔音降噪_上海汽车音响改装店_上海音豪 | 潍坊博发动力设备有限公司| 天下机械|机床商讯-机械网|机械技术|机械信息|机床资讯|机床设备|机床商讯杂志 | 硝酸铵钙|山西硝酸钙|硝酸钾|太原硝酸钙镁|硝酸钾钙|亚硝酸钠-山西玉彤化工有限公司 | 太原仪诚实验室设备有限公司 | 潍坊晨硕机械设备有限公司| 酒类灌装机厂家_贴标机_灌装生产线-青州市锦德包装机械有限公司 酒店设计_建筑设计_室内装修装饰-北极点酒店设计公司 | 无锡新源润不锈钢官网|304不锈钢平板|316L冷轧宽幅|2米卷分条开平 |