RTOS多线程抢占工作原理.docx
《RTOS多线程抢占工作原理.docx》由会员分享,可在线阅读,更多相关《RTOS多线程抢占工作原理.docx(10页珍藏版)》请在第壹文秘上搜索。
1、操作系统对于初学者来说是一个很高深的内容,里面很多原理摸不清姑,导致还没入门就放弃了。本文就从底层开始,讲述抢占式操作系统(大多数RTOS)的抢占原理.包含:线程基础原理线程之间抢占中断抢占线程中断抢占中断运行多个线程1 .单核“单线程”严格来说,单核处理器1次只能执行一条指令,也就是说只能“单线程”.当然,多核处理就不一样)为了在单核处理器上运行多个线程,我们实际上需要定期在线程之间迸行快速切换,以便用户感觉多个线程在并行运行.比如处理器执行两个线程,处理器实际在两个线程之间来回切换,如下图:Userthreads2 .处理器在线程之间切换,它是如何做到的?我们说的单核处理搭足“电线程”的,
2、它有一组寄存器,我们就叫这组寄存器属于一个“线程。例如,计算两个数字的总和时:假设我们有两个整数:a和bintc=a+b;实际发生的情况如下所示(当然,它取决于的MCU类型,但总体思路是相同):#H1.PS反汇编:1.VO1-32744(GP)aa”的值从KAM加载到寄存器VO1.WVI,-32740(GP)#值b从RAM加载到寄存SSYIADDUVO1VI,VO#a、b值相加,结果保存到寄存器VO中SUVO1-32496(GP)寄存器VO的值存储在RAM中(变IftC所在的位置)你会发现上面执行了4个动作,但是抢占式操作系统可以在任何时候抢占另一个线程,包括在这4个动作之间.假如在这过程中有
3、其他线程抢占了,其他线程同样抢占了当前线程V0、V,如果不对VO、Y1.进行保存,那么下次回来执行当前线程,结果就会出错.所以,针对当前这种问Sg,我们就需要在切换线程之前,对V0.V1.的数值进行保存,当下次切换到当前线程,再饮更VO,V1.的数值,大致流程如下:大概意思就是:当我们能要从一个规程切换到另一个线程时,内核获得捽制权,执行必要的内务处理(至少要保存和饮红寄存器值).然后将控制权转移到下一个线程以运行.上面说的抢占位置,到底在哪里,每个线程保存在哪个寄存器值中?这就是线程的堆栈的内容.在有MMU的操作系统中,(用户的线程堆栈可以按需动态增长:线程需要的堆栈空间越多,线程堆栈就越多
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RTOS 多线程 抢占 工作 原理
