オペレーティングシステムなしでクアッドコアARMの1コアを実行する方法

オペレーティングシステムなしでクアッドコアARMの1コアを実行する方法

私はクアッドコアARM CPUを使用していますが、Linuxで3つのコアを実行し、Linuxなしで1つのコアを実行できるかどうか疑問に思います。

答え1

1 つは 1 つのコアで実行され、もう 1 つは別のコアで実行される 2 つのオペレーティング システムを持つことはできません。 (「OS-less」は、効果的に実行するコードが独自のオペレーティングシステムをアプリケーションコードに統合する特別な場合です。)複数のオペレーティングシステムがこの方法で実行できますが、お互いを知る必要があり、避けるために慎重に記述する必要があります。お互いを踏んでいます。

1つのオペレーティングシステムを1つのコアに割り当て、1つのオペレーティングシステムを別のコアに割り当てても、コンピュータは単純なプロセッサ以上です。オペレーティングシステムはメモリと周辺機器を置いて競います。おそらく、Linuxカーネルにコアから完全に離れているように指示することが可能かもしれません。 (これが可能かどうかはわかりません。そこでプロセスをスケジュールしないように指示するだけでは十分ではありません。簡単です。カーネルはそのコアが割り込みを受信しようとしません。)しかし、これは最も明白な問題です。 Linux が使用しないコアを使用するには、Linux が電源管理メカニズムの一部としてコアをシャットダウンしないようにする必要があります。

それから思い出があります。 Linuxに物理メモリの特定の領域を離れるように指示するのは簡単です。しかし、ただ一つメモリ管理ユニットすべてのカーネルで利用可能で、Linuxではこの機能が必要です。 Linuxが他のオペレーティングシステムと共存するには、他のオペレーティングシステムがMMUデータの一部を所有できるようにMMUマネージコードを大幅に変更する必要があり、両方のオペレーティングシステムはMMUの使用方法に同意する必要があります。 MMMU。技術的に言えば、オペレーティングシステムはMMUなしで実行できますが、少なくともARM CPUの場合、MMUがないということは、仮想メモリがないという意味だけでなく(明らかに)キャッシュもないという意味なので、非常に遅いです。

その後、周辺機器があります。実際に複数のオペレーティングシステムを実行している場合は、各周辺機器は1つのオペレーティングシステムによって所有され、他のオペレーティングシステムはオフのままにする必要があります。両方のオペレーティングシステムが同時に同じバスを使用することは不可能であるため、同じバス上のすべての周辺機器は同じオペレーティングシステムに属する必要があります。

複数のオペレーティングシステムを実行する場合、コアはそれを分割する方法ではありません。あなたはする必要があります仮想化これらすべての共有リソース(物理メモリ、仮想メモリ、周辺機器)だけでなく、CPU自体も仮想化できます。これは以下を使用して行われます。仮想デバイス:各オペレーティングシステムは仮想マシンで実行され、仮想CPU、仮想MMU、仮想割り込みなどにアクセスでき、それを実行するオペレーティングシステムがあります。所有者これらのすべての仮想マシンを持ち、物理ハードウェアにアクセスできます。ホストが仮想マシンを排他的に実行し、他の操作を実行しない場合はそれを呼び出します。管理プログラム

関連情報