Operating system 操作系统中过程控制块的双链表

Operating system 操作系统中过程控制块的双链表,operating-system,scheduling,doubly-linked-list,rtos,Operating System,Scheduling,Doubly Linked List,Rtos,在操作系统中维护PCB(过程控制块)的双链接列表以进行调度的原因是什么。对于实时操作系统,我已经多次提到过这一点 理想情况下,我会选择一个循环的单链表,这样您就可以进行循环,在查看所有任务后返回到第一个任务。你也可以按优先级排序 但是,为什么是双链接列表呢?您假设您总是希望从列表的开头开始,然后一直工作到列表的结尾。这可能不是真的。假设您正在交换一个进程(例如,它将挂起在sempahore上)。您已经有了当前的进程控制块,因此开始使用您拥有的信息而不是遍历整个列表是有意义的 由于PCB同时引用上

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

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


但是,为什么是双链接列表呢?

您假设您总是希望从列表的开头开始,然后一直工作到列表的结尾。这可能不是真的。假设您正在交换一个进程(例如,它将挂起在sempahore上)。您已经有了当前的进程控制块,因此开始使用您拥有的信息而不是遍历整个列表是有意义的


由于PCB同时引用上一个和下一个,您可以将该节点从运行列表中删除,移动到挂起列表,或从挂起列表返回到准备运行列表等,而无需一路迭代。

投票结束问题的人,请评论原因:)。嗯。。因为你可以轻松快速地将TCB从一个列表移动到另一个列表?@nikel我没有投票关闭,但可能是因为它有点广泛,并且有点基于观点。因此,如果我们将PCB移出另一个队列,我们将不得不在它之前和之后链接PCB。为此,我们可以使用双链接列表。这就是你想提出的想法吗?是的。。。。。它不需要是一个双链表,只要你已经有了想要移动的节点,它就更有效了。