Linux と vxworks の違い: 1. カーネル構造が異なります。vxworks はマイクロカーネルであり、基本サービスのみを提供しますが、Linux はマクロ カーネルです。基本サービスに加えて、カーネルにはファイル システムも含まれています、ネットワーク プロトコルなど; 2. 実行モードが異なります。vxworks アプリケーションは「リアル モード」であり、ユーザー モードとカーネル モードの区別はありませんが、Linux は「プロテクト モード」を使用します。ユーザー プロセスとスレッドは、次の方法で実行されます。ユーザー モードとカーネル スレッドはカーネル モードで実行されます。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
私が現在組み込み開発に使用しているオペレーティング システムは VxWorks です。大学時代は、Linux オペレーティング システムを最もよく使用していました。しかし、何に使用するのか「この 2 つのオペレーティング システムの違いは何ですか?詳しくまとめたことはありません。他人に聞かれると、少し恥ずかしくなるのは仕方ありません。結局のところ、私は組み込み開発を勉強していますが、組み込み開発システムについては何も知りません。」詳細は省きますので、今日は時間をかけて丁寧にまとめていきたいと思います。
|
## VxWorks | ## Linux |
カーネル構造 ##マイクロカーネル、カーネルは基本的なサービスのみを提供します |
例: タスク管理、メモリ管理、割り込み処理など。 マクロ カーネル、基本サービスに加えて、内部 コアにはファイル システムも含まれます。ネットワーク プロトコル | # など ##実行モード |
アプリケーション「リアル モード」で実行されます、ユーザー モードとカーネル モードの区別はありません |
「プロテクト モード」を採用し、ユーザー プロセスとスレッドはユーザー モードで実行され、 カーネル スレッドはカーネル モードで実行されます |
# #メモリ アクセスとメモリ保護 |
すべてのタスクは物理的に同じ場所で実行されます 、ユーザーはプログラムが物理的な を直接操作しますアドレス、メモリ保護を直接提供できない、 |
エラーの拡散を防ぐことができない カーネルは仮想ストレージ管理方式を採用しており、ユーザーは独立したアドレスを持っていますユーザー プロセスはこのプロセスの仮想空間にのみアクセスでき、 メモリ保護を提供し、エラーを防ぐことができます。スプレッド |
実行ユニット ## タスク | プロセス、スレッド
リクエスト カーネル サービス メソッド |
# 関数呼び出し、より高速 | # システム コール、より安全 |
リアルタイム パフォーマンス |
ハード リアルタイム |
# ソフトリアルタイム############### VxWorks は主に通信レベルのデータ通信やその他の製品で使用され、Linux は主に民生用、産業用制御製品などで使用されます。 マイクロカーネル、マクロカーネル kernel 各種サービスを提供するコンポーネントと、そのサービスを利用するプロセスとの間にクライアント/サーバー関係が形成されます。このサービスは必ずしもカーネル内に存在する必要はなく、「サービスプロセス」として設計・実装することもできます。 , ここで、カーネルに残すべき唯一の部分はプロセス間通信です。これらのサービスがカーネルからプロセス レベルに移されると、カーネル自体の構造が大幅に削減および簡素化され、各サービス プロセスも独立して設計および実装でき、デバッグも可能です。 マイクロカーネルは、サービスをプロセスに転送するカーネル モードです。主にリアルタイム システムと組み込みシステムで使用されます。主な理由は、これらのシステムには通常ディスクがなく、システム全体を EPROM 上に配置する必要があるためです。多くの場合、ストレージ容量によって制限され、必要なサービスは PSOS、VxWorks など比較的単純です。 マクロ カーネルは、プロセス管理、メモリ管理、その他のサービス機能をカーネルに組み込む従来のカーネル構造であり、通常は UNIX や Linux などの汎用カーネルで使用されます。 デバイス ドライバー部分の比較と分析 Linux オペレーティング システムと Linux ブート ローダーは構造的に分離されているため、当然ながら、これらの間のデバイス ドライバーはユニバーサル化できません。チップのハードウェア初期化のためのハードウェア関連のコードについて互いに学び合うことができます。 VxWorks の BOOTROM は、実行バージョンのデバイス ドライバと同じです。これは、実行バージョンと BOOTROM の構造が一貫しており、同じオペレーティング システム カーネルを使用しているためです。 Linux オペレーティング システムのデバイス ドライバーはカーネル空間で実行され、ユーザー プロセスはユーザー空間で実行されます。 Linux オペレーティング システムでは、カーネル空間とユーザー空間のメモリ管理とマッピング方法が異なります。アプリケーションとデバイス ドライバーは、データ交換中に異なるメモリ空間を使用するため、一定の効率に影響します。ただし、この問題は、システムのメモリ空間の構成とその他の解決方法。 VxWorks オペレーティング システムはカーネル空間とユーザー空間を分離しません。デバイス ドライバーとアプリケーションはすべて同じ空間で実行され、互いのメモリにアクセスできます。データ交換は非常に便利ですが、この構造の安定性はそれほど良くありません。どちらのオペレーティング システムも、多くのデバイス ドライバー リソースとテンプレートを提供します。ただし、Linux のオープン ソースの性質により、Linux が提供するデバイス ドライバーの種類と数は VxWorks をはるかに上回っています。 推奨学習:Linux ビデオ チュートリアル |
以上がLinuxとvxworksの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。