操作系统的核心功能就是用一个CPU仿制出“多CPU”环境,使得每一个任务都能拥有“独立”的CPU。
如何仿制多CPU呢?
在真正的多CPU系统中,每一个CPU都有一套自己的寄存器,由于不同的CPU执行不同的任务功能,所以他们的寄存器内容互不相同,为了模仿多CPU环境,操作系统为每个任务用一块专用的存储器空间构建了一个“虚拟CPU”,用来保存CPU内部各个寄存器的信息。这个专用的存储器空间就是“任务堆栈”,有多少个任务就有多少个任务堆栈。
任务堆栈的工作原理?
当一个任务需要运行时,操作系统将任务堆栈中的内容复制到真正的CPU中,相当于虚拟CPU变成了真正的CPU,此时这个任务就得到运行了。当这个任务因为某种原因需要暂停运行时,操作系统将真正CPU中的内容复制到其对应的任务堆栈中保存起来,以便下次在运行时能够恢复现场,继续运行下去。操作系统在保护好当前任务现场后就可以恢复到另外一个任务的现场,这个过程称之为“任务的切换”,也就是将真正CPU资源在各个任务之间进行切换。