当前位置: 首页 > news >正文

操作系统概述(4)--操作系统运行机制(1):处理机双重模式与中断

操作系统运行机制:处理机双重模式与中断

操作系统为什么能管住 CPU?为什么用户程序不能随便搞破坏?这背后全靠处理机的双重工作模式和中断机制撑着。今天咱们就把这两个核心概念拆解得明明白白,看完就能搞懂操作系统是怎么 “掌权” 的~


一、处理机的双重工作模式:用户态 vs 内核态

CPU 为了保护系统安全,把自己分成了两种 “身份状态”,不同状态能做的事天差地别。

1. 两种指令:特权指令 vs 非特权指令

要理解状态,先搞懂指令的区别:

  • 特权指令:这类指令会直接影响系统安全,比如内存清零、修改时钟、开关中断,只能由操作系统内核使用,普通程序碰都别想碰。

  • 非特权指令:就是普通程序日常用的指令,比如加减乘除、读写文件,在用户态就能执行,内存访问会被限制,没法直接修改系统关键数据。

2. 两种状态:用户态 vs 内核态

  • 用户态:用户程序运行时的状态。就像 “普通员工”,只能用非特权指令,内存访问被限制,没法直接操作硬件,防止程序搞崩系统。

  • 内核态:操作系统内核运行时的状态。就像 “管理员”,能执行所有特权指令,访问全部地址空间,直接管理硬件资源。

💡 举个例子:你用微信发消息时,微信程序运行在用户态;当它需要调用系统 API 读写磁盘时,操作系统内核会接管,进入内核态帮它完成操作,操作完再切回用户态。

3. 状态的转变:怎么从 “员工” 变成 “管理员”?

  • 用户态 → 内核态:只能由中断引发,硬件会自动完成状态切换。中断就相当于 “强制呼叫管理员”,比如你按键盘、点鼠标,硬件会发中断信号,操作系统立刻从用户态切到内核态处理请求,强行夺回 CPU 使用权。

  • 内核态 → 用户态:操作系统执行完特权指令后,修改程序状态字(PSW)的标志位,就能切回用户态,把 CPU 还给用户程序。


二、中断:操作系统的 “控制权开关”

中断是操作系统实现并发、管理硬件的核心机制,简单说就是 “打断当前程序,让操作系统来处理紧急事件”。根据信号来源,中断分为内中断和外中断两大类。

1. 内中断(也叫异常):CPU 内部自己出的 “事”

  • 核心特点:由正在执行的指令直接引发,中断信号来自 CPU 内部,在指令执行时就会检查中断信号

  • 细分类型:

    • 故障:由指令引起、有可能修复的问题,比如缺页异常、除零错误,操作系统可以处理后让程序继续运行。

    • 终止:CPU 遇到无法执行的硬件故障,无法修复,比如内存损坏,只能终止程序甚至关机。

    • 自陷:程序员事先安排的 “异常事件”,比如条件陷阱指令,用来主动调用系统功能,比如系统调用本质上就是一种自陷。

2. 外中断:CPU 外部发来的 “通知”

  • 核心特点:和当前执行的指令无关,中断信号来自 CPU 外部(比如键盘、鼠标、磁盘),只在指令执行周期的末尾检查信号,不会打断指令本身的执行。

  • 细分类型:

    • 可屏蔽中断:操作系统可以选择暂时忽略的中断,比如键盘输入,忙的时候可以先不处理。

    • 不可屏蔽中断:必须立刻处理的紧急信号,比如电源故障、硬件错误,操作系统没法屏蔽,必须马上响应。


三、为什么这两个机制这么重要?

  1. 安全隔离:用户态和内核态的划分,把用户程序和系统核心隔离开,防止程序越权操作硬件,避免一个程序搞崩整个系统。

  2. 并发实现:中断机制让操作系统能强制切换 CPU 的使用权,实现多道程序的并发执行,让你一边写代码一边聊微信成为可能。

  3. 硬件交互:键盘、鼠标、磁盘这些硬件都是通过中断和 CPU 通信的,没有中断,操作系统根本没法感知你的操作。

http://www.zskr.cn/news/1335676.html

相关文章:

  • Microchip安卓配件开发平台:MCU与安卓系统高效协同实战指南
  • 拓璞数控港股上市:市值142亿港元 年营收5.8亿,净利163万
  • 做精密阻抗分析仪踩过屏的坑,终于摸透这四个选型标准
  • ITO靶材成分均匀性(In/Sn比)控制技术排名
  • 论文查重vs查AI到底差在哪?AIGC检测原理拆解,AI率轻松降20%
  • 网安学习第23天 PHP安全——RCE漏洞
  • C#如何优雅处理引用类型的深拷贝 (十一)
  • 项目——基于C/S架构的文件传输系统平台 (2)——重构
  • 港科大沈劭劼、谭平团队最新成果:开源280万全景数据集,实现零样本立体匹配
  • 基于PSoC 6与BMI160构建嵌入式IMU测试系统:从驱动到上位机全流程
  • 从芯片上电到Wi-Fi连接:手把手调试ESP32-S3启动全流程(附日志分析)
  • 告别MPU6050例程!ATK-IMU901与Arduino串口通信的3个关键避坑点
  • 2026年4月知名的增压器维修机构推荐,增压器维修机构哪家可靠,高压油泵修复,燃油喷射精准高效 - 品牌推荐师
  • AI时代学习转型
  • 告别MIUI!用PixelExperience给小米8 SE刷上纯净安卓13,体验到底香不香?
  • ESP32-S3 变身‘数据U盘+调试串口’二合一神器:基于 TinyUSB 同时开启 MSC 和 CDC 的实战教程
  • 在STM32上实现文件上传:手把手教你配置lwIP 2.1.3的HTTPD POST接口(含内存管理避坑指南)
  • 用STM32L496的ADC测信号?手把手教你做个简易示波器(附潘多拉开发板源码)
  • iPaaS平台有哪些,这五款值得关注
  • C++ STL常用函数一览表(快速记忆版本)
  • 不止是省9.9刀:解锁特斯拉Model 3的‘行驶中保持WiFi’功能,打造家庭移动娱乐中心
  • AI 写代码总跑偏?mirrorai 让 Claude Code、Cursor、Copilot 严格遵守你项目的真实规范
  • 2026年新房墙面装修厂家性价比排行实测对比 - 优质品牌商家
  • 有这5个迹象,说明你公司内斗很严重!
  • 我因为偶然的原因搞出来了---------可以不限层级的评论区
  • 直播预告|Agent Harness: 从模型竞赛到系统工程
  • 告别串口线!手把手教你用WCH-LinkE和SDI功能在CH32V303上实现零硬件开销的Printf调试
  • 序列近似整数规划导向的通用高性能离散变量拓扑优化新方法【附算法】
  • Odrive运动控制实战:用STM32的CAN总线读取电机位置和发送位置指令
  • 告别接线混乱!用ESP32的I2C接口驱动LCD1602,5分钟搞定温湿度显示(附完整代码)