PSMのmalloc実装ロードマップ

次のように実装していくべきかな

  1. 親だけがmallocを一回だけ呼ぶ。
    • つまりshmの識別子名は一意でおk。
    • メモリアドレスはプロセス間で違うかもしれない。
  2. 親だけがmallocを呼ぶ。複数でもいい。
    • shmの識別子をころころと変える。
    • 誰かが割り当てられたメモリ領域を記憶。
  3. 子供も呼べる。
    • プロセス間での情報の共有が問題となる。
      • あ、それはいっこ前のでもそうか。
  4. プロセス間でアドレスが一致。
    • アドレスが空いているかを調べないといけない。

とりあえず最初の実装を考える。親はこんな感じのコードを一回だけ呼ぶ。

psm_mem_malloc(size);
psm_create();

で、内部では

int fd = shm_open("/psm_<PID>", ...);
ftruncate(fd, size);

して、終了時に

shm_unlink(fd);
shm_unlink("/psm_<PID>");

みたいにする。

メモリを使う人は全員が

addr = mmap(0 /*最終的にはこれはまずい*/, size, flag, flag, fd, 0);

して利用する(全員が利用するようにさせるのも面倒なのか!)。

とりあえずそういう方針で実装したい。