C 软实时Linux调度
我有一个软实时要求的项目。我有两个进程(我编写的程序)来进行数据采集。在任何一种情况下,我都需要不断地读入数据并对其进行处理 第一个程序是线程化的,第二个程序使用了一个应该线程化的库,但我不知道引擎盖下到底发生了什么。每个程序都由用户执行(默认情况下),我看到每个程序的优先级为20,值为0。每个程序使用大约30%的CPU 目前,这两个进程都必须与一些后台进程竞争,我想让我的两个程序尽可能在CPU上发挥最大的作用。我的主要问题是,我有一个与我交谈的设备,它有一个64字节的硬件缓冲区,如果我没有及时从中读取,我会得到一个溢出。我注意到这种情况每2-3小时运行一次 根据我的研究()似乎有三种方法可以左右优先级:C 软实时Linux调度,c,linux,embedded,real-time,rtos,C,Linux,Embedded,Real Time,Rtos,我有一个软实时要求的项目。我有两个进程(我编写的程序)来进行数据采集。在任何一种情况下,我都需要不断地读入数据并对其进行处理 第一个程序是线程化的,第二个程序使用了一个应该线程化的库,但我不知道引擎盖下到底发生了什么。每个程序都由用户执行(默认情况下),我看到每个程序的优先级为20,值为0。每个程序使用大约30%的CPU 目前,这两个进程都必须与一些后台进程竞争,我想让我的两个程序尽可能在CPU上发挥最大的作用。我的主要问题是,我有一个与我交谈的设备,它有一个64字节的硬件缓冲区,如果我没有及时
pthread\u create
时它的线程属性(例如/)被指示执行其他操作
(3) 因为你现在不知道是什么原因导致了它,所以公平地说,任何人都很难保证。64字节的硬件缓冲区应该不重要,因为驱动程序应该有更多的缓冲区空间。如何与驱动程序通信?芯片本身是一个i2c到uart的桥接器,只能保存64字节的uart数据。目前,我正在通过打开/dev/i2c文件不断轮询芯片。据我所知,目前还没有更好的驱动程序可用,我正处于时间紧迫的情况下,没有时间把更好的东西放在一起。最高优先级的阻塞读取不够快?对于99%的情况来说是这样,但我每两个小时就有一个FIFO溢出。实际上,我已经将我的程序的nice级别提高到-20,我还没有看到任何问题,但是可能需要更多的测试。我知道我正在做的I/O工作相当于用止痛药治疗脑瘤,但看起来它成功了。