精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

計算機內存的基本知識詳細說明

Wildesbeast ? 來源:今日頭條 ? 作者:小二歲zzzz ? 2020-02-07 13:54 ? 次閱讀

介紹完內存類別,內存的基本結構,分段尋址原理,我們再來看我們程序是怎么使用內存。

內存中的程序

BSS段

通常是指用來存放程序中未初始化的全局變量的一塊內存區域。BSS是英文Block Started by Symbol的簡稱。BSS段屬于靜態內存分配。【存儲全局未初始化的變量】

數據段

數據段通常是指用來存放程序中 已初始化 的 全局變量 的一塊內存區域。數據段屬于靜態內存分配。 【存儲全局已初始化的變量】

代碼段

代碼段通常是指用來存放 程序執行代碼 的一塊內存區域。這部分區域的大小在程序運行前就已經確定,并且內存區域通常屬于 只讀 , 某些架構也允許代碼段為可寫,即允許修改程序。在代碼段中,也有可能包含一些 只讀的常數變量 ,例如字符串常量等。程序段為程序代碼在內存中的映射.一個程序可以在內存中多有個副本.【存儲的是二進制后的程序代碼】

堆是用于存放進程運行中被動態分配的內存段,它的大小并不固定,可動態擴張或縮減。當進程調用malloc/free等函數分配內存時,新分配的內存就被動態添加到堆上(堆被擴張)/釋放的內存從堆中被剔除(堆被縮減)【存儲初始化的局部變量】

棧又稱堆棧, 存放程序的 局部變量 (但不包括static聲明的變量, static 意味著 在數據段中 存放變量)。除此以外,在函數被調用時,棧用來傳遞參數和返回值。由于棧的先進先出特點,所以棧特別方便用來保存/恢復調用現場。儲動態內存分配,需要程序員手工分配,手工釋放【儲存的動態未初始化變量】

cat /proc/maps 進程內存映射

C語言文件編譯成a.out文件,并執行該文件#./a.out,查看執行該文件對應的進程#ps au,可以看到2200就2200就是我們需要的pidut文件,并執行該文件#./a.out查看執行該文件對應的進程#ps au,可以看到2200就2200就是我們需要的pid,#cat /proc/2200/maps 。

#a.out #include #include int q[200]; int main(void) { int i, n, *p; p = (int *) malloc(sizeof(int)); scanf("%d", &n); for (i=0; i<200; i++) q[i]=i; printf("%x %x %x %x %x ", main, q, p, &i, scanf); return 0; }

進程使用內存狀況

參數解釋

#cat /proc/2200/maps

address: 0085d000-00872000 虛擬內存區域的起始和終止地址文件所占的地址空間

perms:rw-p 權限:r=read, w=write, x=execute, s=shared, p=private(copy on write)

offset: 00000000 虛擬內存區域在被映射文件中的偏移量

dev: 03:08 文件的主設備號和次設備號

inode: 設備的節點號,0表示沒有節點與內存相對應

name: /lib/ld-2.2.12.so 被映射文件的文件名

#cat /proc/2200/statm

size:任務虛擬地址空間大小

ident:正在使用的物理內存大小

Shared:共享頁數

Trs:程序所擁有的可執行虛擬內存大小

Lrs:被映像倒任務的虛擬內存空間的庫的大小

Drs:程序數據段和用戶態的棧的大小

dt:臟頁數量

UNIX/LINUX系統進程情況

c語言在UNIX/LINUX系統內存使用圖示

左邊的是UNIX/LINUX系統的執行文件,右邊是對應進程邏輯地址空間的劃分情況。

堆棧區(stack),堆棧是由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值等。其操作方式類似于數據結構中的棧。棧的申請是由系統自動分配,如在函數內部申請一個局部變量 int h,同時判別所申請空間是否小于棧的剩余空間,如若小于的話,在堆棧中為其開辟空間,為程序提供內存,否則將報異常提示棧溢出。

堆(heap),堆一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似于鏈表。堆的申請是由程序員自己來操作的,在C中使用malloc函數,而C++中使用new運算符,但是堆的申請過程比較復雜:當系統收到程序的申請時,會遍歷記錄空閑內存地址的鏈表,以求尋找第一個空間大于所申請空間的堆結點,然后將該結點從空閑結點鏈表中刪除,并將該結點的空間分配給程序,此處應該注意的是有些情況下,新申請的內存塊的首地址記錄本次分配的內存塊大小,這樣在delete尤其是delete[]時就能正確的釋放內存空間。

