手撕408系列之操作系统的运行环境,冷月出品必是精品,大家好,我是学长冷月。
在梳理本节的知识点之前,我们首先来搞懂指令和代码的区别。
所谓代码,其实就是高级程序语言设计中的代码,类似:C语言代码、Python代码。而指令其实是机器语言层面的一条条指令,计算机通过一条条指令来进行一步步操作。
操作系统的运行机制
操作系统在运行的时候,其实分为两种状态:核心态(管态、内核态)和用户态(目态)。
其次在CPU中执行的程序,可以大致分为:内核程序和用户程序(用户自编程序)。
它们的区别在于内核程序可以执行特权指令(不允许用户直接使用的指令),例如:关中断、清内存、置时钟、分配系统资源、修改段、页表以及修改访问权限。
而用户程序只能执行非特权指令,也就是说只能执行不会对计算机的运行产生风险的操作。
另外核心态可以执行特权、非特权指令,用户态则只能执行非特权指令。
OS内核
1、时钟管理:管理所有与时间相关的操作,包括给用户提供正确的时间、以及CPU的时钟管理
2、中断机制:多道程序设计中最重要的功能。
3、原语:原语是底层可被公开调用的小程序,其特点:最接近硬件的部分、具有原子性(一旦执行便一气呵成执行完毕,不能被中断)、运行时间短,调用频繁。
4、对系统资源管理的功能
中断和异常
中断和异常通过硬件实现,一旦发生立即进入核心态,将CPU控制权立马交还给操作系统。
中断也叫外中断,它的信号干预来自CPU外部,例如有IO请求、人工干预。
异常也叫内中断(不能被CPU屏蔽),它的信号来源于CPU内部,主要有
陷阱、陷入(自愿中断,如系统调用)、故障(硬件故障)、终止(错误终止)。
系统调用
既然特权指令只能在核心态执行,那么用户如果想要有需要执行特权指令的业务场景怎么办呢?这是系统调用就发挥了作用。
系统调用是操作系统提供给用户与资源有关的操作。
用户进程在目态可以通过访管指令来执行系统调用程序,也就是OS提供给用户的接口,通过硬件中断机制将目态切为管态,执行完后再把结果返回给目态。具体操作如下图:
https://mp.weixin.qq.com/s/AFvaypL1bCCAy4XUOUgQrA