实时编程

2023-10-20  本文已影响0人  谭英智

问题

在写一个us级别的系统,需要考虑什么因素

因素

线程

通过中断的方式处理线程,会让线程不断的从睡眠和唤醒来回,这些行为虽然可以提高CPU的使用率,在无事可做的时候,CPU可以休息。

但是对于实时系统,这些开销是非常可观的,会对程序的性能造成几十到上百微妙的延时

影响一个线程进入睡眠和唤醒的因素:

在实时系统的设计中,线程应该是一直running的状态

不允许线程切换出去

这样才可以在最大限度上,保证时延

上下文切换

上下文切换的开销包括:

造成上下文切换的因素有:

所以在设计时,system call和协程是不允许使用的

存储访问

内存分为:

数据从Disk获取,会造成ms级别的latency

CPU在处理RAM的数据时,应该尽量考虑数据的邻域性,分配内存时,在关键结构体,应当使用局部allocator,allocator需要做到预分配内存,并在程序运行过程中,不会发生任何的向系统申请内存和释放内存的操作

线程之间的数据共享

事件循环

上一篇 下一篇

猜你喜欢

热点阅读