操作系统——中断、异常和系统调用比较

我们首先要明确,为什么操作系统需要中断、异常和系统调用:

  • 在计算机运行时,内核是被信任的第三方
  • 只有内核才可以执行特权指令
  • 方便应用程序

接下来我们先简单了解一下三者的概念:


系统调用(system call)

       
应用程序主动向操作系统发出的服务请求

异常(exception)

       
非法指令或者其他原因导致当前指令执行失败   (如:内存出错)后的处理请求

中断(hardware interrupt)

       
来自硬件设备的处理请求

下面我们先看一下这张图(内核的进入和退出图),方便对后面的概念进行理解

现在,正式开始从如下几个方面对三者进行比较:

    源头

中断:外设引起

异常:应用程序意想不到的行为

系统调用:应用程序请求操作系统提供服务

    响应方式

中断:异步

异常:同步

系统调用:异步或同步

ps:关于同步和异步,我昨天的文章中有过介绍

    处理机制

中断:持续,对用户应用程序是透明的

异常:杀死或者重新执行意想不到的应用程序指令

系统调用:等待和持续

接下来我们详细介绍一些中断的处理机制,处理机制包括硬件处理和软件处理

    硬件处理

依据内部或者外部事件设置中断标志,然后依据中断向量调用相应的中断服务例程。

    软件处理

首先进行现场保存(由编译器完成),然后进行中断服务处理(中断服务例程完成),接着清除中断标记(中断服务例程),最后进行现场恢复(编译器)。



版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-03 22:02:09

操作系统——中断、异常和系统调用比较的相关文章

中断、异常和系统调用

所谓中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保留现场后自动地转去执行相应的处理程序,处理完该事件后再返回断点继续执行被"打断"的程序. 中断可分为三类,第一类是由CPU外部引起的,称作中断,如I/O中断.时钟中断.控制台中断等.第二类是来自CPU的内部事件或程序执行中的事件引起的过程,称作异常,如由于CPU本身故障(电源电压低于105V或频率在47-63Hz之外).程序故障(非法操作码.地址越界.浮点溢出等)等引起的过程. 第三类由于在程序中使用了请

操作系统的中断、异常和系统调用

温习一下,从学堂在线学习到关于<操作系统的中断.异常和系统调用>的知识.这门课是清华大学向勇老师讲授的.向勇老师讲得比较接地气,通俗易懂.喜欢操作系统的朋友可以到该网站去注册一个账号,就可以看到课程内容了.网址:www.xuetangx.com ------------------------------------------------------------------------------------------------------------------------------

interrupts &amp; exceptions中断异常

中断分为同步和异步: 同步中断是指当指令时由cpu控制单元产生的,因为只有在一条指令终止执行后CPU才会产生中断:我们称为异常 异常由程序错误产生,此时会发送一个信号处理异常,或者由内核必须处理的异常条件产生此时比如缺页或者 对内核服务请求(int 或者 sysenter指令) : 异步中断是指由其他硬件设备和定时器产生的中断信号:我们称为中断 每个进程的thread_info 描述符与thread_union 中内核栈紧邻,如果thread_union 结构大小为8KB.那么当前进程的内核栈被

操作系统概念学习笔记 6 系统调用

操作系统概念学习笔记 6 系统调用 系统调用 系统调用(system call),通常用c或c++编写,对底层任务(如需直接访问硬件)可能以汇编语言指令的形式提供. 一个系统调用的例子: 编写一个从一个文件读取数据并复制到另一个文件的简单程序,则需要以下系统调用序列: 获取输入文件名: 屏幕输入提示 接收输入 获取输出文件名: 屏幕输入提示 接收输入 打开输入文件: 如果文件不存在,放弃 loop: 读取输入文件 写入输出文件 直到读取失败 关闭输出文件 将完成信息输出到屏幕 正常结束 然而,

信号中断与慢系统调用

Slow system call 该术语适用于那些可能永远阻塞的系统调用.永远阻塞的系统调用是指调用永远无法返回,多数网络支持函数都属于这一类.如:若没有客户连接到服务器上,那么服务器的accept调用就会一直阻塞. 慢系统调用可以被永久阻塞,包括以下几个类别: (1)读写‘慢’设备(包括pipe,终端设备,网络连接等).读时,数据不存在,需要等待:写时,缓冲区满或其他原因,需要等待.读写磁盘文件一般不会阻塞. (2)当打开某些特殊文件时,需要等待某些条件,才能打开.例如:打开中断设备时,需要等

关于信号中断与慢系统调用的深度发现

这段时间在看Unix网络编程卷1,在5.9节处理SIGCHLD信号,关于处理僵死进程第四步如下写道:信号是在父进程阻塞于慢系统调用(accept)时由父进程捕获的,内核就会使慢系统调用(accept)返回一个EINTR错误. 看到上面那段落的时候,想到我前段时间写网络服务器遇到的问题,链接地址:http://bbs.csdn.net/topics/391032981,其实里面也有我关于这方面问题的困惑. 总结一下我论坛的那个问题,其实我无论如何是不能通过信号中断,测试epoll_wait出错er

中断,异常和系统调用

系统调用:应用程序主动向操作系统发出的服务请求.(异步或同步) 异常:非法指令或其他原因导致当前指令执行失败后的处理请求.(同步) 中断:来自硬件设备的处理请求.(异步) 中断处理机制: 1.CPU初始化 中断使能, 即设置不同中断所对应的处理过程. 2.硬件:设置中断标志,一句中断向量调用相应中断服务例程(在中断向量表里查,然后调用异常服务例程或系统调用服务例程或中断服务例程) 3.软件:现场保存(编译器的工作) 中断服务处理(由上述工作相应的服务例程进行处理) 清除中断标记(服务例程) 现场

os之中断,异常,系统调用

计算机系统加载过程: bios:基本io系统调用 disk:os存放在disk上 bootloader:将os加载到内存中去 计算机打开电源后,bios对计算机进行基本的检测(比如显卡,声卡,外设等),接着会找到磁盘里的BootLoader程序并执行BootLoader程序,BootLoader会将位于disk的os加载到内存中去: 1.首先中断是外设需要操作系统的支持,从而给出标记,CPU执行到这个标记的时候发现他是一个中断标记,根据这个标记查找到具体的中断服务例程,并执行,处理完以后再回到原

中断 异常

8086/8088把中断分为内部中断和外部中断两大类. 为了支持多任务和虚拟存储器等功能,80386把外部中断称为“中断”,把内部中断称为“异常”. 与8086/8088一样,80386通常在两条指令之间响应中断或异常. 80386最多处理256种中断或异常. 1.中断 对80386而言,中断是由异步的外部事件引起的. 外部事件及中断响应与正执行 的指令没有关系. 通常,中断用于指示I/O设备的一次操作已完成. 与8086/8088一样,80386有两根引脚INTR和NMI接受外部中断请求信号.