**
主要内容:
**
一.cpu状态
二.中断/异常机制
三.系统调用
一.处理机
两类寄存器
1.通用
2.控制和状态
pc:程序计数器,存储指令地址
psw:程序状态字,存储处理器的运行状态
ir:指令寄存器
程序状态字寄存器psw设置状态,起到保护作用
两个状态
内核态
用户态
特权指令:只能由操作系统使用,用户程序不能使用的指令
启动i/o 内存清零 设置时钟 允许/禁止中断 停机
状态的转变
1.用户->内核:唯一途径->中断/异常
2.内核态->用户态:设置程序状态字PSW
一条特殊的指令:陷入指令(又称访管指令),系统调用
二.中断/异常
引入原因不同:
中断是为了并行操作
异常是为了表示cpu执行指令时本身出现的问题
其实个人感觉并没有明确的区分
设备发送中断信号,硬件保存相关的pc与ps,根据中断码查表,找到中断处理程序的入口地址放于pc,状态放于ps.中断处理程序进行操作.保存通用寄存器.中断处理程序运行,最后返回的时候从栈中读取原来的程序
中断处理程序
保存相关寄存器信息
分析中断/异常的具体原因
执行
恢复
x86处理器
过程:
确定向量i->获得中断描述符->根据中断描述符的段选择符找到全局描述符->全局描述符上的段基址->执行处理程序
三.系统调用(system call)
用户在编程时可以调用系统的一些功能
三者关系
设计
1.用中断/异常机制
2.选择一条特殊指令:陷入指令(访管指令)
3.系统调用号和系统参数
4.系统调用表
Ex:
write(1,string,7);
movl $4,%eax
寄存器
int $0x8
系统调用
1.中断/异常机制:硬件保护现场;通过查中断向量表把
控制权转给系统调用总入口程序
2.系统调用总入口程序:保存现场;将参数保存在内核堆
栈里;通过查系统调用表把控制权转给相应的系统调用
处理例程或内核函数
3.执行系统调用例程
4.恢复现场,返回用户程序