操作系统中进程控制块的双向链表

Doubly linked list of process control block in Operating Systems

在 OS 中维护 PCB(进程控制块)双向链表以进行调度的原因是什么。对于实时操作系统,我已经多次看到这一点。

理想情况下,我会选择一个循环单链表,这样你就可以进行循环并在查看完所有任务后返回到第一个任务。您也可以按优先级排序...

但是,为什么是双向链表?

您已经做出这样的假设,即您总是希望从头开始,然后向列表的末尾努力。这可能不是真的。假设您正在换出一个进程(例如,它在一个信号量上挂起)。您已经有了当前的流程控制块,因此开始使用您拥有的信息而不是遍历整个列表是有意义的。

因为 PCB 对前一个和下一个都有引用,您可以将该节点从 运行ning-list 中删除,然后移至 pended-list,或从 pended-list 移出回到准备就绪的 运行 列表等,而无需一直迭代。