程序运行为什么需要内存?

1s”_繁华 2019-12-12 08:02:23
计算机程序 = 代码 + 数据 什么是代码? 代码就是函数,函数就是代码,除此无他 什么是数据? 数据我们定义全局变量,局部变量等,只要是被代码处理的东西都称为数据。 代码与数据是唇齿相依的关系,共同构成了计算机程序,没有数据的计算机程序几乎不存在的,即使存在,实现的功能也是微乎其微的,在此可能有疑问,当我printf(),打印helloworld时,并没有定义任何的变量,在printf()函数中,功能实现主要依赖于vsprintf函数,其中定义了很多的变量,就是所谓的数据,我们没有定义变量时,并不代表它不存在于我们程序中。当我们按照一定的规则将数据放入到程序中就构成了计算机程序 计算机程序运行到底是为了什么? 计算机程序运行的实质:代码被相继执行的过程 计算机程序运行是为得到数据,得到计算机所能识别的二进制数据,我们暂且称为目标数据,原始数据是我们待处理的数据,原始数据经过代码处理之后,得到计算所能识别的二进制数据,经过计算机大脑中央处理器cpu思考完毕以后,对二进制数据行重新组合,得到类似于原始数据一样的东西,展示给我们,计算机程序对数据的处理,说到底是一种量的改变,而没有任何质的变化,类似于,数据是水和面粉,代码就是加工面条的机器,水和面粉经过加工面条的机器处理完毕之后,就得到我们的目标产物面条。 计算机程序运行似乎与内存没有任何关系? 其实不然,内存是所有程序的立锥之地,没有内存,你写的程序只能躺在硬盘中,内存是程序的伯乐,程序是内存的千里马,我们知道世有伯乐然后有千里马,没有内存这块伯乐,程序这只千里马只能死在硬盘中。操作系统亦不能幸免于难,无论是linux,windows,mac,android,安卓本是linux内核裁剪移植得到,都是运行于内存之上,手机启动靠的是ROM(norflash)norflash的特性:上电以后不用初始化,直接原地运行预置启动引导程序,做简单的初始化,这时会初始化RAM(内存),ROM中预置启动引导程序,加载BootLoader到内存中,运行,然后由bootLoder启动linux内核....,电脑启动靠BIOS,其中固化启动引导代码,做简单初始化,并且出使化内存存,当初始化完毕之后,挂载系统盘,加载操作系统程序到内存中运行,至此,启动过程完毕。最好的例证就是,8G的内存,可用用内存永远没有8G,原因是,操作系统程序运行于内存之上。被操作系统所征用的内存,无权访问,更不用说释放,操作系统是伟大的管理者,管理所有可用的资源,即使是操作系统也要依附于内存而生存,你觉得计算机程序可能摆脱内存的而独立存在吗?显然不现实,你可能会说某些单片机,但是某些单片机实现的功能与计算机相比是不是有那么一点渺小,没有数据的程序实现的功能是微乎其微的,不需要内存的程序亦如此,内存对于计算机程序来说是立锥之地。
...全文
152 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
GTM00 2019-12-13
  • 打赏
  • 举报
回复
说的比较清楚,初学者可以看看

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