【操作系统的运行机制与体系结构、中断和异常、系统调用】

本文详细介绍了操作系统的运行机制,包括指令的分类、处理器的用户态与核心态、内核程序的角色。中断和异常的概念被阐述,区分了内中断和外中断,以及它们的处理过程。系统调用作为操作系统提供的服务接口,其作用和与库函数的区别也被提及。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.4 操作系统的运行机制与体系结构

1. 什么是“指令”?和我们平时所说的“代码”有什么区别?

​​​​​​Alt

2. 运行机制 —— 两种指令、两种处理器状态、两种程序

有的指令“人畜无害”。比如:加、减、乘、除这些普通的运算指令。

有的指令有很高的权限。比如:内存清零指令。如果用户程序可以使用这个指令,就意味着一个用户可以将其他用户的内存数据随意清零,这样做显然是很危险的。

因此,指令分为两种

  • 特权指令:如内存清零指令,不允许普通用户程序使用
  • 非特权指令:如普通的运算指令

那么,CPU又是如何判断当前是否可以执行特权指令的呢?
为此,规定了两种处理器状态

  • 用户态(目态):此时CPU只能执行非特权指令。
  • 核心态(管态):特权指令,非特权指令都可执行。

而处理器状态用程序状态字(PSW)中的某标志位来标识当前处理器处于什么状态。如0为用户态,1为核心态。

有的程序需要使用特权指令,而有的程序只能使用非特权指令,因此,计算机系统将程序分为两种

  • 内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态。
  • 应用程序:为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态。

那么操作系统的哪些功能应该由内核程序实现呢?

我们安装完Windows操作系统后,会发现操作系统提供了多种多样的功能,比如“记事本”、
“任务管理器”。然而,这些功能并不是必不可少的。即使没有“任务管理器”,我们仍然可以使用计算机。

所以操作系统中并不是所有东西都是必须存在必备的。

3. 操作系统的内核
内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。
实现操作系统内核功能的那些程序就是内核程序。

Alt
Alt

4. 操作系统的体系结构 —— 大内核和微内核
Alt
Alt

1.5 中断和异常

Alt

1 中断机制的诞生

早期计算机,各程序只能串行执行,系统资源利用率低。
为解决上述问题,人们发明了操作系统(作为计算机的管理者),引入中断机制,实现了多道程序并发执行。

本质:发生中断就意味着需要操作系统介入,开展管理工作。

  • 举个例子
    CPU收到计时部件发出的中断信号,(从用户态)切换为核心态对中断进行处理➡ 将CPU使用权限交给操作系统,操作系统内核负责对中断信号进行处此时操作系统就会决定进程1的时间片已用完,换进程2运行。➡ 接下来进程2开始在用户态下执行 ➡运行过程中进程2可能发出系统调用(内中断信号),请求输出,CPU切换为核心态,对中断进行处理➡操作系统内核负责对中断信号进行处理➡输出设备开始工作,进程2暂停运行等待I/O完成,换进程3(切换为用户态)运行……I/O完成,设备向CPU发出中断信号➡CPU收到I/O设备发来的中断信号,切换为核心态对中断进行处理➡操作系统内核对中断信号进行处理➡进程2的I/O操作完成,让进程2恢复运行(切换为用户态),以完成后续工作……

2 中断的概念和作用

  1. 当中断发生时,CPU立即进入核心态
  2. 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
  3. 对于不同的中断信号,会进行不同的处理

发生了中断,就意味着需要操作系统介入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要使用特权指令,因此CPU要从用户态转为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序并发执行。

“用户态→核心态” 是通过中断实现的,并且中断是唯一途径。
“核心态→用户态” 的切换是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为“用户态”。

3 中断的分类

根据信号的来源(本质区别),中断分为内中断和外中断。

1. 内中断(也称异常、例外、陷入)

信号的来源:CPU内部。 与当前执行的指令有关。
一种分类方式:

  • 自愿中断 —— 指令中断 如:系统调用时使用的访管指令(又叫陷入指令、trap指令)
  • 强迫中断
    • 硬件故障(如:缺页)
    • 软件中断(如:整数除0)

另一种分类方式:

  • 陷阱、陷入(有意而为之的异常,如系统调用)
  • 故障(fault 由错误条件引起的,可能被故障处理程序修复,如缺页)
  • 终止(abort 不可恢复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整数除0)

2. 外中断(狭义的中断)

信号的来源:CPU外部。 与当前执行的指令无关。

  • 外设请求(如:I/O操作完成发出的中断信号)
  • 人工干预(如:用户强行终止一个进程)

4 外中断的处理过程

Alt

1.6 系统调用

Alt

1 什么是系统调用,有何作用?

操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。
Alt
“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
Alt
应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、lO操作、文件管理等),都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。

系统调用(按功能分类):

  • 设备管理(完成设备的 请求/释放/启动 等功能)
  • 文件管理(完成文件的 读/写/创建/删除 等功能)
  • 进程控制(完成进程的 创建/撤销/阻塞/唤醒 等功能)
  • 进程通信(完成进程之间的 消息传递/信号传递 等功能)
  • 内存管理(完成内存的 分配/回收 等功能

系统调用相关处理涉及到对系统资源的管理、对进程的控制,这些功能需要执行一些特权指令才能完成,因此系统调用的相关处理需要在核心态下进行。

2 系统调用与库函数的区别

Alt

3 系统调用背后的过程

Alt
Alt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值