Implement swap
Swap increases available memory and in some cases performance, by writing cold pages to disk. This would require scanning address spaces, and reading the dirty and accessed bits of page tables (and potentially TLB-flushing for the CPU to set them again). It might be more difficult to do this for CoW or shared anonymous pages, and may necessitate an additional data structure for remembering which pages were shared between which address spaces. Scheme-provided may be easier, but the scheme should ideally not have to refcount its own pages.
As for the actual swapping, this can either be implemented synchronously using fast context switching, or asynchronously, using a submission and completion ring buffer shared with a swapper daemon. Async is probably faster, but this would need to be reviewed further.