全局數據區(靜態區) (static),全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域, 未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域。 另外文字常量區,常量字符串就是放在這里,程序結束后有系統釋放。

程序代碼區,放著函數體的二進制代碼。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11123

    瀏覽量

    207920
  • 計算機
    +關注

    關注

    19

    文章

    7174

    瀏覽量

    87160
  • 內存
    +關注

    關注

    8

    文章

    2903

    瀏覽量

    73546
收藏 人收藏

    評論

    相關推薦

    了解計算機內部結構

    本帖最后由 eehome 于 2013-1-5 10:08 編輯 很好的一本學習計算機內知識的書
    發表于 07-27 11:11

    計算機控制基本知識

    `計算機控制基本知識.ppt[hide][/hide]`
    發表于 08-05 20:03

    求推薦關于計算機內存知識的入門書籍

    年后需要接觸到有關于計算機內存條方面的測試工作,有沒有哪位大神能夠推薦下有關于計算機內存條的書籍,是在不行文章鏈接也是可以的。多多益善,謝謝大家。
    發表于 01-23 14:37

    計算機內部總線,計算機內部總線是什么意思

    計算機內部總線,計算機內部總線是什么意思    由于計算機內部的主要工作過程是信息傳送和加工的過程,因此在機器內部各部件之間的數據傳送非常頻繁。為了
    發表于 04-13 10:31 ?7306次閱讀

    計算機基礎知識介紹

    計算機基礎知識計算機基礎知識計算機基礎知識
    發表于 12-03 16:13 ?0次下載

    計算機通信網基本知識

    一些關于計算機通信網的基本知識,應付一下考試的
    發表于 01-05 17:21 ?4次下載

    計算機控制基本知識

    計算機控制基本知識對初學者很有用的ppt教學
    發表于 12-09 15:30 ?0次下載

    計算機網絡的基本知識詳細資料總結

    本文檔的主要內容詳細介紹的是計算機網絡的基本知識詳細資料總結包括了:1 概述2 網絡分類3 數據傳輸4 網絡拓撲結構5 網絡體系結構6 網絡互連7 網絡操作系統8 Internet基礎
    發表于 09-27 17:00 ?14次下載
    <b class='flag-5'>計算機</b>網絡的<b class='flag-5'>基本知識</b><b class='flag-5'>詳細</b>資料總結

    微機原理與接口技術教程之計算機基本知識詳細資料概述

    本文檔的主要內容詳細介紹的是微機原理與接口教程之計算機基本知識詳細資料概述主要內容包括了:計算機的發展概況和微型
    發表于 01-09 08:00 ?16次下載
    微機原理與接口技術教程之<b class='flag-5'>計算機</b><b class='flag-5'>基本知識</b>的<b class='flag-5'>詳細</b>資料概述

    微型計算機的基礎知識詳細資料說明

    本文檔的主要內容詳細介紹的是微型計算機的基礎知識詳細資料說明主要內容有:1.微型計算機的組成及工
    發表于 05-09 08:00 ?0次下載
    微型<b class='flag-5'>計算機</b>的基礎<b class='flag-5'>知識</b><b class='flag-5'>詳細</b>資料<b class='flag-5'>說明</b>

    如何去優化計算機內存

    大多數計算和存儲部署如今面臨的情況是,計算機內存空間都受到了上限的限制。
    發表于 11-28 17:48 ?1123次閱讀
    如何去優化<b class='flag-5'>計算機內存</b>

    光纖的基本知識詳細說明

    計算機網絡已經進入千兆時代,把我們的電腦和Internet連接起來的網線也在逐步變成光纖。這篇文章帶大家普及一下光纖的基本知識
    的頭像 發表于 02-07 15:39 ?9535次閱讀

    計算機系統的層次結構詳細說明

    通常由用戶用高級語言編寫程序,然后講它和數據一起送入計算機內,再由計算機將其翻譯成機器能識別的機器語言程序,機器自動運行該機器語言程序,并將其計算結果輸出。
    的頭像 發表于 02-22 16:44 ?6795次閱讀

    計算機的海明校驗及其實現詳細說明

    本文檔的主要內容詳細介紹的是計算機的海明校驗及其實現詳細說明
    發表于 04-30 08:00 ?3次下載
    <b class='flag-5'>計算機</b>的海明校驗及其實現<b class='flag-5'>詳細說明</b>

    一圖詳細講解計算機預備知識

    一圖詳細講解計算機預備知識
    發表于 04-19 09:14 ?2次下載