中断

在这里插入图片描述

中断
外部条件(硬件中断):

  • I/O设备(键盘打印机显示器)
  • 磁带、磁盘
  • 时钟
    内部中断:
  • 软件中断:执行有定义的INT n指令引发的中断。软件给的中断,做任何系统调用
    软中断是一些对I/O的请求。0x80中断信号都是软中断(软中断就是80中断)而80号对应的又有一堆函数,将近200多个
  • 异常:CPU本身故障、程序故障

过程:
系统调用:int 0x80(软件调用)或者sysenter原语
通过ax寄存器填入调用号

参数通过bx cx dx si di传入内核
返回值通过ax返回

java读网络–> jvm read() –> 库read() –> 内核空间 –> system_call() (系统调用处理函数)–> sys_read()

从汇编角度

Linux中,一切皆文件。用文件描述符fd来区分不同的介质。用int 类型的数据来区分键盘、屏幕、磁盘等。

将参数装入ebx,ecx,edx,在ezx中装入函数系统调用号(比如iwrite是4)。然后int 0x80,操作系统收到后,调用80子程序,拿出那些参数,展开变成一段内嵌的汇编代码。