While a checkpoint is running, eviction will write dirty pages ahead of the checkpoint, even if they can't be evicted.  The goal is to make the checkpointing window as short as possible.