色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区


Linux下進程的內(nèi)存結(jié)構(gòu)

分享到:
           

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

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

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


圖3.3 進程的虛擬內(nèi)存地址空間

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

    $ cat /proc/13703/maps
    /* 只讀段:代碼段、只讀數(shù)據(jù)段 */
    08048000-08049000 r-xp 00000000 08:01 876817 /home/david/project/test
    08049000-0804a000 r--p 00000000 08:01 876817 /home/david/project/test
    /* 可讀寫數(shù)據(jù)段 */
    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
    /* 動態(tài)共享庫 */
    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
    /* 動態(tài)鏈接器 */
    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] /* 堆棧 */

    本文選自華清遠見嵌入式培訓(xùn)教材《從實踐中學(xué)嵌入式Linux應(yīng)用程序開發(fā)》

   熱點鏈接:

   1、Linux下進程的創(chuàng)建、執(zhí)行和終止
   2、Linux下的進程結(jié)構(gòu)
   3、Linux下多任務(wù)系統(tǒng)之進程的基本概念
   4、Linux下多任務(wù)系統(tǒng)之任務(wù)介紹
   5、實驗:Linux下多路復(fù)用式串口操作

更多新聞>> 

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 亚洲自拍另类欧美丝袜| 亚洲激情在线观看| 国产成人精品999| 欧美亚洲在线观看| 国产精品久久久久久久久久三级| 日产精品99久久久久久| 国产精品福利在线| 国产精品爱啪在线线免费观看| 欧美不卡视频一区发布| 亚洲精品国产精品国自产在线 | 色悠悠久久88| 精品国产网站地址| 欧美大片在线免费观看| 91极品视频在线| 91精品国产自产在线观看永久| 91精品久久久久久久久青青| 日韩美女在线观看| 91精品国产高清自在线| 欧美成人午夜激情| 91国产精品电影| 成人美女免费网站视频| 亚洲一区二区精品| 久久久久国产一区二区三区| 国产欧美va欧美va香蕉在| 亚洲免费成人av电影| 狠狠躁夜夜躁人人爽天天天天97| 日韩美女av在线免费观看| 亚洲sss综合天堂久久| 欧美成人激情视频| 国产精品第2页| 最近更新的2019中文字幕| 午夜精品www| 亚洲精品之草原avav久久| 欧美激情国产高清| 亚洲在线观看视频网站| 欧美日韩国产专区| 91免费看国产| 欧美国产日本高清在线| 亚洲国产精品成人一区二区| 欧美人交a欧美精品| 亚洲成av人乱码色午夜|