[Mona] mallocが遅い

MonaDatがWin版では速いのに、Monaでは遅いということから、有志の方たちが
いろいろと実験・調査をして下さっている。
http://wiki.monaos.org/index.php?MonaDat%2F%A5%DC%A5%C8%A5%EB%A5%CD%A5%C3%A5%AF
http://wiki.monaos.org/index.php?Mona%2Fmalloc


その結果、mallocが遅いことが分かった。どうも小さいメモリの割り当てを繰り返すと遅いようだ。
mallocは、MemoryManager#allocateを読んでいるので実際には、MemoryManager.cppのコードが悪いということになる。


よくよく調べてみるとこのコードは2002年に書かれたモノであまり出来がよろしくない。
メモリ管理といえば、ファーストフィット・ベストフィット・ワーストフィットなどのアルゴリズムがあるのだが、MemoryManagerではファーストフィットを採用している。
ファーストフィット自体は良いアルゴリズムなのだが、今見ると(私の)実装がだめだめ。
というわけでいろいろ考えてみます。


なおメモリ管理のアルゴリズムは↓が詳しく

オペレーティングシステム―設計と理論およびMINIXによる実装

オペレーティングシステム―設計と理論およびMINIXによる実装



ファーストフィットの有名な実装は、必須本 K&R にのっています。(id:yaneurao:20050514でも紹介されていますね)

プログラミング言語C 第2版 ANSI規格準拠

プログラミング言語C 第2版 ANSI規格準拠