THREADX 深入学习 简介 最近在做THREADX 移植项目,所以在开始学习THREADX 操作系统
想把自己学到的东西总结一下
学习操作系统时,按照领导的意思把操作系统进行模块划分
通过查找资料将操作系统划分为任务调度模块、 任务管理模块、任务间同步和通信模块、内存管理模块、中断管理模块、时钟管理模块
下面将分别对各个模块进行分析和研究
我将深入介绍各个模块的工作原理,通过此文档能对操作系统的工作原理有深入的了解
首先得我的分析是针对 MIPS、ARM、251内核进行分析
我移植的平台是 16 位的251 平台
个人认为移植一个操作系统,首先对操作系统的内核调度原理必须十分清楚,然后对你的移植平台架构、指令集也要十分清楚,比如说下面几个方面: 1、子程序调用时PC 值是怎么被保存得(MPIS,将子程序的返回值存放在了 RA 寄存器中,251 是 PC 自动入栈(ECALL 指令)退出时使用 ERET 等指令,ARM 是在LR 寄存器中要计算相应减去的数值)
2、中断发生时(251PC 自动入栈但顺序和子程序调用压入顺序不一样,中断返回使用 RETI 指令
MIPS,PC 是被存入了 EPC 寄存器中,使用 eret 指令
ARM,LR 中数值的计算,赋值给 PC 即可) 2
任务调度 操作系统的核心模块就是内核调度
首先要弄清楚其调度原理
带着下面几个问题去思考
1、任务入口函数第一次是怎么被执行的
2、任务是怎么被切换的
3、任务是怎么被抢占的
以上几个问题是任务调度的核心
带着这几个问题去看内核源码发现任务调度使用的方法就是任务栈和系统栈,内核利用入栈和出栈完成对任务的调度和切换
而任务被调度起来是依靠timer 驱动来工作
基于此分析可以得出内核调度重点是以下几个方面: 1、明白任务栈的构建方式,即任务创建时初始化任务堆栈时保存的数据
这些数据要根