可以看我这篇博文
https://blog.csdn.net/sinat_16643223/article/details/108787181
============================
linux是通过软中断实现从用户态转为内核态,这个软中断我想就是指pendsv,所以这就是为什么说系统调用会发生任务切换。
用户态到内核态的切换就是任务切换了?
那那种高低优先级任务的切换为什么也说是通过系统调用实现的呢?是不是因为高低优先级的切换也需要调用系统的API,所以也是系统调用,但凡涉及到内核的操作都需要系统调用?
任务切换也是内核里面的操作,需要任务切换就需要调用系统API,那这里面意思是出现了两个任务切换?
是的,首先那个任务切换函数就属于系统调用,而其他的API函数似乎会调用这个任务切换函数的。如果你直接要任务切换那就直接调用任务切换函数就可以了。这个任务切换函数也属于系统调用。只不过可能别的API函数调用这个任务切换函数是从用户态切到内核态,我们高优先级切换可能是这种直接两个任务切换。
似乎系统调用是在pendsv的中断服务程序里面做的?
任务切换也是在pendsv的中断服务程序里面做的?
我把系统调用详细流程和任务切换详细流程都弄清楚,然后对比一下。
我还有的没想明白,任务切换为什么非要在中断服务函数里面完成?难道是因为没有任务能去完成任务切换所以放到中断服务函数里面么?
所以触发pendsv的场景有两个,任务切换还有轮询的那种切换本质都是切换,系统调用本质还是任务切换,所以根本都是任务切换。
https://www.cnblogs.com/fasionchan/p/9431784.html
看下面这些还是可以总结出一些。
https://blog.csdn.net/u010820757/article/details/48344991