Linux (およびその他のプラットフォーム) では malloc はアロケーションのためのバッキングページを遅延して作成しますか?
2023-11-23 14:42:18
質問
Linux で、もし私が
malloc(1024 * 1024 * 1024)
のように、mallocは実際に何をするのでしょうか?
私は、それが割り当てに仮想アドレスを割り当てることを確信しています (空きリストを歩いて、必要であれば新しいマッピングを作成することによって)、しかしそれは実際に 1 GiB 相当のスワップページを作成するのでしょうか? または、それは
mprotect
のようにアドレスの範囲を指定して、実際に触れたときにページを作成するのでしょうか?
mmap
のように実際に触れたときにページを作成するのですか?
(Linuxを指定しているのは は標準の がこの種の詳細について沈黙しているからです。しかし、他のプラットフォームがどうなっているのか知りたいですね)。
どのように解決するのですか?
Linuxは遅延ページ割り当て、別名「楽観的メモリ割り当て」を行います。malloc から戻ってくるメモリは何にもバックアップされておらず、それに触れたときに実際に OOM 状態 (要求したページのスワップ領域がない場合) になることがあり、その場合は プロセスが無情にも終了してしまいます。 .
例えば http://www.linuxdevcenter.com/pub/a/linux/2006/11/30/linux-out-of-memory.html
関連
-
中国版「浮世」を含むUbuntu 20.04.2リリース
-
Linux Mintのシステムバージョン情報はどこにありますか? Linux Mint のシステム情報を見るためのヒント
-
TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み] libstdc++.so.5: 共有オブジェクトファイルを開くことができない - しかしライブラリはインストールされており最新である
-
[解決済み] ディレクトリへのシンボリックリンクを削除する
-
[解決済み] Cプリプロセッサはなぜ "linux "という単語を定数 "1 "と解釈するのですか?
-
[解決済み] ls を使用してディレクトリとその合計サイズを一覧表示する
-
[解決済み] POSIX」の意味を教えてください。
-
[解決済み] 特定のファイル/フォルダを除外してディレクトリをtarするシェルコマンド
-
[解決済み] Linux:コピーして宛先ディレクトリが存在しない場合、作成する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linux Mint システムの背景画像を変更する方法は? Linuxでデスクトップの背景を変更するためのヒント
-
deepin depth systemはどのような内容でアップデートされましたか?deepinの最新版アップデート内容まとめ
-
linux(ubuntu 18.04)でのアイデア運用データベース障害問題について
-
deepin20を使って、ドローイングボードで画像を開くには?deepinのお絵かき掲示板で画像を開く2つの方法
-
Centos7 dns service named installation, encountered ** server can't find xxx.com: NXDOMAIN問題
-
apache startup error (98) Address already in use: make_sock: could not bind to...
-
[解決済み] libstdc++.so.5: 共有オブジェクトファイルを開くことができない - しかしライブラリはインストールされており最新である
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] mallocとcallocの違い?