What is the reasoning behind maintaining doubly linked lists of PCB's(process control blocks) in an OS for scheduling. I have seen this mentioned multiple times for Real time operating systems.
I would ideally go for a circular singly linked list , so that you could do a round robin and reach back to 1st task after looking to all. You could also sort it by priority...
But, why a doubly linked list?
You have made the assumption that you would always want to start at the head, and work towards the end of the list. This may not be true. Say you are swapping one process out (eg it is pending on a sempahore). You already have the current process control block, so it makes sense to start using the information you have rather than iterate through the entire list.
Because the PCB has a reference to both the previous and the next, you can cut that node out of the running-list, and move to a pended-list, or from a pended-list back into a ready-to-run list etc, without having to iterate all the way through.