すべてのタスクに単一の共通アドレス空間を与える方法。このように発生した場合、仮想メモリから物理メモリへのマッピングを回避できます。
すべてのタスクが共通のアドレス空間を共有している場合、仮想メモリから物理メモリへのマッピングを回避するにはどうすればよいですか。
Singularityのように、これを行う最新の(研究用)OSがいくつかあり、パフォーマンス上の利点があります。これは主に、コンテキストの変更を行う必要がなくなり、ファイル/シンボルローダーがグローバルキャッシュとカーネル関数のアドレス変換を行う必要がなくなるためです。 。
あなたはあなたが探しているものについてもう少し具体的にする必要があります、tho'。投稿にOSXとLinuxのタグを付けましたが、どちらも仮想メモリが必要です。MMUのない(したがって仮想メモリのない)システムで実行すると、MMUがエミュレートされます。これは、回避できないと確信しています。私は決して専門家ではありません。
uClinuxは、MMUがないプロセッサ(ARM7など)で実行されるLinuxの実装であるため、定義上、すべてのタスクに対して単一のアドレス空間が必要です。
したがって、「方法」に対する1つの答えは、「uClinuxを使用する」です。
このVxWorksにタグを付けましたが、別の答えがあります。VxWorksはフラットメモリをサポートしています。実際、私が最後にそれを使用したとき、MMU保護は(高価な)アドオンでした。マイクロコントローラー用に設計された他の多くのRTOSも同様に、eCOSやFreeRTOSなどのMMUをサポートしていません。
MMUをサポートするRTOSの中で、QNXは、高性能を維持しながら、おそらく最も堅牢で成熟したものの1つです。
仮想メモリマッピングを無効にする理由がわかりません。これはCPUの組み込み関数であり、OSを実行してプロセスを相互に適切に分離する場合に非常に重要です。
ほとんどのオペレーティングシステムでは仮想メモリを無効にできるため、メモリ容量は物理メモリによって制限されます。ただし、プロセスのアドレス空間は依然として仮想であり、仮想から物理へのマッピングは引き続き行われています。
必要なものを取得する方法は、DOSやWindows 3.0などのリアルモードで実行されるオペレーティングシステムを実行するか、独自のオペレーティングシステムを作成することです。
仮想メモリの利点は、欠点をはるかに上回ります。なぜ仮想メモリを避けたいのですか。
これは、一部の古いオペレーティングシステム、およびVMを備えていない一部の最新のオペレーティングシステムが引き続き機能する方法です。デスクトップやサーバーアプリケーションなどには多くの欠点がありますが、組み込みやリアルタイムのコンテキスト、または最小限のハードウェアを使用している場合に役立ちます。
VxWorks AE(Advanced Editionがサポート)は、すべてのタスクの共通アドレス空間の概念から逸脱しているため、MMUを使用するシステムと使用しないシステムの両方で効果的に使用できます。すべてのタスクの共通アドレス空間はフラットメモリモデルと呼ばれ、個別のさまざまなタスクのアドレス空間は、オーバーラップメモリモデルまたはセグメント化メモリモデルと呼ばれます。データをコードセグメント、データセグメント、BSSなどに分割するオブジェクトファイルに見られるように、メモリモデルをメモリレイアウトと混同しないでください。どちらも完全にです。異なるもの :)。
スタックオーバーフローのこのリンクはより良い助けになります