操作系统的中断、异常和系统调用
温习一下,从学堂在线学习到关于《操作系统的中断、异常和系统调用》的知识。这门课是清华大学向勇老师讲授的。向勇老师讲得比较接地气,通俗易懂。喜欢操作系统的朋友可以到该网站去注册一个账号,就可以看到课程内容了。网址:www.xuetangx.com
-----------------------------------------------------------------------------------------------------------------------------------------------------
本节操作的系统主要讲系统内核如何与外部设备和应用程序打交道的,这也是操作系统的主要功能:基于硬件设备之运行,为上层的应用程序提供系统服务。
通过本节的例子就可以很清楚地理解操作系统是如何在这两者之中运行。下面我就围绕这个图来讲解本部分的知识。
(一)从宏观上把握关键部分
在宏观上主要是包括三个部分的内容:
第一个是操作系统内核,是整个内容的核心;
第二个是外部设备,包括了输入输出设备,存储设备等。
第三个是应用程序,主要是由用户运用的程序。
(二)处理过程:主要是讨论双方之间的关系
1、操作系统与外部设备之间:主要通过中断机制来实现。
例如,在键盘在输出的时候,首先会把数据写到一个特定的缓冲区,这个缓冲区是有大小限制,如果数据超过其限制大小,先前数入的内容就会被冲掉,所以外部设备会通过中断机制,向内核发出指令,然后内核通过调用设备驱动程序,及时把缓冲区的内容读写到内核中。这样就达成了一个操作系统内核与外部设备进行数据交互的过程。
2、操作系统与上层应用程序:主要通过异常与系统调用两个机制来实现。
这里面可以分为两种情况来讨论,一种是应用程序异常运行程序的情况,另一种是应用程序正常运行的情况。
(1)异常的处理机制:例如在应用程序有一个程序片段,是一个除以零的代码,这显然是不合法的。在内核处理过程中,就会通过“异常服务例程"进行处理,捕获到异常的代码,然后抛出异常来即时处理,并返回异常处理结果。
(2)程序正常处理机制:这种情况是出现最多。当程序运行时,调用相关的函数库来获取系统调用接口,通过相关接口向存储设备或输入输出设备请求数据,然后在内核中处理应用程序,最后并把结果输出给用户或保存回存储设备。这个过程主要是依靠系统调用机制来实现。举个例子,银行储存着用户的钱,但是在用户取钱的时候,又不允许用户直接拿钥匙去开保险柜,所以需要对外提供一个服务的窗口。当用户需要拿钱的时候,就需要到柜台办理取钱业务,然后由柜台人员把钱取出来交给用户,此时的柜台人员就相当于系统调用接口,充当两者交流中心或处理中心的的中介作用。