操作系统原理第二周:操作系统运行环境

本文详细介绍了操作系统的处理器状态,包括内核态和用户态,并讲解了中断和异常机制的工作原理,以及系统调用如何通过中断/异常机制实现用户态到内核态的转换。内容涵盖X86处理器的中断处理程序、系统调用机制及其在Linux中的应用。
摘要由CSDN通过智能技术生成

一、处理器状态

处理器由运算器、控制器、一系列寄存器和高速缓存构成

两类寄存器:

  • 用户可见寄存器:高级语言编译器通过优化算法分配并使用之,以减少程序访问内存次数
  • 控制和状态寄存器:用于控制处理器的操作,通常由操作系统代码使用

常见的控制和状态寄存器:

  • 程序计数器(PC):记录将要取出的指令的地址
  • 指令寄存器(IR):记录最近取出的指令
  • 程序状态字(PSW:Program Status Word):记录处理器的运行状态,如条件码、模式、控制位等信息

操作系统具有并发和共享的特征,因此需要实现保护和控制
需要硬件提供基本的运行机制:

  • 处理器具有特权级别,能在不同的特权级运行的不同指令集合
  • 硬件机制可将OS与用户程序隔离

现代处理器通常将CPU状态设计划分为两种、三种或四种
在程序状态字寄存器PSW中专门设置一位,根据运行程序对资源和指令的使用权限而设置不同的CPU状态(IOPL)

操作系统有两种CPU状态:

  • 内核态:运行操作系统程序
  • 用户态:运行用户程序
特权指令:只能由操作系统使用、用户程序不能使用的指令
启动I/O,内存清零,修改程序状态字,设置时钟,允许/禁止中断,停机
非特权指令:用户程序可以使用的指令
控制转移,算术运算,访管指令,取数指令

X86支持4个处理器特权级别
特权环:R0、R1、R2和R3

  • 从R0到R3,特权能力由高到低
  • R0相当于内核态,R3相当于用户态,R1和R2则介于两者之间
  • 不同级别能够运行的指令集合不同

目前大多数基于x86处理器的操作系统只用了R0和R3两个特权级别

CPU状态之间的转换:

  • 用户态 内核态:中断/异常/陷入机制
  • 内核态
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值