基于微内核的操作系统中信号的处理

上传人:wm****3 文档编号:47217076 上传时间:2018-06-30 格式:PDF 页数:4 大小:2.41MB
返回 下载 相关 举报
基于微内核的操作系统中信号的处理_第1页
第1页 / 共4页
基于微内核的操作系统中信号的处理_第2页
第2页 / 共4页
基于微内核的操作系统中信号的处理_第3页
第3页 / 共4页
基于微内核的操作系统中信号的处理_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于微内核的操作系统中信号的处理》由会员分享,可在线阅读,更多相关《基于微内核的操作系统中信号的处理(4页珍藏版)》请在金锄头文库上搜索。

1、计算机科学?华?基于微内核的操作系统中信号的处理李新明李艺?国防科工委指挥技术学院北京 ? ? ? ?摘要? ? ? ? ?伴? ?邓? ? ? ? ? ? ?,? ? ? ? ? ? ? ? 一? ? ? ? ? ? ?,? ? ? ? ? ? ? ?,? ? ? ? ? ?,?,? ? 玉? ?一? ? ? ? ?关镇词?,? ?,? ? ?,? ? ?,?价?随着计算机技术的发展,传统的大内核结构的操作系统面临功能越来越多,内核日益 庞大,复杂,可扩 充性越来越差的问题。徽内核技术以其小巧,可移植性好,可 扩充性好等优点已经 成为 操作系统发展道路上的一个主流方向?在微内核结构的操 作系

2、统中,由徽内核提供与特定 的操作系统 无关的墓本功能。传统操作系统如? ?的功能以服务器的形式在微内核外完成?本文 介绍在这 种结构下处理? ?信号的一种机制,该机制已在新一代国产操作系统? ? ? ?。中实现?安全等主要在这些服 务器中实现。?动态映射库?简称?。在系统态下运行?设计?的 动机是为了能与特 定的操作系统的? ?界面兼容。?被映射到每个用户进程的系统态空间。? ? ?。的结构如图?所示?进程?进程?用户态?。?系统态?一、?概述新一代国产操作系统? ?是基于徽内核 的,采用服 务器和多 态 结构?其? ?界面遵循? ?国际标准,并与? ? ?二进制兼容。在? ? ?中,任务的地

3、址空 间 被划分为核心态,系统态和用 户态。应用程序 在用户态下运行。? ?主要 由下述几个部分组成?微 内核。在核心态下运行。向核外提供一些基本的抽象,包括?任务、线程、存储对象、端口和消息?其 中任务是资原分配单 位,线程则是?调度的单位,存储对象用以描述任务的存储空间,端口和消息则用于实现任务 间通信。?墓本服务器。在系统态 下运行?为专用服务器等提供支持。?专用服务器。在系统态下运行。包括进程管理服务器?简称?,文件系统服务器?简称?,设备管理 服 务器?简称? ?,审计 服务 器?简称? ?等。传统操作系统的功能如信号,文件 系统,?绷?墓本服务器?核心态?徽内核图? ? ! #%系

4、统结 构通常,在这种结构下,应用程序通过系统调用获取系统服务的过程如下: 陷入微内核.在微内核中,保存 一些状态,然后重定向到DML中。如果有必 要,则向服务器发送消息,执行系统调用的功能。服务器执 行完后,发送回答消息给DML。DML将结果返回给应用程序。顺便说明一点,典型的微 内核结构的操作系统如MA c H或O sF/ 1为两态结构,采用 仿真库 来实现。这种方法,在系统的安全性、资深的管理上都存在一些很严重的缺陷。比如,在DML与服 务器共享, 铃吸数据不会给系统带来致命的问题,但服务器 则难以把仿真库作为一个“真正可信”的部分来对待。二、UNIx系统的信号机制在U N IX系统中,信

