LegoOS:资源解聚合操作系统的设计与实现
1. 线程调度与执行
LegoOS采用独特的线程调度策略,使用部分核心(当前为2 - 4个)作为基础线程,其余核心用于应用线程。当新进程启动时,会通过全局策略为其选择一个pComponent。之后,进程产生的新线程会在同一pComponent上调度,选择线程数量最少的核心。在常见场景下,线程分配到核心后会一直运行到结束,不进行调度或内核抢占。例如,不使用网络中断,让线程在等待网络请求完成时忙等待,因为LegoOS中的网络请求速度很快,如从mComponent获取一个ExCache行大约只需6.5微秒。
这种调度方式提高了拆分式集群中处理器的整体利用率,因为可以在不考虑内存分配的情况下,自由地在任何pComponent上调度进程。并且在调度单个线程时,不追求完美的核心利用率,而是旨在最小化调度和上下文切换的性能开销。只有当pComponent需要调度的线程数量超过核心数量时,才会开始抢占核心上的线程。
2. ExCache管理
- 配置与策略 :LegoOS进程监视器负责配置和管理ExCache。在pComponent启动时,会配置ExCache的组相联性和缓存替换策略。ExCache命中由硬件完全处理,而未命中则由软件处理。
- 未命中处理 :当ExCache未命中时,进程监视器会从mComponent获取相应的行,并将其插入ExCache。如果ExCache组已满,会先逐出一个行。如果逐出的行是干净的,则丢弃;如果是脏的,则写回到mComponent。目前支持FIFO和LRU两种逐出策略,对于每个ExCa
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



