OS的中断、异常、系统调用

本文详细介绍了操作系统启动流程中的中断、异常和系统调用概念。中断通常由硬件触发,如磁盘操作完成后的通知,是异步的。异常由程序触发,如0除错误,可能是同步的。系统调用则是应用程序请求OS服务的方式。用户态和内核态决定了CPU能否执行特权指令。系统调用与函数调用主要区别在于是否涉及内核堆栈和特权级的切换,系统调用有额外的安全验证和参数复制开销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OS启动流程

在这里插入图片描述

中断、异常、系统调用

在这里插入图片描述

  • 中断:

由外设或硬件触发,如read系统调用后,系统发出读磁盘的操作,当磁盘数据准备好后,向OS发出一个异步通知消息,即中断。一般来说,中断是异步的方式。

  1. 具体某个的中断会有一个中断ID,比如1号中断,10号中断,这是OS识别具体产生了哪个中断的标识。
  2. 而在应用程序部分(或者说软件部分),程序会保存中断发生前一时刻的执行现场,主要是保存一些寄存器中的值,然后去转到中断的服务例程执行中断,
  3. 然后OS再恢复之前保存的处理状态,就好像应用程序不知道中间某处发生了中断,所以说,中断是对应用程序透明的
  • 异常:由应用程序触发,是一种非预期的事件,如0除事件。

异常和中断有点类似又有本质区别,本质区别就是触发的对象不同,异常是由应用程序触发的,中断是由外设触发的。一般来说,异常是同步的方式。

  1. 同样,某个具体的异常也有异常编号ID,异常产生的前一刻也会保存异常现场,然后转到异常处理,
  2. 处理的时候和中断服务例程不太一样,有可能是因为因为应用程序本身的错误(如出现了0除事件),这样一来,OS怎么也不可能解决异常,于是会将该异常的程序kill掉;还有一种情况就是由于OS本身的问题,导致某些应该正常执行的程序发生了异常,OS会尝试解决异常,并重新执行产生异常的指令(也就是我们的应用程序啦)。
  3. 恢复现场
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值