logo

您所在位置网站首页 > 海量文档  > 专业论文 > 教育论文

Linux中与信号.ppt 10页

本文档一共被下载: ,您可全文免费在线阅读后下载本文档。

  • 支付并下载
  • 收藏该文档
  • 百度一下本文档
  • 修改文档简介
全屏预览

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
特别说明: 下载前务必先预览,自己验证一下是不是你要下载的文档。
  • 上传作者 开心果(上传创作收益人)
  • 发布时间:2018-07-11
  • 需要金币100(10金币=人民币1元)
  • 浏览人气
  • 下载次数
  • 收藏次数
  • 文件大小:628.5 KB
下载过该文档的会员
你可能关注的文档:
xlanchen@2007.10.25 Linux OS analysis Linux操作系统分析 中国科学技术大学计算机系 陈香兰(0512 xlanchen@ustc.edu.cn 助教:裴建国、冯晓静 Autumn 2008 Linux中的信号 中国科学技术大学计算机系 陈香兰(0512 xlanchen@ustc.edu.cn 助教:裴建国、冯晓静 Autumn 2008 信号 信号在最早的Unix系统中就已经被引入了,用于在用户态进程间通信。 内核也用信号通知进程系统所发生的事情 信号 信号是很短的消息 标准信号 标准信号没有给参数、消息或是其他相随的信息留有空间 通常使用一个数字来标识一个信号 信号可以被发送到一个进程或一组进程。 软件中断的概念 信号的产生和处理方式跟中断有些相似 信号是典型的异步事件(当然也有一些事件是同步错误或异常) 大多数产生信号的事件对进程而言是随机出现 进程不可能做轮询来测试某个标志位或者变量来判别是否发生了一个信号,而是必须告诉内核“在某个信号发生时,应该执行如下操作”,这点跟中断处理例程相似,所以也不难理解标准信号不带参数或者是其他的信息 跟硬件中断一样,任何动作,包括终止进程,都只能由接收到信号的进程来执行,也就是在本进程的上下文中执行 信号的作用 使用信号的两个主要目的是: 让进程知道已经发生了一个特定的事件 强迫进程执行它自己代码中的信号处理程序 很多应用程序提供自己的信号处理程序 系统也会定义一些缺省的信号处理程序 信号的生成 异常 当一个进程出现异常(比如试图执行一个非法指令,除0,浮点溢出等),内核通过向进程发送一个信号来通知进程异常的发生 其他进程 一个进程可以通过kill或是sigsend系统调用向另一个进程或一个进出组发送信号。一个进程也可以向自身发送信号 终端 某些键盘字符如ctrl+c等会向终端的前台进程发送信号 作业控制 发送信号给那些想要读或写终端的后台进程。比如shell使用信号来管理前台和后台进程 配额限制 当一个进程使用超过分配给它的cpu时间或是文件大小的限制,内核发送一个信号给这个进程 通知 一个进程也许要求能被通知某些事件的发生。比如设备已经就绪等待I/O操作 闹钟 定时器产生的信号,由内核发送给进程 Linux/i386中的部分信号 信号举例: “Ctrl+c”组合键 假设用户在console下按下ctrl+c,这将产生终端中断 tty驱动程序能识别出这个组合键,并向自己的前台进程发送一个SIGINT信号。 当对应进程被调度执行时,它将在上下文切换返回到用户态时检查到这个信号。 此外,通常前台进程就是被ctrl+c中断的current进程。当进程从中断返回时,也会检查到这个信号。 检查到信号后,系统就会让进程执行相应的动作。 信号举例:异常 前面讲过,异常也是通过信号来实现的。 当程序发生除0错误或是有非法指令时,将引起一个内核态的trap。 内核trap处理程序识别出这个异常并发送合适的信号到当前进程。 当trap处理程序将要返回到用户态时,会检查并发现信号,进程可能就会被终止。 与信号相关的系统调用 信号传递的两个不同阶段 信号产生 内核更新进程描述符中跟信号相关的数据结构来表示一个信号被发送给了这个进程 信号传递 内核强迫目标进程通过以下方式对信号作出反映: 或改变目标进程的执行状态, 或开始执行一个特定的信号处理程序, 或者两者都是 挂起信号 已经产生但还没有传递的信号称为挂起信号。 任何时候,一个进程仅存在给定类型的一个挂起信号,同一进程同种类型的其他信号不被排队,只被简单的丢弃。 信号的挂起时间长度往往不可预知,原因在于: 信号通常只被current进程传递 进程可以选择阻塞某种信号。这种情况下,在取消阻塞之前进程将不接收这个信号 当进程执行一个信号处理程序函数时,通常屏蔽相应的信号,即自动阻塞这个信号直到处理程序结束。因此,所处理的信号的另一次出现不能中断信号处理程序 信号的应答方式和响应时机 进程以三种方式对一个信号做出应答 1,显式的忽略这个信号 多数信号都可以使用这种方式进行处理。 2,执行系统默认的缺省操作,可以是: Terminate:进程被杀死 Dump:进程被杀死,且如果可能,创建包含进程上下文的可用于调试的core文件 Ignore:简单的忽略信号 Stop:进程被停止,状态置为TASK_STOPPED Continue:如果进程被挂起,则状态置为TASK_RUNNING。否则忽略该信号 3,捕获信号 为了执行用户希望的对某个事件的处理,可以由用户指定某个信号的处理函数。 信号的应答方式和响应时机 注意1:阻塞≠忽略 阻塞仅仅推迟了传递的

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片

“原创力文档”前称为“文档投稿赚钱网”,本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。原创力文档是网络服务平台方,若您的权利被侵害,侵权客服QQ:3005833200 电话:19940600175 欢迎举报,上传者QQ群:784321556