挑战408—— 操作系统(2)——用户态与内核态

操作系统内核

操作系统的内核是指在计算机硬件上扩充的第一层软件。通常是一些与硬件紧密相关的模块。内核的实现是通过原语实现的,而原语又是由原子操作构成的。
原语是由若干指令构成的,用于完成一定功能的过程。而原子操作是指在这过程中的行为 ,要么全做,要么不做,不可中断(以保证操作的完整性)。
操作系统主要包含以下功能:

  • 时钟管理(以后会讲)
  • 中断处理(下篇会讲)
  • 原语操作(刚刚提到的)

核心态与用户态

核心态(又称为系统态),在此状态下,能能执行一切指令,访问所有的寄存器内容及存区域(用一句不严谨的话说,啥都能干
用户态,是相对核心态而言的,在此状态下,只能执行特定的一些指令,特定的一些寄存器和一些特定的区域。
那么问题来了,为什么要区分用户态和核心态呢?原因很简单,就是为了保护操作系统,因为操作系统中的一些重要数据,比如PCB,是不允许修改和破坏的。
记得我们上一篇博文提到过,系统调用,是系统提供的给应用程序使用内核功能的接口。它是用户取得操作系统服务的唯一途径。所以当用户程序需要操作系统服务而而调用系统调用的时候,处理机应该从用户态转到核心态,当系统调用返回用户程序的时候,处理机的状态从核心态回到用户态。

核心态与用户态的转换过程

在说这个问题之前,我们需要深入了解一下系统调用,我们前面知道,系统调用就是一个程序接口**(注意,这不是指我们平时用的AIP,比如一些库函数,一些自定义函数)。而操作系统中的各种共享资源由操作系统统一管理,因此,显然对操作系统资源进行的操作都是在内核态进行的,包括我们后面要学到的各种管理(进程管理,I/O管理,内存管理等等)。显然系统调用是一定运行**在核心态。
那么,我们可以得到大致的用户态到核心态之间的一个转换过程:
在这里插入图片描述
注意:这里的调用和执行是不同的意思,调用是指引发系统调用的事件,这个时候程序仍然处于用户态,执行的时候才是处于核心态。就比如系统调用,它被调用的时候,是在用户态下被调用的,但是调用完了,执行的时候是在内核态执行的。又比如,在访问内存的时候发生了缺页,这个时候缺页现象是发生在用户态下,而怎么处理缺页的过程是在核心态下。
又用户态到核心态的指令,称为访管指令,在用户态下执行。与之对应的指令称为特权指令,用于内核态向用户态转换。
导致切换的过程有两个原因,一个是中断,一个是异常。

中断和异常

计算机在执行过程中,当出现异常或者特殊请求的时候,计算机停止现行程序的运行,转向对这些异常情况或特殊处理的请求的处理,待处理完毕以后,再返回现行程序的间断处,继续执行原程序,这种现象我们称之为中断
常见的中断类型有,程序中断,时钟中断,I/O中断硬件中断等等。
下面介绍一下中断的相关术语:

  • 中断源 :引起中断发生的事件
  • 中断响应:CPU收到中断请求后转去执行相应的事件处理程序
  • 中断屏蔽:在中断请求产生后,系统用软件方式有选择得封锁不封中断,而允许其他中断仍能得到响应。
  • 关中断:又称禁止中断,CPU内部处理机状态字(PSW)(记住这个寄存器)中断允许位被清除,不允许CPU响应中断。
  • 开中断:与关中断相反,CPU内部处理机状态字(PSW)(记住这个寄存器)中断允许位被恢复,允许CPU响应中断。
  • 中断请求:中断源向CPU发出的请求中断处理信号

后面的三种方式均由硬件方式实现,显然关中断与开中断是为了保证某些程序执行的原子性。不过某些中断是不能被屏蔽的(如内部中断),甚至是无法被屏蔽的,这些中断一旦提出,CPU必须立刻相应。比如电源掉电中断,等等。

中断的分类

为什么要分类?对中断分类,能帮助操作系统对不同的中断赋予不同的处理优先级,以便当不同中断同时发生时,该处理哪一个中断。
根据中断源产生的条件,可以把中断分为外中断和内中断(都属于硬中断),其中,外中断是指来自处理机外部和内存外部的中断(如I/O中断,外部信号中断,其实就是我们一般上说的,狭义上的中断)。而内中断是指的处理机和内存内部产生的中断,也称为陷入(trap)或者异常。(比如常见的算术溢出,除数为0,地址非法,缺页等等)。
对应于硬中断,软中断主要是通信进程间模拟硬中断的一种信号通信方式,了解即可。
这注意,所有的硬中断的优先级都高于软中断,各中断的优先级在系统设计初期给出,在运行过程中是不变的。

中断的处理过程
  1. 检查CPU相应中断的条件是否满足(是否有请求?优先级如何?)
  2. 关中断(使得CPU不能再次响应其他中断)
  3. 保护中断现场(以便处理结束返回中断点)
  4. 分析中断原因,调用中断处理服务程序。(可通过硬件向量或者软件查询得到程序入口,具体这些是什么,我也不知道)
  5. 执行中断处理服务程序
  6. 退出中断,恢复现场或者调用新的进程
  7. 开中断

这里注意(2)(7),这两步把中断处理的过程保护起来了,这种做法我们在后面的进程管理中还会遇到。而(4)中提到的中断服务程序,上面的步骤仅作为了解,这里给出大致的4个过程(很重要):
a. 保护现场
b. 中断服务
c. 恢复现场
d. 中断返回

由于处理机状态的切换要依赖于中断和异常,因此,中断机制是操作系统中所必须的一个机制。

做题感触
  1. 中断这部分内容感觉考得比较多
  2. 主要问题在于中断的类型(懂得区分某个现象是哪种中断类型),用户态到内核态的转变条件,转变过程
  3. 与中断现场有关的寄存器及其作用(PSW,PC)。
  4. 这应该是必考点,分值一般是一道选择题,2分
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值