一、实验目的
1、理解多线程时间片轮转的基本原理;
2、理解同优先级线程间的时间片轮转机制;
3、在 RT-Thread 中熟练使用时间片轮转来完成需求。
二、编码和思考题
- 两个线程公用一个函数代码,观察变量 count 和 parameter 存放地址不同且独立在两个线程中,请在报告中给出合适的说明。
- 利用输入参数 parameter,在 thread_entry 函数中添加代码(if 判断语句), 实现线程 1 和线程 2 运行态分别在 flag1 和 flag2 周期在 0 和 1 两个状态交替转换,并在虚拟逻辑分析仪中添加 flag1 和 flag2 的 bit 观察点。在报告中给出相关的核心代码、仿真截图和说明。
- 添加代码实现创建第 3 个静态任务,优先级与前 2 个任务相同,时间片与任务 2 相同。任务函数依然使用 thread_entry 函数。并在 thread_entry 函数中添加代码, 实现与前两个任务类似的 flag3。在合适位置设置断点,观察任务 3 状态在就绪、运行和挂起之间的转换,在报告中给出代码、仿真截图和分析。
- 通过设置断点和逻辑分析仪观察分析 3 个线程的运行时间和顺序,在报告中给出截图和分析;计算分析 3 个任务的占用 cpu 的时间比例。