Ctrl OS设计说明
- CPU抢占问题
- 问题:
系统任务调度核心使用协程进行处理,在处理CPU密集(大量数据运行)任务时,并不会主动出让CPU资源,会导致其他协程被饿死! - 解决
这个问题不是协程关心的问题,更不是协程应该解决的问题。使用协程的核心是不用关心临界区并且提高任务切换效率。
协程适合的是IO密集型任务,有大量任务需要等待IO数据,并且进行阻塞。在这种情况下CPU的占用率是很低的,主要时间是在IO等待上。
对于上述问题的解决方法是使用线程,线程和协程并不是互斥关系,在需要进行对低优先级、高CPU占用的情况更适合使用线程进行处理。
- 系统设计架构
该系统选择使用协程作为任务调度核心,那他必须也必须接受协程带来缺点:设计者必须保证在协程中不能大量占用CPU资源。
所以这也引出了这个系统的设计目的和设计要点:以IO作为系统处理核心,这里的IO包括物理设备、信号、文件等等。而任务是为IO服务的,它来处理IO的逻辑。
在系统设计中,大量的对象都是以IO类的一个子类。有这相同的属性和方法。