當前位置:首頁 » 存儲配置 » linux靜態存儲區

linux靜態存儲區

發布時間: 2022-06-22 16:06:48

linux系統中 初始化的全局變數和未初始化過的全局變數保存在哪

一個由C/C++編譯的程序佔用的內存分為以下幾個部分
1、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變數的值等。其
操作方式類似於數據結構中的棧。
2、堆區(heap) — 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回
收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表,呵呵。
3、全局區(靜態區)(static)—,全局變數和靜態變數的存儲是放在一塊的,初始化的
全局變數和靜態變數在一塊區域, 未初始化的全局變數和未初始化的靜態變數在相鄰的另
一塊區域。 - 程序結束後由系統釋放。
4、文字常量區 —常量字元串就是放在這里的。 程序結束後由系統釋放
5、程序代碼區—存放函數體的二進制代碼。

㈡ Linux I/O內存靜態映射

在將Linux移植到目標電路板的過程中,有得會建立外設IO內存物理地址到虛擬地址的靜態映射,這個映射通過在與電路板對應的map_desc結構體數組中添加新的成員來完成。iotable_init()是最終建立頁映射的函數,它通過ACHINE_START、MACHINE_END宏賦值給電路板的map_io())函數。將Linux操作系統移植到特定平台上,MACHINE_START(或者DT_MACHINE_START)、MACHINE_END宏之間的定義針對特定電路板而設計,其中的map_io ()成員函數完成IO內存的靜態映射。在一個已經移植好操作系統的內核中,驅動工程師可以對非常規內存區域的IO內存(外設控制器寄存器、MCU內部集成的外設控制器寄存器等)依照電路板的資源使用情況添加到map_desc數組中,但是目前該方法已經不值得推薦。
Cache和DMA本身似乎是兩個毫不相關的事物。Cache被用作CPU針對內存的緩存,利用程序的空間局部性和時間局部性原理,達到較高的命中率,從而避免CPU每次都必須要與相對慢速的內存交互數據來提高數據的訪問速率。DMA可以作為內存與外設之間傳輸數據的方式,在這種傳輸方式之下,數據並不需要經過CPU中轉。
假設DMA針對內存的目的地址與Cache緩存的對象沒有重疊區域,DMA和Cache之間將相安無事。但是,如果DMA的目的地址與Cache所緩存的內存地址訪問有重疊,經過DMA操作,與Cache緩存對應的內存中的數據已經被修改,而CPU本身並不知道,它仍然認為Cache中的數據就是內存中的數據,那在以後訪問Cache映射的內存時,它仍然使用陳舊的Cache數據。這樣就會發生Cache與內存之間數據「不一致性」的錯誤。

㈢ linux操作系統的主要特點

1、良好的用戶界面:Linux向用戶提供了兩種界面:圖形化界面和命令行界面。Linux的傳統用戶界面是基於文本命令行裡面,shell既可以存儲在文件愛你上離線使用,具有很強的程序設計能力,用戶可以方便地用它擴充系統功能。
2、可移植性:Linux支持許多為所有Unix提出的標准,Linux符合Unix的標准,可將Linux上完成的程序移植到sun這類的Unix機器上運行。
3、全面支持網路協議:Linux支持的網路協議包含FTP、Telnet、NFS等。同時支持Apple talk伺服器、Netware客戶機及伺服器、Lan Manager客戶及伺服器。
4、支持多用戶、多任務:支持多個用戶同時使用系統的內存、外設、處理器等系統資源。同時保護機制使得每個應用程序和用戶互不幹擾,一個任務遇到問題,另外幾個任務依然可以正常運行。
5、免費、開放:Linux操作系統是免費的,獲得 Linux非常方便,而且節省費用,用戶可以進行代碼改進。
6、安全性高:包括讀、寫許可權控制、帶保護的子系統、審計跟蹤、核心授權等,都提供了非常好的安全保障。

㈣ linux系統中定義過的變數和沒有定義過的變數的區別

一個由C/C++編譯的程序佔用的內存分為以下幾個部分
1、棧區(stack)— 由編譯器自動分配釋放 ,存放函數的參數值,局部變數的值等。其
操作方式類似於數據結構中的棧。
2、堆區(heap) — 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回
收 。注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表,呵呵。
3、全局區(靜態區)(static)—,全局變數和靜態變數的存儲是放在一塊的,初始化的
全局變數和靜態變數在一塊區域, 未初始化的全局變數和未初始化的靜態變數在相鄰的另
一塊區域。 - 程序結束後由系統釋放。
4、文字常量區 —常量字元串就是放在這里的。 程序結束後由系統釋放
5、程序代碼區—存放函數體的二進制代碼。

㈤ 內存的數據存儲機制

1.寄存器(register)。這是最快的存儲區,寄存器的數量極其有限,所以寄存器由編譯器根據需求進行分配,你不能直接控制。

