在OS中为调度维护双向链接的PCB(过程控制块)的原因是什么?我已经多次看到过实时操作系统提到的内容。
理想情况下,我会选择一个循环的单链表,这样你就可以进行循环,并在看完所有人之后再回到第一个任务。您也可以按优先级对其进行排序......
但是,为什么要列出双重链表呢?
答案 0 :(得分:0)
你已经假设你总是想从头开始,并朝着列表的末尾努力。这可能不是真的。假设您正在交换一个流程(例如,它正在等待sempahore)。您已经拥有了当前的流程控制块,因此开始使用您拥有的信息而不是遍历整个列表是有意义的。
因为PCB具有对前一个和下一个的引用,所以您可以将该节点从运行列表中删除,然后移到挂号列表,或从挂号列表转回到准备好的列表中。运行列表等,无需一直迭代。