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

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

-----------------------------------------------------------------------------------------------------------------------------------------------------

本节操作的系统主要讲系统内核如何与外部设备和应用程序打交道的,这也是操作系统的主要功能:基于硬件设备之运行,为上层的应用程序提供系统服务。

通过本节的例子就可以很清楚地理解操作系统是如何在这两者之中运行。下面我就围绕这个图来讲解本部分的知识。

(一)从宏观上把握关键部分

  在宏观上主要是包括三个部分的内容:

    第一个是操作系统内核,是整个内容的核心;

    第二个是外部设备,包括了输入输出设备,存储设备等。

    第三个是应用程序,主要是由用户运用的程序。

(二)处理过程:主要是讨论双方之间的关系

  1、操作系统与外部设备之间:主要通过中断机制来实现。

    例如,在键盘在输出的时候,首先会把数据写到一个特定的缓冲区,这个缓冲区是有大小限制,如果数据超过其限制大小,先前数入的内容就会被冲掉,所以外部设备会通过中断机制,向内核发出指令,然后内核通过调用设备驱动程序,及时把缓冲区的内容读写到内核中。这样就达成了一个操作系统内核与外部设备进行数据交互的过程。

  2、操作系统与上层应用程序:主要通过异常与系统调用两个机制来实现。

  这里面可以分为两种情况来讨论,一种是应用程序异常运行程序的情况,另一种是应用程序正常运行的情况。

  (1)异常的处理机制:例如在应用程序有一个程序片段,是一个除以零的代码,这显然是不合法的。在内核处理过程中,就会通过“异常服务例程"进行处理,捕获到异常的代码,然后抛出异常来即时处理,并返回异常处理结果。

  (2)程序正常处理机制:这种情况是出现最多。当程序运行时,调用相关的函数库来获取系统调用接口,通过相关接口向存储设备或输入输出设备请求数据,然后在内核中处理应用程序,最后并把结果输出给用户或保存回存储设备。这个过程主要是依靠系统调用机制来实现。举个例子,银行储存着用户的钱,但是在用户取钱的时候,又不允许用户直接拿钥匙去开保险柜,所以需要对外提供一个服务的窗口。当用户需要拿钱的时候,就需要到柜台办理取钱业务,然后由柜台人员把钱取出来交给用户,此时的柜台人员就相当于系统调用接口,充当两者交流中心或处理中心的的中介作用。

  

时间: 2024-08-24 14:15:25

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

中断、异常和系统调用

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

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

我们首先要明确,为什么操作系统需要中断.异常和系统调用: 在计算机运行时,内核是被信任的第三方 只有内核才可以执行特权指令 方便应用程序 接下来我们先简单了解一下三者的概念: 系统调用(system call)         应用程序主动向操作系统发出的服务请求 异常(exception)         非法指令或者其他原因导致当前指令执行失败   (如:内存出错)后的处理请求 中断(hardware interrupt)         来自硬件设备的处理请求 下面我们先看一下这张图(内核

interrupts & exceptions中断异常

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

信号中断与慢系统调用

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

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

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

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

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

中断,异常和系统调用

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

中断 异常

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

突如其来的“中断异常”,我(Java)该如何处理?

3.try-catch块 try语句块中代码执行时发生三种情况: try语句块中代码正常执行完毕,没有任何异常,那么catch语句块的代码将不会被执行. import java.util.*; public class Count { public static void main (String []args){ int a , b; Scanner read = new Scanner(System.in); try{ System.out.print("请输入a:"); a =