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

用户态和内核态

1.用户态和内核态

1.1 用户态和内核态的引入

最简单的运行程序的方式是“直接执行”,即直接在 CPU 上执行任意程序。直接执行的问题是:

  1. 如何限制代码行为?比如禁止:设置特殊寄存器的值、访问存储器的任意位置、I/O 请求、申请更多系统资源等
  2. 在运行这个程序的时候,如何切换到另一个程序?进程调度应该是 OS 才有的权限

因此引入用户态和内核态和两种模式。用户态无法执行受限操作,如 I/O 请求,执行这些操作会引发异常。核心态只能由操作系统运行,可以执行特权操作。用户程序通过 系统调用 system call 执行这些特权操作。OS 执行前会判断进程是否有权限执行相应的指令。

区分用户态和核心态的执行机制称为“受限直接执行”(Limited Direct Execution)。

1.2 两种工作模式的简述

(1)用户态又称为目态,计算机硬件可以通过一个模式位1进行表示。当计算机系统执行用户程序时,系统处于用户态。
(2)内核态又称为管态,计算机硬件可以通过一个模式位0进行表示,每当计算机能够控制计算机时,它就处于内核态。例如,当用户程序通过系统调用请求OS服务时,系统必须从用户态切换到内核态,以响应请求。

2.各态下的指令,中断

2.1特权指令和非特权指令

(1)特权指令是指 具有特殊权限的指令,如:清除内存,置时钟,分配系统资源,修改虚存的段表或页表,修改用户的访问权限等,由于这些指令的权限过大,使用不当会导致难以想象的灾难,甚至于整个系统崩溃。所以这些指令只能在内核态下执行,实际上,CPU在内核态下可以执行指令系统的所有指令        

(2)用户态下只能执行非特权指令,在用户态下使用特权指令时,将产生中断以阻止用户使用特权指令

(3)从用户态转换为内核态的唯一途径是中断或异常

2.2 访管指令和访管中断

(1)访管指令( trap 指令) 是一条在用户态下执行的指令。在用户程序中,因要求操作系统提供服务而有意识地使用访管指令,从而产生一个中断事件(自愿中断),将操作系统转换为内核态,称为访管中断。访管中断由访管指令产生,程序员使用访管指令向操作系统请求服务。

(2)由于用户程序只能在用户态下运行,若用户程序想要完成在用户态下无法完成的工作时,就需要依靠访管指令。访管指令本身不是特权指令,其基本功能是让程序拥有“自愿进管”的手段 ,从而引起访管中断。

2.3 只能在内核态下执行的指令

包括特权指令,访问硬件指令,上下文切换指令等:

        1)I/O指令

        2)中断管理指令:关中断,开中断

        3)内存管理指令:如 LGDT(加载全局描述符表),LIDT(加载中断描述符表)

        4)系统状态设置指令:如 HLT(停止处理器),RESET(复位)

        5)访问硬件指令:控制CPU特定寄存器;直接操作设备寄存器等

        6)上下文切换指令:如 IRET(从中断返回,恢复用户态)

http://www.xdnf.cn/news/6239.html

相关文章:

  • 2、ubantu系统配置OpenSSH | 使用vscode或pycharm远程连接
  • 用MCP往ppt文件里插入系统架构图
  • Servlet原理
  • 获取淘宝商品图片的完整指南
  • 3D曲面上的TSP问题(一):曲面上点集距离求解
  • EdgeShard:通过协作边缘计算实现高效的 LLM 推理
  • 华为Watch的ECG功能技术分析
  • SQLMesh 模型管理指南:从创建到验证的全流程解析
  • 部署安装jenkins.war(2.508)
  • Golang
  • CSS 溢出内容处理、可见性控制与盒类型设置深度解析
  • 多链互操作性标准解析:构建下一代区块链互联生态
  • 从AlphaGo到ChatGPT:AI技术如何一步步改变世界?
  • 【现代深度学习技术】注意力机制07:Transformer
  • AI时代的弯道超车之第十四章:AI与生活和生命的改变
  • 主流快递查询API横向对比:快递100快递鸟菜鸟物流接口差异解析
  • 《数字分身进化论:React Native与Flutter如何打造沉浸式虚拟形象编辑》
  • 蓝桥杯12届国B 完全日期
  • IP地址查询助力业务增长
  • 【MySQL】mysql/bin目录下程序介绍
  • Python训练营打卡——DAY25(2025.5.14)
  • Python对于可变对象和不可变对象的理解(主要理解代码中的注释)
  • Unity 小提示与小技巧
  • 【GESP真题解析】第 4 集 GESP 一级 2023 年 3 月编程题 1:每月天数
  • 创建对象
  • [Vue3]语法变动
  • 3D Gaussian Splatting 查看工具 splatviz
  • 案例 ss
  • linux-信号保存和处理
  • linux-进程信号捕捉