最容易理解的中断和异常

这里是我想到的最容易分辨中断和异常的案例。

现在正在开一场音乐选秀,有主持人和各位要演唱的歌手。

主持人(OS)和选手(1进程)想要让自己的声音被所有人听见,就必须要用话筒(CPU),且现场只有一个话筒(CPU),当选手(1进程)使用话筒(CPU)的时候,话筒是蓝色(OS处于用户态),当主持人(OS)使用话筒的时候,话筒是红色(核心态)。

​ 外中断: 现在每位歌手(1进程)有100秒(时间片)用话筒(用户态)歌唱时间,一旦到时间,现场的提示响(时钟中断)了,主持人(OS)会立即强行夺走歌手的话筒(CPU),话筒变成红色(核心态),并宣布下一位选手登场(中断程序),将话筒交给这位歌手(2进程),话筒由红色变为蓝色(核心态-->用户态)。以此往下推。这里的时钟中断是内中断(狭义中断)。

​ 内中断:如果选修进行中,某位选手(波澜哥,3号进程)唱的实在太难听了(出现异常),身为主持人的韩红(OS)听不下去了,立马夺回由蓝色(用户态)变成红色(核心态)的话筒(CPU),一脚将波澜哥踢出去(异常处理),再将红色(核心态)话筒(CPU)转交给下一个选手(4号进程),话筒变为蓝色(用户态)。这里难听的歌声就是异常,是进程自己出现的问题。

​ 从这里我们不难发现,异常是进程内部自己出现的问题,中断是外部发生的,例如时钟中断,IO中断等。且只有中断发生,用户态才能变为核心态。

​ 当然异常包括陷入,终止,故障。中断信号也对应不同的中断处理程序

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。