24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2025级博士研究生招生报考通知
查看: 1385  |  回复: 0

981657324

新虫 (初入文坛)

[交流] linux内核的进程迁移机制

阅读Linux内核有段时间了,想要在内核中加一个关于实时任务的调度算法。
      众所周知,2.6版本的Linux内核中关于实时任务只有两种调度算法(FIFO和RR),分别对应两个调度策略:SCHED_FIFO(先到先服务)以及SCHED_RR(时间片轮转)。这两种调度策略都是通过一个函数集合rt_sched_class来定义和实现的。
      现在想在内核中加入一个主要针对周期性任务的、根据每个任务的执行时间(任务运行前已确定)来确定其优先级的、基于优先级的调度算法。如果重新写一个调度类,那么必须实现调度类中给出定义的所有函数,其中有很多函数牵涉到了内核中的锁机制,很复杂。但是如果直接修改rt_sched_class,又担心会破坏内核中原有的两种实时调度机制。这是一点,希望大家可以说下自己的见解。
      第二点,如果是多核平台,不可避免的,要实现核间的进程迁移机制。而linux中的进程迁移机制是基于plist数据结构来实现的。关于链表,Linux中有两种基本的双向链表组织形式:list和hlist。这两种链表形式比较简单,其中list就是很常见的双向链表形式,而hlist则主要应用在哈希链表中,用于快速定位进程,这里不需要深究。而plist的实现则是基于list形式的双向链表。plist_head及plist_node均定义在内核中的Plist.h头文件中。问题就是,具体这两个数据结构是怎样支持进程迁移机制的,我不太理解。希望大家可以讨论一下。
      共同学习哈。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 981657324 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见