OS运行时,分为管态和目态,每个态有各自的使命。另外中断和异常也是常考点。


手撕408|操作系统的运行环境(3)_java


手撕408系列之操作系统的运行环境,冷月出品必是精品,大家好,我是学长冷月。


在梳理本节的知识点之前,我们首先来搞懂指令和代码的区别。


所谓代码,其实就是高级程序语言设计中的代码,类似:C语言代码、Python代码。而指令其实是机器语言层面的一条条指令,计算机通过一条条指令来进行一步步操作。


操作系统的运行机制

操作系统在运行的时候,其实分为两种状态:核心态(管态、内核态)和用户态(目态)


其次在CPU中执行的程序,可以大致分为:内核程序和用户程序(用户自编程序)。


它们的区别在于内核程序可以执行特权指令(不允许用户直接使用的指令),例如:关中断、内存、时钟、分配系统资源、修改段、页表以及修改访问权限。


用户程序只能执行非特权指令,也就是说只能执行不会对计算机的运行产生风险的操作。


另外核心态可以执行特权、非特权指令,用户态则只能执行非特权指令。


OS内核

1、时钟管理:管理所有与时间相关的操作,包括给用户提供正确的时间、以及CPU的时钟管理


2、中断机制:多道程序设计中最重要的功能。


3、原语:原语是底层可被公开调用的小程序,其特点:最接近硬件的部分、有原子性(一旦执行便一气呵成执行完毕,不能被中断)运行时间短,调用频繁。


4、对系统资源管理的功能


中断和异常

中断和异常通过硬件实现,一旦发生立即进入核心态,将CPU控制权立马交还给操作系统。


中断也叫外中断,它的信号干预来自CPU外部,例如有IO请求人工干预。


异常也叫内中断(不能被CPU屏蔽),它的信号来源于CPU内部,主要有

陷阱、陷入(自愿中断,如系统调用)、故障(硬件故障)、终止(错误终止)。


系统调用

既然特权指令只能在核心态执行,那么用户如果想要有需要执行特权指令的业务场景怎么办呢?这是系统调用就发挥了作用。


系统调用是操作系统提供给用户与资源有关的操作。


用户进程在目态可以通过访管指令来执行系统调用程序,也就是OS提供给用户的接口,通过硬件中断机制将目态切为管态,执行完后再把结果返回给目态。具体操作如下图:


手撕408|操作系统的运行环境(3)_java_02

https://mp.weixin.qq.com/s/AFvaypL1bCCAy4XUOUgQrA