[過去ログ]
ゲームプログラミング相談室 (986レス)
上
下
前
次
1-
新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
800
(1)
: 02/10/27 10:53 ID:???
AA×
>>798
[240|
320
|
480
|
600
|
100%
|
JPG
|
べ
|
レス栞
|
レス消
]
800: [sage] 02/10/27 10:53 ID:??? >>798 一種のキャッシュだよ。まっとーなメモリ保護のある環境下で OS を呼び出して メモリを割り当ててもらうのは ソフトウェア割り込みによる特権モード変更 割り込みハンドラでのレジスタの待避などの定型処理 (ここで OS のメモリ割り当て関係のコードに入って) 各種制限のチェック(たとえばユーザあたりのメモリ割り当て越えてないか、 とか) 仮想記憶のページテーブル、TLB の変更 OS の持つ仮想記憶レイヤーにおけるページエントリの変更 と、いろいろ手間がかかる。ユーザ空間で完結できれば、それに越したことはな い。 このあたりは使ってるライブラリによっても変わってくるけど、昔の UNIX だと 一度 malloc したら二度と OS には返さないのが一般的で、最近でも条件 (*1) が揃わない限りはまず返さない。 本当に OS からメモリを短時間・大量に借りたいなら malloc/free なんか使っ ちゃダメです。mmap() とか VirtualAlloc() とか使いましょう。 (*1) ヒープの端っこが free() されるとか、ページ単位で連続した空間が free される とか。この条件を緩くして OS 側に返すチャンスを増やそうとすればするほど、 malloc/free が内部で管理・チェックするデータが増え、割り当て・解放に掛か る時間もメモリ消費も大きくなるというトレードオフがある。 たとえば Solaris だと libc, libmalloc, libmapalloc あたりに実装が異なる malloc/free がいくつかあるから、ソースを眺めながら処理速度を比べてみると 勉強になるよ。 http://game.5ch.net/test/read.cgi/gamedev/1005040025/800
一種のキャッシュだよまっとーなメモリ保護のある環境下で を呼び出して メモリを割り当ててもらうのは ソフトウェア割り込みによる特権モード変更 割り込みハンドラでのレジスタの待避などの定型処理 ここで のメモリ割り当て関係のコードに入って 各種制限のチェックたとえばユーザあたりのメモリ割り当て越えてないか とか 仮想記憶のページテーブル の変更 の持つ仮想記憶レイヤーにおけるページエントリの変更 といろいろ手間がかかるユーザ空間で完結できればそれに越したことはな い このあたりは使ってるライブラリによっても変わってくるけど昔の だと 一度 したら二度と には返さないのが一般的で最近でも条件 が揃わない限りはまず返さない 本当に からメモリを短時間大量に借りたいなら なんか使っ ちゃダメです とか とか使いましょう ヒープの端っこが されるとかページ単位で連続した空間が される とかこの条件を緩くして 側に返すチャンスを増やそうとすればするほど が内部で管理チェックするデータが増え割り当て解放に掛か る時間もメモリ消費も大きくなるというトレードオフがある たとえば だと あたりに実装が異なる がいくつかあるからソースを眺めながら処理速度を比べてみると 勉強になるよ
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 186 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.043s