中断
外部条件(硬件中断):
- 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子程序,拿出那些参数,展开变成一段内嵌的汇编代码。