内核是操作系统中最为关键的部分。内核是负责接触底层的,因此大部分都是用C语言写的,有的甚至用汇编。IOS的核心是XNU内核,先从一些内核基本知识谈起。
目录
内核基础
硬件
任务
并发
安全
内核架构
巨内核
微内核
混合内核
XNU
用户态与内核态
用户态与内核态转换机制
系统调用处理
内核基础
4个角度来说明内核的作用及必要性。
硬件
所有现代操作系统都包含内核组件,内核向开发者提供各种服务。如果没有内核,我们编写开发程序就会陷入编写硬件接口和操作环境的泥潭,做饭还需要自己种水稻,钻木取火,那多麻烦啊。好了,现在我们拥有了内核,一些底层的东西我们不需要关心,我们只要使用内核API就能达成我们的目的。
任务
现代操作系统都是抢占式的多任务,允许多个任务并发执行。因此内核要满足任务的调度要求,能够判断任务运行在哪一个处理器上。
并发
如果有多任务,就要考虑并发问题,内核得知道哪些设备能够同时访问,哪些不能同时访问,需要提供某些措施来防止并发问题。
安全
内核还得提供安全服务,保证系统中各种资源的完整性、隐私性。任何敏感操作都是需要内核的安全审核来确保该操作的合法性。
内核架构
内核架构分为三种:巨内核、微内核、混合内核。后面单独说XNU内核。
1.巨内核
巨内核顾名思义,就是包含所有的服务,上至内存管理