2.堆棧(Stack)。位於通用RAM(random-access memory,隨機訪問存儲器)中,通過它的「堆棧指針」可以從處理器那裡獲得。堆棧指針若向

下移動,則分配新的內存空間,若向上移動,則釋放內存。創建程序時,java編譯器必須知道存儲在堆棧內所有數據的大小和生命周期,

因為它必須生成相應的代碼,以便上下移動堆棧指針。由於約束性質,所以一般存儲的是Java的對象引用和變數。

優點:快速分配的存儲,僅次於寄存器。
缺點:限制了程序的靈活性。

3.堆(heap)。通用性內存池,用於存放所有的Java對象。堆的好處是:編輯器不需要知道堆里要分配多少存儲區域,也不必知道存儲的數

據在堆里的存活多長時間。在Java中,創建一個對象,只需要用new,當執行這行代碼,會自動在堆里進行存儲分配。

優點:在堆里分配存儲有很大的靈活性。
缺點是:用堆進行存儲分配比用堆棧進行存儲需要更多的時間。

4.靜態存儲(static storage)。是指在固定位置(也在RAM里)。靜態存儲里存放程序運行時一直存在的數據。通常是Java的靜態變數,但

Java對象本身從來不會放在靜態存儲空間里。

5.常量存儲(constant storage)。通常是存放在ROM(read-only memory,只讀存儲器)中,因為常量本身他們永遠不會被改變。

㈥ 對於問題小孩這門課所學所識有什麼啟發

我做了這么多年幼師,一直在想幼兒園的小孩是否全部都是天真快樂呢?是否全部都能友好相處呢?這些問題一直縈繞在我的心中,直到我讀了《幼兒園里的「問題小孩」》,我這個疑惑的雲朵才被撥開。

對於《幼兒園里的「問題小孩」》這一本書的總體評價,我認為這是一本基於作者理論學養於實踐經驗的原創之作,站在一個幼師的角度,我認為要以身作則,去在現實中發現書中存在的「問題」小孩,學會更多的專業知識去輔導孩子的心理,引導他們積極向上,懂得生活的美好。

在書中,論述圍繞幼兒園課程的課程價值,分析了幼兒園教學內容有別於其他階段的特質,從課程與教學的視角,澄清了長期以來幼兒園教育設計中諸多群體性、無意識的錯誤做法。語言淺白通俗又不失學理思考,雖脫胎於日常的授課講義,又從讀者的閱讀心理出發設計了靈動的閱讀結構,為職前、職後的幼兒園教師提供了有價值的學習與指導。

書中描述的一個很典型的現象就是幼兒的「隱蔽性」說謊,是指幼兒在特定環境下因為某種原因而隱蔽地說謊,這對剛處在萌芽階段的幼兒有很不利的影響。由於幼兒「心靈的純潔」,他們在真實的偽裝下說謊時,往往會顯得很不自然,對他們心靈的摧殘也是顯而易見的,因此,教導幼兒學會真誠,多和幼兒熟悉,多聽他們的心事,也是我讀完這本書的一個很大的感悟。

書中描述的幼兒園中存在的問題小孩主要有下面這八個問題:磨蹭、倔強、叛逆、暴力、吹牛、撒謊、孤僻,這些都是一個人成長中起阻礙的消極面,書中主要描寫了從行為規范、心理健康、培養個性、解決叛逆等問題入手,以幼兒園和家長的雙角度去更好地描述這本書的主題思想,帶給普世大眾對幼兒園教育中的解決。其中,書中展現的「榜樣模範」也是讓我記憶尤深的,一個好的集體需要好的帶領人,在幼兒中建立榜樣模範,可以讓幼兒培養良好的習慣,汲取優秀的品質從而培養真誠善良的性格,良好的學習升高習慣,有益於幼兒集體的發展。

總之,幼兒園里的孩子作為稚嫩的花朵,必然需要社會上人們的關懷,作為幼兒園老師和家長,我們要學會用愛去鼓勵孩子,去呵護每一個嬌嫩的花朵,使他們尋回自信和堅強,讓他們能以更好的姿態去迎接生活中的困難,去呵護每一個幼兒園孩子,培養他們優良的品格,成為國家未來的中流砥柱.

㈦ Linux裡面什麼是靜態變數

靜態變數,就是在定義的時候,用static 修飾的變數。程序執行前系統就為之靜態分配(即在運行時中不再改變分配情況)存儲空間。
請採納,謝謝

c語言堆和棧,靜態區的理解

樓主問這樣的問題,需要澄清平台。比如windows下的與linux下的編譯器及很多嵌入式C編譯器不同。為什麼考慮嵌入式C?原因是目前C語言的很大市場在嵌入式領域。windows下,除了某些特殊需要,java,C++,C#已經優勢盡顯了。

