登录 注册
当前位置:主页 > 资源下载 > 11 > 鸿鹄论坛上的华为认证h35-211-hcnp-access network题库讨论了中断系统调用的相关内容

鸿鹄论坛上的华为认证h35-211-hcnp-access network题库讨论了中断系统调用的相关内容

  • 更新:2024-11-05 11:26:56
  • 大小:18.16MB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:Unix - 操作系统
  • 格式:PDF

资源介绍

10.5 中断的系统调用 早期U N I X系统的一个特性是:如果在进程执行一个低速系统调用而阻塞期间捕捉到一个 信号,则该系统调用就被中断不再继续执行。该系统调用返回出错,其 e r r n o设置为E I N T R。这 样处理的理由是:因为一个信号发生了,进程捕捉到了它,这意味着已经发生了某种事情,所 以是个好机会应当唤醒阻塞的系统调用。 在这里,我们必须区分系统调用和函数。当捕捉到某个信号时,被中断的是 内核中执行的系统调用。 为了支持这种特性,将系统调用分成两类:低速系统调用和其他系统调用。低速系统调用 是可能会使进程永远阻塞的一类系统调用,它们包括: • 在读某些类型的文件时,如果数据并不存在则可能会使调用者永远阻塞(管道、终端设 备以及网络设备)。 • 在写这些类型的文件时,如果不能立即接受这些数据,则也可能会使调用者永远阻塞。 • 打开文件,在某种条件发生之前也可能会使调用者阻塞(例如,打开终端设备,它要等 待直到所连接的调制解调器回答了电话)。 • pause(按照定义,它使调用进程睡眠直至捕捉到一个信号 )和w a i t。 • 某种i o c t l操作。 • 某些进程间通信函数(见第1 4章)。 在这些低速系统调用中一个值得注意的例外是与磁盘 I / O有关的系统调用。虽然读、写一个磁 盘文件可能暂时阻塞调用者(在磁盘驱动程序将请求排入队列,然后在适当时间执行请求期间), 但是除非发生硬件错误, I / O操作总会很快返回,并使调用者不再处于阻塞状态。 可以用中断系统调用这种方法来处理的一种情况是:一个进程起动了读终端操作,而使用 该终端设备的用户却离开该终端很长时间。在这种情况下进程可能处于阻塞状态几个小时甚至 数天,除非系统停机,否则一直如此。 与被中断的系统调用相关的问题是必须用显式方法处理出错返回。典型的代码序列 (假定 第 1 0章 信 号 2 0 7 下载