操作系统真象还原 中断

第七章 关于中断

CPU收到中断后 会在中断描述符表中通过中断向量号进行索引(提前为每一种中断分配好中断向量号) 中断向量号通过INTR或NMI引脚传入CPU

 

中断发生时的压栈

1根据CPL和DPL判断是否发生特权级的变换,将SS_old(用0扩张为16位)和ESP_old压入栈

2压入EFLAGS寄存器

3将CS_old 和 EIP_old 压入栈,中断程序执行结束后才能退回原来的程序

4压入错误码(iret时必须手动跳过)

 

中断处理框架:

(1) 构造好IDT

(2) 提供中断向量号

 

8259A内的两组寄存器: ICW (初始化命令字)+ OCW (操作命令字)

ICW1 : 0 0 0 1 LTIM(中断检测方式) ADI(8085的时间间隔) SNGL(单片或级联) IC4(是否需要ICW4)

ICW2: T7 T6 T5 T4 T3 ID2 ID1 ID0 (只需要填写T3~T7)

ICW3: (仅在ICW的SNGL = 1 的情况下)

    主片: S7 S6 S5 S4 S3 S2 S1 S0

    从片:  0 0 0 0 0 ID2 ID1 ID0 (第三位来指定和主片相连的接口)

ICW4: 0 0 0 SFNM BUF M/S AEOI μPM

 

OCW1:M7~M0 (对应 IRQ0 ~ IRQ7) IMR屏蔽中断

OCW2:写入到主片的0x20和从片的)0xA0端口

 

posted @ 2017-11-28 10:14  菜比170  阅读(325)  评论(0编辑  收藏  举报