处理器状态:
中央处理器(CPU)
处理器由运算器、控制器、一系列的寄存器以及高速缓存构成
两类寄存器:
用户可见寄存器:高级语言编译器通过优化算法分配并使用之,以减少程序访问内存次数
控制和状态寄存器:用于控制处理器的操作通常由操作系统代码使用
常见的控制和状态寄存器
程序计数器(PC):记录将要取出的指令的地址
指令寄存器(IR):记录最近取出的指令
程序状态字(PWA):记录处理器的运行状态如条件码、模式、控制位等信息
操作系统需要两种CPU状态
内核态:运行操作系统程序
用户态:运行用户程序
特权指令:只能由操作系统使用、用户程序不能使用的指令
非特权指令:用户程序可以使用的指令
非特权指令:控制转移、算数运算、访管指令、取数指令
CPU状态之间的转换:
用户态->内核态
唯一途径->中断/异常/陷入机制
内核态->用户态
设置程序状态字PSW
中断/异常机制:
中断/异常的概念:
CPU对系统发生的某个事件作出的一种反应
CPU暂停正在执行的程序,保留现场后自动转去执行响应事件的处理程序,处理完成后返回断点,继续执行被打断的程序
特点:是随机发生的、是自动处理的、是可恢复的
为什么引入中断与异常?
事件:
中断与异常小节:
中断/异常机制工作原理:
中断/异常机制是现代计算机系统的核心机制之一
硬件和软件相互配合而使计算机系统得以充分发挥能力。
I/O中断处理程序:
通常分为两类处理:
I/O操作正常结束
若有程序正等待此次I/O的结果,则应将其唤醒
若要继续I/O操作,需要准备好数据重新启动I/O
I/O操作出现错误
重新执行失败的I/O操作
重试次数有上限,达到时系统将判定硬件故障
系统调用:
系统调用:用户在编程时可以调用的操作系统功能
系统调用是操作系统提供给编程人员的唯一接口
使CPU状态从用户态陷入内核态
每个操作系统都提供几百种系统调用(进程控制、进程通信、文件使用、目录操作、设备管理、信息维护等)
怎样实现用户程序的参数传递给内核
常用的3种实现方法:
1)由陷入指令自带参数:陷入指令的长度有限,且还要携带系统调用功能号,只能自带有限的参数
2)通常通过寄存器传递参数:这些寄存器是操作系统和用户程序都能访问的,但寄存器的个数就限制传递参数的数量
3)在内存中开辟专用堆栈区来传递
中断发生后OS底层工作步骤:
学习视频链接:http://www.chinesemooc.org/course.php?ac=course_view&id=685641&eid=23938&key=0