学习笔记9

第6章 信号和信号处理

1. 信号和中断

1. 信号:

信号是操作系统中用于通知进程有突发事件发生的一种机制。信号可以由硬件或软件生成,用于中断进程的执行。信号的主要目的是让进程能够及时处理这些特殊事件,例如用户输入、硬件故障等。

信号的特点:

  • 异步性:信号可以在进程执行的任何时刻发生,进程无法预测何时会收到信号。

  • 不可屏蔽性:进程接收到信号后,必须立即处理,不能忽略或屏蔽信号。

  • 处理顺序性:多个信号可以同时到达进程,但进程只能按照接收顺序依次处理。

2. 中断:

中断是计算机在执行过程中,由于内部或外部事件而暂停当前程序,转去处理其他任务,处理完毕后再返回原程序继续执行的过程。中断机制使得计算机能够实现多任务处理和实时响应。

中断的特点:

  • 同步性:中断是由硬件或软件产生的,进程可以预测何时会收到中断。

  • 可屏蔽性:进程可以选择是否响应中断,例如操作系统可以选择屏蔽某些不重要的中断。

  • 非抢占性:在某些情况下,进程可以响应中断并处理,但不会导致当前执行的中断任务被抢占。

3. 在 Linux 系统中,信号和中断的关系如下:

  • 信号是一种用于通知进程的特殊事件,中断是处理这些事件的机制。

  • 信号可以由硬件或软件生成,中断是由硬件或软件产生的。

  • 信号处理是通过操作系统的中断处理程序来实现的,中断处理程序负责响应和处理中断请求。

  • 进程可以通过信号处理函数来处理接收到的信号,也可以通过设置信号掩码来决定是否响应特定信号。

2. Unix/Linux中的信号处理

1. 信号类型:

Unix/Linux 系统中的信号分为两类:

  • 硬件信号:由硬件事件引发,如键盘输入、硬件故障等。

  • 软件信号:由软件生成,如进程退出、时间片结束等。

2. 信号处理:

信号处理主要包括信号处理函数和信号掩码。

  • 信号处理函数:当进程接收到信号时,会被迫中断当前执行,转去执行信号处理函数。信号处理函数可以在进程中定义,用于处理接收到的信号。
  • 信号掩码:用于屏蔽特定信号,使进程在收到该信号时不会被中断。可以通过设置信号掩码来实现。

3. 信号处理机制:

在 Unix/Linux 系统中,信号处理机制主要包括以下几个步骤:

  • 信号生成:当某个事件发生时,如用户输入、进程退出等,会生成信号。

  • 信号传递:操作系统将生成的信号传递给进程。

  • 信号处理:进程接收到信号后,执行信号处理函数进行处理。

  • 信号恢复:进程在处理完信号后,恢复之前的执行状态。

4. 常用信号及其处理:

一些常见的信号及其处理方式如下:

  • SIGINT:中断信号,通常由用户按下 Ctrl+C 产生。进程可以选择捕获此信号并执行相应处理。

  • SIGTERM:终止信号,用于请求进程终止。进程接收到此信号后,应立即终止执行。

  • SIGKILL:强制终止信号,用于立即终止进程。进程无法响应此信号,只能等待被终止。

  • SIGSTOP:停止信号,用于暂停进程执行。进程接收到此信号后,应暂停执行,直至接收到 SIGCONT 信号后继续执行。

5. 信号处理注意事项:

  • 信号处理函数应在进程中定义,最好使用全局函数,以便于在不同文件中调用。

  • 信号处理函数应具有与信号处理相关的功能,如记录日志、清理资源等。

  • 避免在信号处理函数中执行长时间操作,以免阻塞其他信号处理。

  • 注意信号处理的顺序性,确保先处理较紧急的信号。

  • 使用信号掩码来屏蔽不重要的信号,以减少进程被中断的次数。

Linux中的IPC

1. IPC 概述:

IPC 是指在多个进程之间建立通信渠道,以便进程能够相互传递数据和信息。IPC 解决了进程之间的同步和通信问题,有助于提高系统的并发性能和性能。

2. IPC 方式:

Linux 系统中,主要有三种 IPC 方式:

  • 管道(Pipe):适用于具有亲缘关系的父子进程之间的通信。

  • 命名管道(Named Pipe,或 FIFO):适用于无亲缘关系的进程之间的通信。

  • 消息队列(Message Queue):适用于进程之间非实时通信,具有较高的传输速度和稳定性。

  • 信号(Signal):用于进程间的异步通信,主要用于通知进程有特殊事件发生。

  • 共享内存(Shared Memory):适用于高速、大容量的进程间通信。

  • 消息链(Message Chain):一种基于消息队列的通信方式,适用于多个进程之间的有序通信。

3. IPC 机制:

在 Linux 系统中,IPC 机制主要包括以下几个方面:

  • 进程标识:通过进程 ID(PID)来标识和区分不同进程。

  • 通信渠道:建立和管理进程之间的通信通道,如管道、消息队列等。

  • 同步机制:确保进程在访问共享资源时的互斥性和有序性,如互斥锁、信号量等。

  • 权限控制:管理进程之间的访问权限,防止未经授权的访问。

4. IPC 应用场景:

IPC 技术在以下场景中具有广泛应用:

  • 服务器程序:服务器程序需要与多个客户端进程通信,IPC 技术有助于实现高效、稳定的服务。

  • 协同工作:多个进程需要协同完成任务时,IPC 技术可以帮助进程之间高效地传递数据和信息。

  • 实时系统:在实时系统中,IPC 技术可以实现进程之间的快速通信,提高系统的响应速度。

5. IPC 编程注意事项:

  • 根据实际需求选择合适的 IPC 方式,综合考虑通信速度、可靠性和资源消耗等因素。

  • 在使用共享内存时,注意内存访问的同步和互斥问题,避免数据竞争和死锁。

  • 合理设置进程间的权限,确保 IPC 通信的安全性。

  • 注意 IPC 通信的性能优化,避免进程间通信成为系统性能瓶颈。

苏格拉底挑战
image

image

image

image

posted @ 2023-11-11 21:21  窦豆  阅读(37)  评论(0)    收藏  举报