实验3前篇——X86的中断管理

       实验3主要内容是用户进程的创建,运行,销毁;从操作系统的角度来看用户进程,可以看作是动态加载可运行的程序,然后进行不断地动态切换,这里我们当然也可以从虚拟机的角度来考察操作系统 —— 操作系统其实是在硬件上为用户进程创建虚拟机,每个虚拟机都是单独运行在整个硬件平台上的;而从用户进程看操作系统,则是固定的程序部分,并且提供硬件接口的程序。当我们需要理解该实验的内容时,可以想象一下,程序运行的流程 —— 它总是被加载到内存中,然后将PC(程序计数器)指向程序进入点运行之,但是正常程序流程只有顺序,判断,循环的流程,所以最终只能在程序写的一段代码中反复执行或者退出;当然可以动态加载用户进程,所以对于每个进程都应该运行流程是一样的。但是这样的话,其中一个进程运行,另外的进程就无法运行了,所以这里在程序运行之外还需要很重要的一种机制保证程序能够被切换,它就是中断。而且对于硬件处理,也需要异步来提高处理效率,所以操作系统就使用中断来作为基本工具实现进程的切换,而对于中断的实现则是依赖于处理器构架,从而我们为了更好的理解实验3的内容,就需要对x86处理器的中断有个全面而深入的理解。

    X86的中断管理的主要内容也是以Intel软件开发手册作为参考,但是遗憾的是没有程序代码可以编写用于实现我们的理解,当然在实验3以及之后的内容中就会涉及到。本节我们将从两个部分来描述中断——8086中断与32位保护模式下的中断,对于前者我们已经在前面的实验得到很好的使用与介绍,所以我们只需要简单的介绍之,而对于保护模式下的中断才是我们介绍的重点。

    为了详实而具体介绍本文内容,我们先复习一下一些重要的概念,如下:

    1.中断源——能够引起中断原因或提出中断请求的设备和异常故障;可以分为外部中断与内部中断

    2.中断模式——对于外部中断来说,连接到处理器中断线上的触发方式——沿触发或者电平触发。以及可屏蔽中断与不可屏蔽中断。

    3.中断优先级——如果在响应一个中断,执行中断处理的过程中,又有新的中断事件发生而发出了中断请求,应该如何处理也取决于中断事件的优先级

    4.中断号——每一个中断源都对应一个中断号,用于识别不同的中断事件

    5.中断屏蔽——通过设置相应的中断屏蔽位,禁止响应某个中断

    6.中断服务——对中断的响应的程序

   一)8086中断

    当系统启动时,bios接管了整个系统的控制,处理器处于8086的状态;而bios对外(指的是对基于bios运行的程序)提供接口的主要方式就是中断,基本上能够使用系统所有的服务。而8086对中断的处理是很简单的,对于每个中断源对应一个中断号,每个中断号有一组中断向量(cs:ip)对应着每个中断服务的入口(存在于内存的最低1024个字节中)。详细的终端服务表如下:

INT 00 - CPU-generated - DIVIDE ERROR(除0)
INT 01 - CPU-generated - SINGLE STEP; (80386+) - DEBUGGING EXCEPTIONS(单步调试)
INT 02 - external hardware - NON-MASKABLE INTERRUPT(外部中断,不可屏蔽中断)
INT 03 - CPU-generated - BREAKPOINT(断点)
INT 04 - CPU-gen
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值