开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 5 天,点击查看活动详情
特权指令和非特权指令
为什么分为特权指令和非特权指令
从资源管理和控制程序执行的角度,必须把指令进行区分;通俗来讲因为应用程序在执行相关指令的时候,可能系统的混乱。所以把指令分为特权和非特权。
特权指令和非特权指令区别
特权指令:只能在内核态才能使用的指令 非特权指令:不能在内核态执行的指令
用户态和内核态
处理器有两种状态:内核态和用户态。
内核态:处理器可以执行全部的指令,使用所有的资源。
用户态:处理器只能执行非特权指令,不能执行特权指令
处理器状态的转换
什么情况下处理器会从用户态向内核态转换
- 程序请求操作系统服务,执行系统调用
- 程序运行过程产生中断事件
- 程序运行的时候发生异常
内核态怎么转换到用户态
计算机会提供一条叫做加载程序状态字的特权指令,实现内核态到用户态的转换。
用户栈和内核栈
用户栈: 用户进程空间的一片区域,用于保存应用程序间相互调用的参数、返回值以及子程序的局部变量。
内核栈: 内存中属于操作系统空间的一款区域。 其用途有两个方面:
- 保存操作系统程序简单的相互调用的参数、返回值以及程序的局部变量
- 保存中断现场信息
题目练习
为了方便操作系统对系统资源的管理与程序运行控制,一般会将指令分为以下哪两类( )
- A. 资源指令与非资源指令
- B. 特权指令,非特权指令
- C. 管理指令与控制指令
- D. 运行指令与非运行指令
我的答案: B
从操作系统来分析,CPU有两种关键重要的状态,这是( )
- A. 管理态与被管理态
- B. 控制态与被控制态
- C. 用户态与内核态
- D. CPU态与非CPU态
我的答案: C
( )是用户态转向内核态的唯一方法途径。
- A. 函数调用
- B. 操作接口
- C. 中断机制
- D. iret
我的答案: C