另外,討論了半天,q在你代碼的那裡?我怎麼沒找到??我眼睛都揉紅了也沒找見呀
只好表述一下原理
VC下:
1. 函數形參和函數內部非靜態局部變數都在棧上分配(所以a,b,p本身都在棧上。但p指向的內容在堆上。q在哪裡,我找不到)。
棧的分配的方法是:sp-=字數。
sp是堆棧指針。」字數「是說:你分配一個位元組的局部變數,編譯器也給你一個字的長度的空間。原因是,堆棧是具有字長度的。16位、32位機器下,字長度為16,64位機器下,字長度為32.
而且,windows下,棧是從高地址向低地址增長的。為什麼?棧與堆共享空間,並且,堆從低向高長,棧從高向低長,降低溢出風險。

靜態區名字本身就說明了他的特性:靜止的,不隨程序的運行變化。也就是相對的說,堆和棧都是動態的。靜態區是編譯器在編譯時指定長度、鏈接時定位地址、windows載入器載入時分配內存。
這里的動與靜是編譯器和鏈接器的說法,是語言層面。不適用於系統層面。Windows隨時可能將任何用戶程序程序的全部資源「請出」內存,也可重新載入,此時,什麼靜都是浮雲。

還有返回值。樓主的main不返回值編譯器會警告你的。返回值存在什麼地方?
答案是寄存器里AX(EAX,DX,EDX等)。

嵌入式系統里可能這些都不適用。比如,某些嵌入式處理器的形參直接使用寄存器(R0~R15,或A、B等)

㈨ 字元串常量一般放在內存的靜態區嗎

這個不好說,不能明確說它放在什麼地方,給你舉個例子吧,用指針來舉個例子
定義一個字元串常量:char* p = "what are doing?"
那麼在這句話中,p和 "what are doing?"這兩個是不在一個存儲區上的,不過我認為字元串常量應該是存儲在正文段和數據段之間,也有人說是放在靜態存儲區上,也有人說是放在rodata 只讀數據段上,你可以自己從gdb上看一下。這里我給你一點資料你理解一下,我們一塊學習啊

這里是幾個存放數據的內存段:
1)正文段——CPU執行的機器指令部分;一個程序只有一個副本;只讀,防止程序由於意外事故而修改自身指令;
2)初始化數據段(數據段)——在程序中所有賦了初值的全局變數,存放在這里。
3)非初始化數據段(bss段)——在程序中沒有初始化的全局變數;內核將此段初始化為0。
4)棧——增長方向:自頂向下增長;自動變數以及每次函數調用時所需要保存的信息(返回地址;環境信息)。
5)堆——動態存儲。

這里還有一段有個高人寫的一段小程序,很詳細的

//main.cpp
int a = 0; 全局初始化區
char *p1; 全局未初始化區
main()
{
int b; 棧
char s[] = "abc"; 棧
char *p2; 棧
char *p3 = "123456"; 123456\0在常量區,p3在棧上。
static int c =0; 全局(靜態)初始化區
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
分配得來得10和20位元組的區域就在堆區。
strcpy(p1, "123456"); 123456\0放在常量區,編譯器可能會將它與p3所指向的"123456"
優化成一個地方。
}

㈩ 靜態存儲區和常量存儲區有什麼區別

一、靜態存儲區和常量存儲區的區別:
1、靜態存儲區,全局變數和靜態變數被分配到同一塊內存中;常量存儲區,這是一塊比較特殊的存儲區,他們裡面存放的是常量,是不允許修改的。
2、靜態存儲是main函數運行前分配內存並初始化;常量存儲是固化在執行文件上的數據。棧的方向和平台有關,一般來說,windows由高地址向低地址增長,linux相反,但linux演變出來的操作系統不排除有特殊情況。
3、常量存儲區裡面的數據是放在代碼段里的,不佔內存。靜態存儲區是在內存空間中的,在其所屬的類(或文件)中是全局的
二、靜態存儲區和常量存儲區介紹
1、靜態存儲區:所有的靜態對象,全局對象都於靜態存儲區分配,全局變數和靜態變數被分配到同一塊內存中,在以前的 C 語言中,全局變數又分為初始化的和未初始化的(初始化的全局變數和靜態變數在一塊區域,未初始化的全局變數與靜態變數在相鄰的另一塊區域,同時未被初始化的對象存儲區可以通過 void* 來訪問和操縱,程序結束後由系統自行釋放),在 C++ 裡面沒有這個區分了,他們共同佔用同一塊內存區。
2、常量存儲區:這是一塊比較特殊的存儲區,他們裡面存放的是常量,不允許修改
三、注意事項:常量字元串都存放在靜態存儲區,返回的是常量字元串的首地址.

熱點內容
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:170
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:100
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:208
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554
雲伺服器的優點與缺點 發布:2024-09-08 06:30:34 瀏覽:734