1. 概述
通过任务及任务切换一节读者已经了解了任务切换的详细过程,其实要实现任务切换的功能前面讲的还远远不够。因为,PSP的操作必须在特权模式下,而用户的程序是工作在线程模式下的。所以,用户要想实现任务的切换功能就必须想办法让CPU工作在特权模式下。要想深入了解嵌入是操作系统的实现原理我可能需要了解的更多。
下面的内容与平台相关性很强,但是其原理都是大同小异。这里讲的内容时基于ARM Cortex-M的处理器讲解的。
2. CPU的操作模式和特权级别
一般一款CPU都会有不同的操作模式和特权级别从而实现操作系统级别和用户级别的区分然后进一步实现操作权限的控制。我们都知道Linux系统各个用户的和root用有不同的操作权限,应用层和内核层也有对硬件操作的不同权限。Linux是如何实现权限控制的?不知道有没有读者提出过类似的问题?其实权限的控制不仅仅是软件层面的实现,在一定层面上硬件也需要支持。
我们以ARM Cortex-M系列的处理器为例,其支持两种处理器的操作模式和两种特权级别。
两种操作模式:
- handler mode:中断和异常执行的代码处于该模式
- thread mode:其他代码处于该模式
引入两个模式的本意,是用于区别普通应用程序的代码和异常服务例程的代码——包括中断服务例程的代码。</