第一部分、章节目录
4.1.1.程序运行为什么需要内存1
4.1.2.程序运行为什么需要内存2
4.1.3.位、字节、半字、字的概念和内存位宽
4.1.4.内存编址和寻址、内存对齐
4.1.5.C语言如何操作内存
4.1.6.内存管理之结构体
4.1.7、内存管理之栈
4.1.8、内存管理之堆
4.1.9、复杂数据结构
第二部分、章节介绍
4.1.1.程序运行为什么需要内存1
本节从本质上分析了计算机程序在计算机中是如何运行的,通过冯诺依曼结构和哈佛结构的对比,让大家对代码和数据之分有了清楚的认识。这些认识有助于你对程序运行过程的分析,从而保证将来写出优秀的程序代码。
4.1.2.程序运行为什么需要内存2
本节从本质上分析了计算机程序在计算机中是如何运行的,通过冯诺依曼结构和哈佛结构的对比,让大家对代码和数据之分有了清楚的认识。这些认识有助于你对程序运行过程的分析,从而保证将来写出优秀的程序代码。
4.1.3.位、字节、半字、字的概念和内存位宽
本节从逻辑上阐述内存的编程模型和逻辑认识,并且解释了内存单元的几个单位:位、字节、半字、字。通过本节学习希望大家从逻辑上对内存有一个认知,先建立起来大的框架性概念。
4.1.4.内存编址和寻址、内存对齐
本节重点讲述内存单元格和其地址的对应关系,同时讲了内存对齐的意义和重要性,试图带领大家对内存从逻辑和现实两个角度深入理解,以为后面的深入分析C语言特性打下基础。
4.1.5.C语言如何操作内存
本节主要讲C语言语法中对内存的使用,包括:变量定义、指针、数组等C语言基本语法,讲述这些语法和内存之间的内在联系,试图引导大家从内存的角度来理解这些语法特性。
4.1.6.内存管理之结构体
本节首先讲述数据结构的概念和意义,然后从数组讲起,使用数组的缺陷引出结构体,目的在于让大家明白结构体这种简单数据结构的内在,最后讲了通过结构体内嵌指针来实现面向对象,这是linux内核中常见的一种语法技巧。
4.1.7.内存管理之栈
本节初步讲解栈stack,特点在于从内存角度讲解栈。
4.1.8.内存管理之堆
本节讲解堆这种内存管理方法,并对比堆和栈的区别,综合栈和堆讲解操作系统的内存管理策略。
4.1.9、复杂数据结构
本节首先讲解了链表、二叉树、哈希表等复杂数据结构,然后重点讲了数据结构和算法的意义,以及学习方法和态度。
第三部分、随堂记录
4.1.1.程序运行为什么需要内存
4.1.1.1、计算机程序运行的目的
计算机为什么需要编程?编程已经编了很多年,已经写了很多程序,为什么还需要另外写程序?计算机有这个新的程序到底为了什么?
程序的目的是为了去运行,程序运行是为了得到一定的结果。计算机就是用来计算的,所有的计算机程序其实都是在做计算。计算就是在计算数据。所以计算机程序中很重要的部分就是数据。
计算机程序 = 代码 + 数据 计算机程序运行完得到一个结果,就是说
代码 + 数据 (经过运行后) = 结果
从宏观上来理解,代码就是动作,就是加工数据的动作;数据就是数字,就是被代码所加工的东西。
那么可以得出结论:程序运行的目的不外乎2个:结果、过程
用函数来类比:函数的形参就是待加工的数据(函数内还需要一些临时数据,就是局部变量),函数本体就是代码,函数的返回值就是结果,函数体的执行过程就是过程。
int add(int a, int b)
{
return a + b;
} // 这个函数的执行就是为了得到结果
void add(int a, int b)
{
int c;
c = a + b;
printf("c = %d.\n", c);
} // 这个函数的执行重在过程(重在过程中的printf),返回值不需要
int add(int a, int b)
{
int c;
c = a + b;
printf("c = %d.\n", c);
return c;
} // 这个函数又重结果又重过程
4.1.1.2、计算机程序运行过程
计算机程序的运行过程,其实就是程序中很多个函数相继运行的过程。程序是由很多个函数组成的,程序的本质就是函数,函数的本质是加工数据的动作。
4.1.1.3、冯诺依曼结构和哈佛结构
冯诺依曼结构是:数据和代码放在一起。
哈佛结构是:数据和代码分开存在。
什么是代码:函数
什么是数据:全局变量、局部变量
在S5PV210中运行的linux系统上,运行应用程序时:这时候所有的应用程序的代码和数据都在DRAM,所以这种结构就是冯诺依曼结构;在单片机中,我们把程序代码烧写到Flash(NorFlash)中,然后程序在Flash中原地运行,程序中所涉及到的数据(全局变量、局部变量)不能放在Flash中,必须放在RAM(SRAM)中。这种就叫哈佛结构。
4.1.1.4、动态内存DRAM和静态内存SRAM
DRAM是动态内存,SRAM是静态内存。详细细节自己baidu
4.1.1.5、总结:为什么需要内存呢
内存是用来存储可变数据的,数据在程序中表现为全局变量、局部变量等(在gcc中,其实常量也是存储在内存中的)

最低0.47元/天 解锁文章
3637

被折叠的 条评论
为什么被折叠?



