8086下1M内存的分配情况(这个分配由硬件指认)
0x00000~0x003FF:中断向量表(256个中断向量表,即每4个字节用于存储相应中断号程序的起始位置)
0x00400~0x004FF:BIOS数据区
0x00500~0x07BFF:自由内存区
0x07C00~0x07DFF:引导程序加载区
0x07E00~0x9FFFF:自由内存区
0xA0000~0xBFFFF:显示内存区
0xC0000~0xFFFFF:BIOS中断处理程序区
可屏蔽中断在接到信号到启动服务间的一系列步骤(8259A)——异步联络方式
- 一个外部中断请求信号通过IRQ(中断请求),传输到IMR(中断屏蔽寄存器)
-
IMR根据所设定的中断屏蔽字(OCW1),决定是将其丢弃还是接受
-
如果可以接受(即没有被屏蔽),则8259A将IRR(中断请求暂存寄存器)中代表此IRQ的位置位置为1,以表示此IRQ有中断请求信号,同时向CPU的INTR(中断请求)管脚发送一个信号
- 注:CPU这时可能正在执行一条指令,因此CPU不会立即响应;
- 注:当CPU正忙着执行某条指令时,还有可能有其余的IRQ线送来中断请求,这些请求都会接受IMR的挑选(重复2和3)
-
当CPU执行完一条指令后,会检查一下INTR管脚是否有信号
-
如果发现有信号,就会转到中断服务(很复杂),此时,CPU会立即向8259A芯片的INTA(中断应答)管脚发送一个信号
-
当芯片收到此信号后,判优部件开始工作,它在IRR中,挑选优先级最高的中断,将中断请求送到ISR(中断服务寄存器),也即将ISR中代表此IRQ的位置置为1,并将IRR中相应位置置零,表明此中断正在接受CPU的处理,同时将它的编号写入中断向量寄存器IVR的低三位
- 这时,CPU还会送出第二个INTA信号,8259A收到此信号后,芯片将IVR中的内容,也就是此中断的中断号送上通向CPU的数据线,然后根据中断号执行中断服务(等同于int n,由硬件执行)
计算机中每个单独的硬件设备都有一个独立的IRQ(除PCI总线的PCI卡之外),这些IRQ全由8259A(中断控制器——独立芯片,当然工艺上可能集成在其它芯片内)控制,当硬件开始收发信息的时候,向CPU发送信号,CPU产生中断并做相应的处理
任何外设中不一定有类似cpu那么复杂的功能,但是一般需要完成特定的功能(一般为产生计算机需要的数据存储在接口存储器中——输入设备,或者从接口存储器中取出数据处理显示——输出设备),以键盘为例:就是要将相应按键信息存储在接口ROM处,这就需要时钟、计数器、译码器等的配合——即特殊的集成电子电路
B在运行,突然遇到输入命令后,发生下列一系列行为
非DMA方式
- 引起中断,执行中断服务——切换处理机状态至管态,将当前进程置为阻塞状态,并使用调度算法切换进程,假使切换到A(并且假设B完成输入前一直运行A)
- 此时,从键盘按下按键,键盘中的译码器扫描按键将按键信息暂时存在当前键盘中的只读ROM,同时通过键盘中的中断请求触发器向CPU发送中断信号(用上面的异步联络方式)
- 执行中断服务——停止A,CPU到相应的地方(通过键盘中的计数器选取ROM地址)取数据并在完成后返回给键盘完成信号(键盘就重新计数扫描等待新一轮输入),再将数据送到内存相应位置,并将B由阻塞状态变为就绪状态
DMA方式
- 引起中断,执行中断服务(注意:计算机系统组成不相同时中断号设置的中断服务可能不同,例如采用DMA的会有总线权限转交,没有的则不会)——执行DMA传输的预处理:给控制单元(实际上DMA可完成不经过CPU传数据的最重要原因就是有独立控制单元)指明是输入还是输出、给DMA中的DAR(设备地址寄存器)输入设备号、给DMA中的AR(主存地址寄存器)输入交换数据的起始主存地址、给DMA中的WC(字计数器)输入交换数据的个数,然后将内存总线控制权转交给DMA,再执行和非DMA第一步一样的中断服务
- DMA获得控制权后进行特殊的数据传送方式,数据直接到内存相应位置
- 传送完成后,通过DMA中断机构向CPU输送信号,产生中断,中断服务——停止A,CPU重新取得内存总线控制权,并将B由阻塞状态变为就绪状态
以上操作完成后调用处理机调度程序(仍属于中断后的服务——运行于管态),通过调度算法选择新进程A或B运行