From: SHUDO Kazuyuki Date: 2000-10-07T11:23:16+09:00 Subject: [ruby-list:25375] Re: Gtk: 個別に require > > Ruby Hackerの人達にも質問があるんですが、Rubyが採用してる dynamic loadっ > > て、gtk.soすべてを require時 memoryに loadするんでしょうか? OSによるの > > かな? dlopen(3) を使える環境(OS) の場合は、 dlopen() がどう実装されているかに依るのだと思います。 defined(USE_DLN_A_OUT) の場合は、 ruby 自身が関数ごとにメモリにロードしているようです。 (dln.c 参照) …defined(USE_DLN_A_OUT) の場合って、 ruby が自分でライブラリを read(2) して parse してるんですね… ちょっと驚きました。 yashi さん wrote: > glibcの dlopen()の実装だと memmapしてるんで無駄が無いと読んだ事があるん > ですが‥‥、他の OSだとどうなんでしょ‥? Linux だと、 % strace 適当なコマンド で確認できます。 open("/lib/libc.so.6", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0755, st_size=4634410, ...}) = 0 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \276\1"..., 4096) = 4096 old_mmap(NULL, 1168776, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x4001f000 mprotect(0x40134000, 34184, PROT_NONE) = 0 old_mmap(0x40134000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x114000) = 0x40134000 old_mmap(0x40139000, 13704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40139000 close(3) SHUDO Kazuyuki/首藤一幸 私をたばねないで あらせいとうの花のように shudoh@muraoka.info.waseda.ac.jp