5、号是u Ni x系统中的一种进程间通信机制,是对一个 事件的异步 通知.当一个长程序运行时,如果发现了错误,用户想终止它的执行,或内核检查出程序正在执行非法指令或出现其它异常情况;或想暂停一个程序的执行;或想使暂停的程序继续执行;或两个进程间要传送软 中断进行某些同步控制,等等情况,均可以通过信号来实现。信号常常 用于处理非正常情况.依照POs IX标准,并参照U N IX SV R4.o, COSI XVZ. o共提 供32种信号.2.,信号的产生当与某个信号相关 的事件发生时,就产 生了该信号。信号产生的时机主要有以下几 种: 异常当程序发生 异常时,将生成相应 的信号.如当执行非法指令时

6、产生SI G I LL信号;当出现算术异常时产生S IG FPE信号;当出现访间地址违章时产生SI GSE G V信号;当调用一 个错误的 系统调用时产生SI GS Y S信号;当写 一个没有读进程的管道时产生s IGP IPE信号;当电源掉电时产生SI G-PWR信号等.终端活动在系统运行过程中,对终端的某些操作也会导致信号的产生,其中大多数与作业控制相关。如切断一个终端将对以该终端为控制 终端的所有进程产生 S IG H U P信号;当用户在终端 上按下中断键或退 出键后,分 别 产生 s IG INT或S IGQU IT信号;当后 台进程想从终端输入或输出时产生SIG T T IN或SI

7、G TTO U信号;当用户 按暂停健时产生 s IGT sT P信号;当再按恢 复健时可对被暂停的进程产生s IG CO N T信号,等等。计时器超时用户可以用:la r m系统调用对本进程设置 超时警告闹钟.当计时 器到达所设 置的超时时限时,将产生 S IG A L RM信号.进 程终止当一个进程终止时,产 生SIG C HL D信号,通 知父进程。由此实现exit和wait系统对僵死子进程的处理。用户发送. 用户可以调用k i n或s ig s e nd等系统调用 向指定的进程发送信号,如发送S IG KI LL信号给出现错误的正运行程序;进程之间通过发送信号进 行同步控制等.2.2传统

8、的大内核处理信号的时机信号是以异步方式处理的,即一个信号产 生后,系统将该信号设置到目标进程的 P r o c结构中,但该目标进程并不能立即处理它,或者说不能立即位测到有信号,这之间有一段时 间,而用户不能确定这段时间的长短,在U NI x系统中,通常在以下三种情况下检测信号:系统调用返回前。当用户进程调用任何一个系统调用 后,在系统调用处理完成返回用户态之前,都要检查 当前进程是否有信号要处理.外部设备中断或异常返回前.当系统发生外部设备中断或异常后,系统在 中断或异常服务程序处理完成后,在返回用户程序之前的系统公共出口处,要检查当前进程是否 有要处理的信号. 时钟中断发生时。在U N IX

9、系统中,在每一个最 小计时单位里都将发生时 钟中断,处理和时钟相关事件,在 时钟中断返回前,要 检查当前进程是否有信号要处理.这几个时机的选择可以保证:任何进程都能“及时”地检测到发送给它的信号而进行处理。2.3信号的处理动作信号被检测到后,将 根据信号所设置的动作进行相应的处理,与信号相关的动作分为三种:默认动作U N IX系统对每一个信号都规定了进 程创建时相应的默认动作,默认 动作有以下几种:将进程终止,这 类 信号如 s IGK IL L,s IG-PI PE, SIGI NT等。将 进 程现场进 行核心 转贮,生 成co re文 件后,终止进程。这类信号 如SIGQUIT, SI G

10、ILL,SI GFPE,SIGSEGV,SIGSYS等。不进行任何处理,忽略该 信号.这类 信号如SIG CL D, SI GPWR等。将 进程暂停,这类 信号 如S IG STO P,s IGT-TIN, SI GTTOU等。如果当前进程处理暂停状态,则恢复进程执行,否 则忽略 该 信号,这 种 信号只有S IG C O N T一个。忽略信号可以将一个信号的动作设置为忽略或信号的默认动作是忽略 信号,则 该信号的发送对进 程没有任何影响。捕获信号用户可以自己定义一个函数,并设置为某一个信号的信号捕获函数,当信号被交付时,则执行该函数,该函数执行完成时,返回被中断的地方继续执行。 57除 S

