Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] Access memory from another process
authorGabriel Corona <gabriel.corona@loria.fr>
Tue, 9 Dec 2014 14:29:16 +0000 (15:29 +0100)
committerGabriel Corona <gabriel.corona@loria.fr>
Thu, 11 Dec 2014 10:46:26 +0000 (11:46 +0100)
commit037ed0177fab7a21eee2439624cbb4c4db8ccc31
tree38ea2858ddc7824d9dea9faf85468c27231aa5b1
parentc74d55b12793e78341f96550544c4a4061b714ca
[mc] Access memory from another process

The goal is to be able to move MC in a separate process which should
be more robust and easier to develop:

 * avoid using two heaps (which is combersome);

 * avoid weird interactions bewteen the MC and the application;

 * use optimisation for the whole MC process;

 * avoid the stack-cleaner for the whole MC process.

The functions MC_process_read and MC_process_write are defined to
abstract memory access:

 * when the target process is the current processs, they call
   `memcpy`;

 * otherwise they call `read` or `write` on `/proc/$pid/mem` (on newer
   kernels, `process_vm_readv` and `process_vm_writev`) could be used.

A lot of bits are missing such as:

 * access to `std_heap` is currently not process-aware (the current
   process is used);

 * access to SIMIX layer from MC;

 * communcation/synchronisation between the processes;

 * …

Limitations:

 * for the per-page/chunked snapshot the current implementation uses
   an extra copy (and one syscall per page), we can do better than
   this.
src/mc/mc_checkpoint.c
src/mc/mc_page_snapshot.cpp
src/mc/mc_page_store.cpp
src/mc/mc_process.c
src/mc/mc_process.h
src/mc/mc_snapshot.h