8
なぜセグメンテーションではないのですか?
私はオペレーティングシステムとx86アーキテクチャを勉強しています。セグメンテーションとページングについて読んでいる間、現代のOSがメモリ管理をどのように処理するのか自然に興味がありました。私がLinuxや他のほとんどのオペレーティングシステムで見つけたものから、ページングを優先してセグメンテーションを本質的に回避しています。私が見つけたこの理由のいくつかは、シンプルさと移植性でした。 セグメンテーション(x86またはそれ以外)の実用的な用途は何ですか?それを使用する堅牢なオペレーティングシステムが表示されるか、ページングベースのシステムが引き続き使用されます。 今、私はこれがロードされた質問であることを知っていますが、新しく開発されたオペレーティングシステムでセグメンテーションがどのように処理されるか興味があります。ページングを支持することは、「セグメント化された」アプローチを誰も考慮しないほど理にかなっていますか?もしそうなら、なぜですか? そして、「排除」セグメンテーションと言うとき、Linuxは必要な範囲でのみ使用することを意味します。ユーザーおよびカーネルコード/データセグメント用のセグメントは4つだけです。Intelのドキュメントを読みながら、セグメンテーションはより堅牢なソリューションを念頭に置いて設計されていると感じました。それから、x86がどれほど複雑になるかを何度も言われました。 Linux Torvaldの元々のLinuxの「アナウンスメント」にリンクした後、この興味深い逸話を見つけました。彼はこれについて、いくつかの投稿を後に述べました。 簡単に言えば、移植は不可能だと思います。ほとんどはCで書かれていますが、ほとんどの人は私がCを書いているものとは呼びません。これは、386について教えてくれるプロジェクトでもあったので、386の考えられるすべての機能を使用します。すでに述べたように、 、ページング(まだディスクへではない)とセグメンテーションの両方。本当に386に依存するのはセグメンテーションです(すべてのタスクにはコードとデータ用の64Mbセグメントがあります-4Gbで最大64タスク。64Mb/タスク以上が必要な人は誰でもCookieが強い)。 私自身がx86を試した結果、この質問をするようになったと思います。LinusにはStackOverflowがなかったため、それを実装して試してみました。