11、IG KI LL和 S IG ST OP外,所有的信号都可以被屏蔽,进程检测到被 屏蔽 的信号时不做 任何处理,只有当该信号被解除屏蔽之后,才按信号的动作进行相应的处理。三、微内核结构下信号机制的设计与实现信号在单一内核中处理时,操作系统内核自己完成了信号的产生、发送和检测工作,并根据猫要采取相应的处理动作.但在基于微内核的操作系统中,这些活动不能 由微内核单独完 成,而必须由微内核、服务器和动态映射库共同完成。3.,信号的发送在2.1节中,我们介绍了产生信号的五种活动.在C OS IX V 2 .。中,这些信号的发送过程如下:对 必须转换为 信号的程序异常,首先由微内核捕获并做一些处理,然后

12、交给进程管理服务器.它根据异常 种类产生相应的信号后发送到目标进程。对产生信号的终端活动,由微内核捕获 并处理中断后,再交给设备服务器做进一步的处理,然后通知进程管理服务器。进程管理服务器将根据终端活动类型产生信号并发送给目标进程。对超时、进程终止 及用户通 过调用系统调用而发送的信号,由进程管理服 务器 直接产生并发送给目标进程。3.2信号的检测在大内核操作系统 中,需要由用户进程处理的信号总能被目标进程 检测到并加以处理,然而在基于徽 内核的操作系统 中,是否也是这样的呢?系统调用处理时。由于所有的系统调用都要经过DML处理,因此只要应用程序调用系统调用,就能在DML中检测到是否有信号要处

13、理.设备 中断和异常处理时。设备中断和异常处理是在微内核中捕获并由微内核或服务器而不是 由 DML来处理。因此,在目标进程的DML中不能检测到是否有要处理的信号,但在进程管理服务器中知道哪个目标进程有信号要处理。时钟中断处理时。时钟中断的所有处理都是在微 内核内部实现 的,所以不可能利用 时钟 中断来检测当前进程是否有信号要处理。从上面的分析可以看到:在微内核机制下,如果简单地借鉴UNi x系统 的信号机制,会发现信号俭测的时机不充分,如果一个用户程序 永远不调 用系统调用,它的信号就永远无法检测到。3.3主要实现策略58为在C OS IXv 2.。中实现U N IX信号机制,采用了下述策略:

14、在信号发送时对信号进行处理。分析信号产生的时机可知:在任何情况下,都是 由进程管理服务器来发送信号的,因此可以在信号发送时,对动作为默认或忽略的倩号直接处理,而不用再发送给目标进程。用伪系统调用 处理信号捕获。服务器在发送信号时,如果发现信号被捕获,则必须在目标进程的环境中运行捕获函数,这时,将根据目标进程的状态分别处理。如果 目标进程已在DML中运行,则可以只将信号设置到由服务器和DML共享 的数据结构P t a s k中,由目标进程从DML中退 出前,对信号进行捕获处理。如果进程在运行用户程序,它可能水远也不调用系统调用,而无法进入到DML中。因此这种情况下,服务器将修改目标进程的现场,仿

15、佛用户程序刚调用了一个系统调用而重定向到DML中,称之为 伪系统调用.伪系统调用的功能就是对信号进行处理后,从被中断的地方重新运行.用定时线程处理未能处理 的信号.通过上述两种策略的处理之后,大多数的信号已被处理,但如果同时发送了多个洽号,或信号发送时被屏蔽,但后来同时打开了多个等情况下,都可能有未 被处理的信号,为此在服务器中设计一个定时线程,将所有包括未被处理信 号的进程链在一起,该线程被定时唤醒,对链中的进程逐个处理其信号。用共享的方法处理信号结构。在UN Ix系统中,每个信号都 可能有对应的信号结构,其中包含信号的一些补充信息,如异 常地址、异常号、粗死 的子进程号等。用户可以在 信号捕获函数中访问该结构中的 内容, UNIX系统 中将所有的信号结 构链在一起,信号处理时

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号