私はスタックのサイズが制限機能によって制御可能であることは知っていますが、カーネルはRLIMIT_STACKなどのこれらの制限のいくつかをどのように強制しますか? linuxはスタック操作に関与していないので(これは単なるmovまたはpush命令です)、制限を超えたときにカーネルはどのようにSIGSEGVを発行しますか?私は仮想アドレッシングのために、CPUがLinuxカーネルが使用できる機能を提供していることを理解しています。これは、スタックサイズの制限が適用される方法と似ていますか?あるいは、Linuxはスタックサイズを定期的にチェックし、犯罪発生後にsegfaultsを発行しますか?または、いくつかのオプションがありますか?Linuxカーネルはどのようにスタックサイズ制限を実施していますか?
3
A
答えて
3
カーネルは仮想メモリのためにこれを制御できます。仮想メモリ(メモリマッピングとも呼ばれます)は基本的に、仮想メモリ領域(ベース+サイズ)のリストと、各プログラムに固有のカーネルが操作できるターゲット物理メモリ領域です。プログラムがこのリストにないアドレスにアクセスしようとすると、例外が発生します。この例外により、カーネルモードにコンテキストが切り替わります。カーネルは障害を検索できます。メモリが有効になると、プログラムは続行されます(スワップとmmapはディスクから読み込まれません)。またはSEGFAULTが生成されます。
スタックサイズ制限を決定するために、カーネルは単純に仮想メモリマップを操作します。
関連する問題
- 1. Linuxカーネルのどの部分が権限分離を実施し、どのように実施していますか?
- 2. Linuxカーネルでpercpuポインタはどのように実装されていますか?
- 3. pthreadはLinuxカーネル3.2でどのように実装されていますか?
- 4. bashとLinuxカーネルのShebang行の制限
- 5. Linuxカーネルでvfs_readdirはどのように使用しますか?
- 6. イメージホスティングサイトはどのようにコンテンツポリシーを実施しますか?
- 7. どのように多くのvrfがLinuxカーネルをサポートし、どのシステムリソースがvrf番号を制限していますか?
- 8. rate_limitはどのようにセロリーで実施されていますか?
- 9. Linuxカーネルはブート時にどのドライバをロードするのかをどのように知っていますか?
- 10. Linuxカーネルはvga =パラメータをどのように解析しますか?
- 11. Linuxカーネルでタスクのシステムコールの時間を制限する方法
- 12. Linuxカーネルは別のLinuxカーネルを読み込んで実行できますか?
- 13. カーネルはJavaの無限ループをどのように検出しますか?
- 14. Googleアナリティクスはどのようにドメインを制限していますか?
- 15. U-BootはLinuxカーネルとどのように通信しますか?
- 16. 帯域幅の制限はどのように機能していますか?
- 17. カーネルの制限 "オープンファイルの制限"とMySQLの "Opened_files"は関連していますか?
- 18. ビルドアウトでどのpython eggが制約を実施しているかは、どのように知っていますか?例えば
- 19. DockerはmacOSホストでLinuxカーネルをどのように動作させますか?
- 20. コーディング標準はどのように施行しますか?
- 21. ExecutorServiceのスレッドをどのように制限しますか?
- 22. HP UXの最大スタックサイズの制限
- 23. Linuxカーネルのsha256実装は何を使用していますか?
- 24. linuxカーネルがアンドロイドランタイムとライブラリとどのようにインターフェースしますか?
- 25. iPhoneの携帯データの制限はサードパーティ製のアプリで実施されていますか?
- 26. __ATTRマクロはLinuxカーネルでどのように使用されますか?
- 27. Linuxカーネルはドライバのファームウェアを探す場所をどのように知っていますか?
- 28. シングルスレッドリクエストを実施するにはどうすればよいですか?
- 29. コミュニティライブラリのバイパスフレームワークの制限はどのようになっていますか?
- 30. access_process_vm Linuxカーネルについて理解していますか?
ありがとうございます。これは、メモリの上位8MB(またはスタックサイズ制限)の中の何かが、カーネルによって例外としてマップされますが、その下の領域はSYS_BRK経由で要求されなければならないのでしょうか? –
brk/sbrkを使用してヒープスペースを増やすことができます。マニュアルページは、これが通常データ領域に従うことを指定します。スタックメモリは理論的には任意のメモリ位置に置くことができます。多くのカーネルやOSはこれを正確に実行するので、セキュリティ違反のあるソフトウェアを悪用することが難しくなります。 –