【发布时间】:2020-07-28 06:55:03
【问题描述】:
假设我将进程设置为可能的最高优先级并且没有交换...
从 RS232 串行端口接收时阻塞的线程唤醒的最长时间是多少?
我想知道线程是否会在 UART 中断到达内核后的几微秒内被唤醒,或者它是否必须等待 CPU 上的下一个 100 毫秒时间片。
【问题讨论】:
-
您的问题结构不佳。挂起并解除阻塞进程的是串行终端驱动程序,而不是 UART 驱动程序。规范与非规范模式是一个因素。该过程可能会永远阻塞等待 EOL。 “UART 中断命中内核” 考虑到中断生成和处理可以延迟,这是一个糟糕的参考。线路上的帧结束(即停止位)是一个更好的参考点。 “是否必须等待下一个 100 毫秒时间片...” -- 不,最高优先级的可运行进程在系统调用完成后获得控制权。
-
感谢您的评论(我只熟悉 ATMEGA 和 STM32 微控制器上的串行接口,因此我对术语的使用不佳)。如果您写下评论的最后两行作为答案,我会接受。
-
什么可以延迟中断的产生和处理?可以关掉还是加速? (我希望最大限度地减少接收到的停止位和来自高优先级用户空间线程的回复的开始位之间的 Linux 串行延迟。)
标签: linux serial-port interrupt blocking latency