学习笔记9

教材知识点总结

  1. 信号和中断

    • 信号是一种异步事件通知机制,类似于软件中断,用于通知进程发生了某种事件。
    • 与硬件中断不同,信号是由内核向进程发送的,而不是由硬件设备触发的。
  2. Unix/Linux中的信号处理

    • 信号类型:Unix/Linux系统支持多种类型的信号,例如SIGINT(终端中断)、SIGSEGV(段错误)、SIGALRM(定时器超时)等。
    • 信号的来源:信号可以由内核、其他进程或进程自身发送。
    • 进程PROC结构体中的信号:进程的信号相关信息保存在其对应的PROC结构体中,包括信号处理函数、信号屏蔽字等。
    • 信号处理函数:可以是系统默认的处理函数,也可以是用户自定义的处理函数。
    • 安装信号捕捉函数:将自定义的信号处理函数与特定的信号关联起来,以便在接收到该信号时执行相应的处理函数。
  3. 信号处理步骤

    • 接收信号:当发生了某种事件时,内核会向进程发送相应的信号。
    • 信号排队:同一种信号在短时间内多次发生时,会被排队,直到处理完前一个同种信号后才会处理下一个。
    • 信号处理:进程根据信号的类型和当前状态执行相应的处理动作。
  4. 信号与异常

    • 信号可以被看作是一种异常情况的通知,例如进程的非法访问、除零操作等都会导致信号的发送。
    • 信号处理函数可以用来处理这些异常情况,使得进程能够在异常发生时进行适当的处理而不会导致程序崩溃。
  5. 信号用作IPC

    • 信号也可以用作进程间通信的一种方式,通过发送特定的信号来通知其他进程发生了某种事件。
    • 但是信号的使用受到一定的限制,因为信号的发送和接收是不可靠的,无法保证信号一定会被接收到。
  6. Linux中的IPC

    • 管道和FIFO:用于实现单向或双向的进程间通信。
    • 信号:可以用于进程间通信,但是受到一定的限制。
    • System V IPC:包括消息队列、共享内存和信号量,提供了一种可靠的进程间通信机制。
    • POSIX消息队列:提供了一种可靠的消息传递机制,克服了信号的不可靠性。
    • 线程同步机制:包括互斥锁、条件变量等,用于实现线程间的同步和通信。
    • 套接字:用于实现不同主机或同一主机上不同进程间的通信。

拓展知识点:

  1. 信号量和共享内存:与System V IPC相关的进程间通信机制,可以用于实现进程间的同步和互斥。

  2. 进程间通信的性能比较:不同的进程间通信方式在性能上有所差异,可以根据实际需求选择合适的通信方式。

  3. 信号处理的最佳实践:在实际编程中,需要注意信号处理的最佳实践,包括信号的安全处理、信号的屏蔽和解除屏蔽等。

  4. Linux中的异步IO:与信号处理相关的另一个重要知识点,可以实现非阻塞的IO操作。

  5. Linux中的事件驱动编程:利用信号和信号处理实现事件驱动的编程模型,是一种高效的编程方式。

苏格拉底挑战

image
image
image
image
image
image

实践

image
image

posted @ 2023-11-11 10:45  20211304王琛凯  阅读(9)  评论(0编辑  收藏  举报