PSMのmalloc実装ロードマップ
次のように実装していくべきかな
- 親だけがmallocを一回だけ呼ぶ。
- つまりshmの識別子名は一意でおk。
- メモリアドレスはプロセス間で違うかもしれない。
- 親だけがmallocを呼ぶ。複数でもいい。
- shmの識別子をころころと変える。
- 誰かが割り当てられたメモリ領域を記憶。
- 子供も呼べる。
- プロセス間での情報の共有が問題となる。
- あ、それはいっこ前のでもそうか。
- プロセス間での情報の共有が問題となる。
- プロセス間でアドレスが一致。
- アドレスが空いているかを調べないといけない。
とりあえず最初の実装を考える。親はこんな感じのコードを一回だけ呼ぶ。
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);
して利用する(全員が利用するようにさせるのも面倒なのか!)。
とりあえずそういう方針で実装したい。