当前位置:首页 » 存储配置 » 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、常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改
三、注意事项:常量字符串都存放在静态存储区,返回的是常量字符串的首地址.

热点内容
聊天软件编程 发布:2024-09-17 03:00:07 浏览:725
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207
cf编译后没有黑框跳出来 发布:2024-09-17 01:46:54 浏览:249
安卓怎么禁用应用读取列表 发布:2024-09-17 01:46:45 浏览:524
win10设密码在哪里 发布:2024-09-17 01:33:32 浏览:662
情逢敌手迅雷下载ftp 发布:2024-09-17 01:32:35 浏览:337
安卓如何让软件按照步骤自动运行 发布:2024-09-17 01:28:27 浏览:197
Z包解压命令 发布:2024-09-17 01:27:51 浏览:221
吉林ipfs存储服务器云主机 发布:2024-09-17 01:27:38 浏览:685