13 - 信号可靠性剖析

---- 整理自狄泰软件唐佐林老师课程

查看所有文章链接:(更新中)Linux系统编程训练营 - 目录

1. 信号的可靠性

1.1 问题

  • 基于信号发送的进程间通信方式可靠吗???

1.2 信号查看(kill -l)

在这里插入图片描述

1.3 信号的分类

1.3.1 不可靠信号(传统信号)

  • 信号值在 [1, 31] 之间的所有信号

1.3.2 可靠信号(实时信号)

  • 信号值在[SIGRTMIN, SIGRTMAX],即: [34, 64]
    SIGRTMIN ==> 34
    SIGRTMAX ==> 64

1.3.3 信号小知识补充

  • 信号32与信号33(SIGCANCEL & SIGSETXID)被 NPTL线程库 征用
    • (征用意指被明确赋予了含义)
  • NPTL ==> Native Posix Threading Library
    • 即:POSIX线程标准库,Linux可以使用这个库进行多线程编程
  • 对于Linux内核,信号32是最小的可靠信号
  • SIGRTMIN在signal.h中定义,不同平台的linux可能不同(arm linux)

1.4 不可靠信号 vs 可靠信号

  • 不可靠信号
    • 内核 不保证 信号可以递送到目标进程(内核对信号状态进行标记)
    • 如果信号处于未决状态(从信号产生到信号被进程接收之间的状态),并且相同信号被发送,内核丢弃后续相同信号
    • 进程只知道一个不可靠信号是否递达,没有办法知道这个不可靠信号递达了几次

在这里插入图片描述

  • 可靠信号
    • 内核维护信号队列,未决信号位于队列中,因此 信号不会被丢弃
    • 严格意义上,信号队列 有上限,因此不能无限制保存可靠信号

1.5 一些注意事项

  • 不可靠信号的默认处理行为可能不同(忽略,结束)
  • 可靠信号的默认处理行为都是结束进程
  • 信号的可靠性由信号数值决定,与发送方式无关
  • 信号队列的上限可通过命令设置
    • 查询信号队列上限:ulimit -i
    • 设置信号队列上限:ulimit -i 10000

1.6 信号可靠性实验设计

  • 目标:验证信号可靠性(不可靠信号 or 可靠信号)
  • 方案:对目标进程“疯狂”发送N次信号,验证信号处理函数调用次数是怎么样的
  • 预备函数:
int sigaddset(sigset_t* set, int signum);
int sigdelset(sigset_t* set, int signum);
int sigfillset(sigset_t* set);
int sigemptyset(sigset_t* set);
int sigprocmask(int how, const sigset_t* set, sigset_t* oldset);

在这里插入图片描述

1.7 编程实验:信号可靠性实验

【参看链接】:13 - 信号可靠性剖析 / 13 / 00信号可靠性实验

在这里插入图片描述

  1. 不可靠信号

在这里插入图片描述

  1. 可靠信号

在这里插入图片描述

  1. ulimit

在这里插入图片描述
在这里插入图片描述

2. 基于信号的进程间通信实验

  • 发送端:A 进程将 TLV 类型的数据 通过可靠信号传递给B进程
    • TLV:(type, length, value)
    • 由于可靠信号的限制,每次传输 4字节数据
  • 接收端:B进程首先接收4字节数据(type或type+length)
    • 根据接收到的length信息,多次接收后续的字节数据
    • 每次只能接收4字节数据,设计层面需要进行 状态处理

2.1 状态设计

在这里插入图片描述

2.2 数据发送进程关键实现

在这里插入图片描述

2.3 数据接收进程关键实现

在这里插入图片描述

2.4 编程实验:进程间通信实验

【参看链接】:13 - 信号可靠性剖析 / 13 / 01进程间通信

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: JTAG信号完整性分析是指对JTAG接口的信号进行测试和分析,以确保信号传输的正确性和稳定性。JTAG(Joint Test Action Group)接口是一种用于测试和调试集成电路的标准接口。 在进行JTAG信号完整性分析时,首先需要对JTAG接口进行电气特性测试,目的是确保信号的电平符合要求并且没有噪声或干扰。这一过程通常包括测量信号的电压、电流、时钟频率等参数,并与规格要求进行比较。 其次,需要对JTAG信号进行时序分析,以确保信号的时序满足标准的要求。时序分析包括测量信号的上升时间、下降时间、保持时间等参数,并与规格要求进行比较。如果信号的时序不稳定或超出规格要求,可能会导致通信失败或测试结果不准确。 另外,还需要进行JTAG信号的连续性测试,以确保信号的连续传输没有断开或中断。这可以通过向JTAG接口发送测试模式,并检查接收到的响应来进行。如果发送的信号无法正确接收或响应不符合预期,可能表明信号传输存在问题,需要检查和排除故障。 最后,还需要进行JTAG信号的相互影响分析,以确保不同信号之间的相互关系符合要求。例如,时钟信号与数据信号之间的相位关系、速度匹配等。相互影响分析可以通过测量和比较不同信号之间的相关参数来进行,并进行校正和优化。 综上所述,JTAG信号完整性分析是对JTAG接口的信号进行测试和分析的过程,用于确保信号传输的正确性和稳定性,以保证JTAG测试和调试的可靠性。 ### 回答2: JTAG信号完整性分析是指对JTAG总线上信号进行测试和评估,以确保信号在传输过程中维持准确、稳定和可靠。 在进行JTAG信号完整性分析时,需要考虑以下几个方面: 1. 时序分析:对于JTAG信号而言,时序是非常关键的。需要对信号的时序进行分析,包括信号的上升沿、下降沿、保持时间等参数。通过时序分析,可以判断信号是否满足要求,并且可以优化信号的传输速率。 2. 电气特性分析:JTAG信号需要传输的距离较长,因此需要分析信号的电气特性,包括信号的失真、噪声、干扰等。通过电气特性分析,可以提供信号传输的参考参数,并且可以设计和布线更可靠的JTAG总线。 3. 驱动能力分析:JTAG信号需要被其他器件驱动或读取。因此需要对JTAG芯片的驱动能力进行分析,以评估其输出电流和输出电压是否能够满足目标器件的要求。 4. 信号完整性分析工具:在进行JTAG信号完整性分析时,可以借助一些特定的工具,如信号发生器、示波器和逻辑分析仪等。这些工具可以帮助我们观测和分析信号的稳定性、波形形状和传输效果,从而更好地评估信号的完整性。 综上所述,JTAG信号完整性分析是确保JTAG总线上信号传输的正确性和可靠性的重要步骤。通过时序分析、电气特性分析、驱动能力分析和使用专业工具,可以有效评估和优化JTAG信号的性能,提高系统的稳定性和可靠性

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uuxiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值