Some of these assurences should come from whatever proofs you have that the only cause of starvation in the system is the scheduler's policy.
I think perhaps my question wasn't clear. Or perhaps I don't understand your response.
EROS will (for the moment) use monodirectional scan for disk arms. This algorithm does not, in general, lead to starvation due to arm policy.
The competition in question is competition for memory page frames.
There are three operations I can think of that remove a page frame
from the free list:
Contention between the first two sources can be eliminated if there are always enough allocatable free page frames to satisfy all outstanding read requests. This should be straightforward to enforce if we can deal with (3).
The problem, then, is that revivification can reduce the number of allocatable frames below the number of outstanding read requests, with the effect that the read requests will be unable to make progress.
Offhand, I can see several approaches to dealing with this. I'm sure there are lots of better ones:
Problem: Arrival of a subsequent read request can cause the constraint to be violated, so this isn't a complete solution. Possible workaround is to run the ager when such a condition arises.
2. Age-on-demand: let the free list empty, but run ageing on demand.
This will tend to favor write-to-disk I/O, which is good, but will tend to defeat the migrator if one isn't careful. Also, the ager is not necessarily fast.
3. Middle-ground: never permit a revivification to preclude a
migration-related I/O.
I have to be missing something fairly obvious here. I'm still not convinced that I understand all of the interactions.
Jonathan