内存的理解

来源:互联网 发布:电信群发短信软件 编辑:程序博客网 时间:2024/06/03 23:40
1、在S5PV210中运行的linux系统上,运行应用程序时:所有的应用程序的代码和数据都在DRAM,所以这种结构就是冯诺依曼结构;
2、在单片机中,程序代码烧写在Flash中,然后程序在Flash中原地运行,程序所涉及到的数据(全局变量、局部变量)不能放在Flash中,必须放在RAM中,这种结构就是哈佛结构。
3、在gcc中,常量也是存储在内存中,大部分单片机中,常量是存储在Flash中的,也就是代码段。
4、内存对齐不是逻辑的问题,是硬件的问题。对齐访问很配合硬件,所以效率高,非对齐访问和硬件本身不搭配,效率不高。
5、C语言中的数据类型的本质含义是:表示一个内存格子的长度和解析方法。
6、内存的编址单位是字节。
7、数组大小必须定义时给出,而且一旦确定不能更改。
8、C语言是面向过程的,但是C语言写出的Linux系统是面向对象的。
9、分配空间给局部变量a用的意思就是,将这4字节的栈内存的内存地址和我们定义的局部变量名a给关联起来。
10、因此C语言中,定义局部变量时如果未初始化,则其值是随机的,因为栈内存是反复使用的。局部变量在栈中本来是无法初始化的,C语言中的方法是先定义局部变量,再赋值。C语言定义局部变量时不要太多或太大。
11、操作系统两个很重要内容为:内存管理与进程调度。
12、*calloc(size_t nmemb, size_t size) // nemb个单元,每个单元size个字节。如要申请10个int 元素,calloc(10, sizeof(int));
13、数据结构是为了配合一定的算法;为了处理具体问题,算法的实现依赖于相应的数据结构,算法基于数学。
14、Linux内核在字符设备驱动管理时,使用了哈希表(hash table,散列表),所以字符设备驱动的很多特点都和哈希表的特点有关。


原创粉丝点击