本人近期想学ARM Linux,买了开发板后发现真的很有难度,由于大学是自动化专业没有学习过操作系统的相关知识,决定先从UCOS入手,理解一下操作系统基本原理。今天突然在书上看到了操作系统的服务有把用户数据和应用程序装入内存中运行。这句话自己之前从来没有思考过,一直觉得是理所当然正确的,但是又有点想不通,所以在此说一下我的理解,劳烦大家看看我理解的对不对。
首先从8086裸机程序说起,对于8086系统,配置上基本的ROM程序就可以运行,我们一般将程序存放在ROM中,程序运行时,CPU中的控制器把程序读入到指令队列中,执行器从指令队列中取指令,这里即使没有用RAM(也就是内存),程序也能正常执行。对于stm32单片机的裸机程序运行应该也是类似,只不过对于RAM的应用应该是编译器讲局部变量的地址分配在RAM中。所以说来,对于裸机来说,程序的运行并不会装入到内存中去,对么?
程序在内存中运行应该是操作系统的功能,以ucos为例,当任务就绪时,操作系统通过函数指针,将函数及所用数据调入内存中去,然后再运行。是这样吧?另外函数名应该就是函数代码所在位置的首地址,对么?
|