Process migration --- - message-based systems (V, Accent) make migration somewhat easier than kernel-call-based systems, because some of the state that is maintained by the kernel in a kernel-call-based system is maintained in a process's address space in a message-based system; V System [Cheriton] ------------------- - uses pre-copying, where the process continues executing while its memory is transfered from one machine to the other; then the process is frozen and any pages that have been modified are recopied; - in the initial implementation, the entire memory of the process was transferred directly to the target; - Theimer showed that pre-copying reduces freeze times substantially; - pre-copying seems most useful in environments like V, that has real-time requirements; Sprite [Ousterhout] ------------------- - backing files simplify the transfer of the virtual memory image; the old machine simply pages out the dirty pages and transfers information about the backing files to the target machine; - since these backing files are stored in the network file system, they are accessible throughout the network; - if the code segment already exists on the new machine, the migrating process shares it, as in LOCUS (no need to send from the old machine to the new one); - pages get reloaded in the new machine on demand, using the standard virtual memory mechanisms; - therefore, the process needs to be frozen long enough to write out its dirty pages; this takes longer than in V and Accent, but requires less data to be copied than in V and requires no participation of the old machine after the migration; - Sprite achieves transparency in a fashion similar to LOCUS, by assigning each process a home node (usually the one where the process was created); - whenever a process invokes a kernel call whose results are machine-dependent, the kernel call is forwarded to the home machine; - system helps to identify idle hosts, but it does not automatically migrate processes except for eviction; LOCUS [Popek] ------------- - LOCUS checks for a read-only code segment and re-opens it in the new machine, rather than copying it from the old machine; - apart from the optimization above, the process's entire memory image is sent to the target machine at migration time; Accent [Zayas] -------------- - lazy approach to copying, where the virtual memory image is left on the old machine and transfered to the new machine one page at a time when page faults occur; - allows a process to begin execution on the target machine with minimal freeze time but introduces many short delays later; - pages that are not used are not copied at all; - Zayas found out that for typical programs, usually just 25-50% of a process's allocated memory needed to be transferred; - one disadvantage is that it leaves residual dependencies in the home machine; - a process that migrates more than once may have a list of dependencies;