这里写目录标题
学习来自:https://www.bilibili.com/video/BV1YE411D7nH?p=4
一.运行机制
1.1 特权指令和非特权指令
什么是指令?
一条高级语言的代码翻译过来可能会对应多条指令
所以 “指令“就是CPU(处理器)能识别,执行的最基本命令
比如 : 加法指令就是让CPU进行加法运算
有些指令“人畜无害” 例如 加 减 乘 除 这些普通的运算指令
有的指令有着很高的权限 比如:内存清零 如果用户可以使用这种指令。就意味着一个用户可以将其他的用户内存数据随意清零,这样是很危险的。
所以 指令被分为 特权指令和非特权指令
为了具体实现双重模式,因此将能引起损害的机器指令作为特权指令(privileged instruction)。如果在用户模式下试图执行特权指令,那么硬件并不执行该指令,而是认为该指令非法,并将其以陷阱(trap)的形式通知操作系统。特权指令有以下几种:
1)允许和禁止中断,控制中断禁止屏蔽位
2)在进程间切换处理
3)存取用于主存保护的寄存器
4)执行I/O操作
5)停止一个中央处理器的工作
6)清理内存
7)设置时钟
8)建立存储键
9)加载PSW
CPU如何判断可以执行特殊指令?
这就涉及到了 两种处理器状态 用户态(目态)和核心态(管态)
1.2用户态和核心态
内核态:
1.系统中既有操作系统的程序,也有普通用户程序。为了安全性和稳定性,操作系统的程序不能随便访问,这就是内核态。即需要执行操作系统的程序就必须转换到内核态才能执行
2. 内核态可以使用计算机所有的硬件资源
用户态:不能直接使用系统资源,也不能改变CPU的工作状态,并且只能访问这个用户程序自己的存储空间
1.3内核程序和应用程序
内核程序
操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态
应用程序
为了保证系统的安全运行,普通应用程序只能执行非特权指令,运行在用户态
操作系统中的那些功能应由内核程序实现?
安装好WINDOWS后
二.操作系统内核
三.中断和异常
3.1中断机制的诞生
早期的计算机:
各个程序只能串行的执行,导致系统资源率利用特别低
所以人们开发出了操作系统(作为计算机的管理者),引入了中断机制,实现了多道程序并发执行。
发生中断就意味着 需要操作系统的介入,开展管理工作
所有用户程序都是运行在用户态的, 但是有时候程序确实需要做一些内核态的事情, 例如从硬盘读取数据,
或者从键盘获取输入等.,而唯一可以做这些事情的就是操作系统,
所以此时程序就需要先操作系统请求以程序的名义来执行这些操作(比如java的I/O操作底层都是通过native方法来调用操作系统)。这时需要一个这样的机制: 用户态程序切换到内核态, 但是不能控制在内核态中执行的指令。
这种机制叫系统调用, 在CPU中的实现称之为陷阱指令(Trap Instruction)
3.2中断的概念和作用
1.当中断发生时,cpu立即进入== 核心态==
2.当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
3.对于不同的中断信号,会进行不同的处理
发生了中断,就意味着需要操作系统的介入,开展管理工作;由于操作系统的管理工作(进程切换,分配I/O设备等)需要使用特权指令,因此CPU要从用户态转换为核心态。中断 可以让CPU从用户态切换为核心态,让操作系统获得计算机的控制权。有了中断,才可以实现多道程序并发执行。
用户态☞核心态 是 通过中断实现的。并且中断是唯一的途径
核心态☞用户态 的切换是通过 执行一个特权指令,将程序状态(PSW)的标志位设置为用户态 比如 0为用户态 1为核心态
3.3中断的分类
3.4外中断的处理过程
step1:
执行完成每个指令过后,CPU都要检查当前是否有外部中断信号
step2:
如果检测到外部中断信号,则需要保护被中断进程的CPU环境(如程序状态字PSW,程序计数器PC,各种通用寄存器)
step3:
根据中断信号类型转入相应的中断处理程序(内核)
step4:
恢复原进程的CPU环境并退出中单,返回原进程继续往下执行