中断

   Linux的中断宏观分为两种:软中断和硬中断。声明一下,这里的软和硬的意思是指和软件相关以及和硬件相关,而不是软件实现的中断或硬件实现的中断。软中断就是“信号机制”。软中断不是软件中断。Linux通过信号来产生对进程的各种中断操作,我们现在知道的信号共有31个,其具体内容这里略过。
  一般来说,软中断是由内核机制的触发事件引起的(例如进程运行超时),但是不可忽视有大量的软中断也是由于和硬件有关的中断引起的,例如当打印机端口产生一个硬件中断时,会通知和硬件相关的硬中断,硬中断就会产生一个软中断并送到操作系统内核里,这样内核就会根据这个软中断唤醒睡眠在打印机任务队列中的处理进程。
  硬中断就是通常意义上的“中断处理程序”,它是直接处理由硬件发过来的中断信号的。当硬中断收到它应当处理的中断信号以后,就回去自己驱动的设备上去看看设备的状态寄存器以了解发生了什么事情,并进行相应的操作。
  软中断是进程调度里要考虑的事情。硬中断讨论的是设备驱动程序的中断问题。

有硬件中断和软件中断之分 今天看过的

dos调用是以软中断的形式实现的
所以任何的dos调用你需要通过例如int 21h这样的句子来实现
具体的情况可以baidu之

通俗的讲,

对于硬件设计者来说,中断可以分为内中断和外中断,不过基本上本质应该没有什么区别。
对于软件设计者来说,中断可以分为硬中断和软中断,本质上也没有什么区别,只是发起者不同而已,硬件机制几乎一样。
硬中断就是硬件信号触发的中断,比如鼠标键盘的活动,软件人员写好中断服务例程,然后挂到中断向量表上就可以用了。
软中断就是由程序代码指挥CPU给CPU自己发出的中断,这类中断主要是为了给不同软件之间建立数据沟通的桥梁,比如在DOS下,应用程序触发软中断,然后从DOS所提供中断服务例程那里获得它想需要的信息,比如memory map (int 15h ax=e820h)等。

上面cook503 所说的软中断其实是软件工程里面的东东,和硬件搭不上边。楼主说的和DOS有关中断那肯定是硬件有关的中断。大家不要弄混淆了哦。

上面cook503 说的中断比较具体。中断要分清软硬中断类型。

上面老兄已经说的很明白了: 

中断有两种:硬件中断和软件中断。 
硬件中断是由硬件通过控制总线发送到CPU的,具体工作原理请参阅计算机原理一类的教材。 

汇编语言程序设计中用的INT指令,是软件中断指令。 
INT 中断指令执行分为两步: 
1. 断点现场入栈(PSW,CS,IP) 
2. 根据中断号获得中断向量(即中断服务子程序的入口地址),并转向此向量给出的地址运行。 

IRET 中断返回指令则是恢复断点现场(人栈中弹出三个字分别送IP,CS,PSW) 

对比CALL与RET指令,你会发现它们的相似之处。 

软件中断,其实是另一种子程序调用的方式。 
使用软件中断,可以让用户程序使用系统提供的软件资源(即各种已编制好的功能性子程序)。 
如果这些子程序是放在BIOS ROM中的,就是BIOS中断。如果这些功能是内存里的DOS操作系统提供的,就是DOS系统功能调用。 
这就是软件中断的作用。 

如果一定要说软件中断有什么意义,可以认为是它比子程序调用指令CALL有更大的灵活性。 

你上面的表述说“调用完dos功能后要中断”是错误的。 
不是调用完DOS功能后才中断,而是中断指令INT 21H才是去调用DOS功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值