Windowsのユーザーモードとカーネルモードとは

Admin

「カーネル」または「ユーザー」モードで実行されているアプリケーションについて聞いたことがあるかもしれません。 それはすべて、オペレーティングシステムが仕事をするときにどのように機能するかにかかっています。 それを理解すれば、ユーザーモードとカーネルモードの違いを簡単に理解できます。

オペレーティングシステムの機能を理解する

コンピューターは、ハードウェア、電子部品、およびソフトウェアで構成され、コンピューターコードはそのハードウェアによって実行されます。 しかし、あまり明確ではないかもしれませんが、それらがどのように連携するかです。

目次

コンピュータの最も重要な要素は、ビットまたは「2進数」です。 コンピューターが行うことはすべて、1と0で表されます。 さまざまなコンピュータコンポーネントは、さまざまな方法でビットを表します。 で CPU、微視的トランジスタは、オンまたはオフのいずれかによって1と0を表します。 これらのトランジスタは、論理ゲートと呼ばれる論理構造に配置されます。

電子コンピュータメモリでは、ビットは、特定のしきい値を超えるまたは下回る電荷を持つメモリセルによって表されます。 機械式ハードドライブでは、ビットは回転するプラッターで測定された磁気変動として表されます。 光ディスクでは、レーザー光を反射する、または反射しないピットとランドが同じ働きをします。

バイナリコードの物理的表現がどのように実現されても、最終的にはすべてのコンシューマーコンピューターコンポーネントをこの生のマシンコードに減らすことができます。

では、コンピューターの人間に優しいインターフェースから、コンピューター自体の生の低レベルのプロセスにどのように移行するのでしょうか。 そこで、オペレーティングシステムが登場します。 コンピュータのハードウェアを直接制御します。

このソフトウェアは、アプリケーション(したがってユーザー)が必要とするすべてのものを、CPUおよびその他のコンポーネントが理解できるマシンコード命令に変換します。 このプロセスで最も重要なソフトウェアはカーネルです。

カーネルとは何ですか?

カーネルは、その名前が示すように、オペレーティングシステムのコアです。 カーネルはに存在するソフトウェアです コンピュータが行うすべてのことを指示します。 何かがメモリに書き込まれるとき、実行を指示するのはカーネルです。

カーネルは、GPUやネットワークカードなどのハードウェアとのインターフェイス方法を知っていますが、コンピューター業界の一般的な標準に依存して、それらを最大限に活用する方法を知らない場合があります。

ここでハードウェアドライバーが機能します。 ドライバーは、オペレーティングシステムに特定のコンポーネントの操作方法を指示します。そのため、たとえば、NvidiaとAMDGPUには異なるドライバーが必要です。

適切なドライバーを備えたカーネルは、データを壊滅的に破壊する可能性のあることを行うことを含め、コンピューター内の究極の権威です。

アプリケーションプログラミングインターフェイス(API)の役割

MS-DOSの時代には、ソフトウェア開発者はユーザーのハードウェア専用にソフトウェアを作成する必要がありました。 MS-DOSシステムでのこの最も悪名高い例は、サウンドカードドライバでした。

特定のビデオゲームは、最も人気のあるカード(Sound Blaster、Ad-lib、Gravis Ultrasoundなど)をサポートする必要があり、ほとんどのプレーヤーがカバーされることを期待しています。 今日、APIのおかげで、動作は大きく異なります。

Wolf3Dのサウンドカード選択画面

MicrosoftDirectXはその良い例です。 詳細な説明が必要な場合は、チェックアウトしてください DirectXとは何ですか?なぜそれが重要なのですか? ただし、知っておくべき最も重要なことは、APIは、ソフトウェア開発者がGPUなどのコンポーネントからハードウェアリソースを要求するための標準的な方法を提供することです。 さらに、ハードウェアメーカーは、同様に準拠するソフトウェアとの完全な互換性を確保するために、自社の製品がDirectXに準拠していることのみを確認する必要があります。

APIは、ソフトウェアアプリケーションと、ハードウェアドライバーを備えた低レベルカーネルとの間の変換レイヤーを提供します。 はい、これにはわずかなパフォーマンスの低下が伴います。 それでも、最近のコンピューターでは、これはごくわずかであり、さまざまな利点があり、最終的にユーザーモードとカーネルモードになります。

ユーザーモードと カーネルモード

最新のオペレーティングシステムは、数百または数千の「プロセス」を同時に実行し、優先順位と計算能力の要件に基づいて、必要に応じて動的にCPU時間を与えます。

アプリケーションを起動すると、プロセスが生成され、CPUはユーザーモードまたはカーネルモードのいずれかでプロセスを実行できます。

ユーザーモードで実行されているWindowsプロセスは、独自のプライベート仮想メモリアドレス空間とハンドルテーブルにのみアクセスできます。 ソフトウェアはこれらのテーブルを使用してデータをRAMに保存し、リソースを要求します。 メモリやその他のハードウェアに直接アクセスすることはできません。これらの仮想空間をコンピュータの実際のハードウェアにマッピングするかどうかは、オペレーティングシステム次第です。

これは多くの理由で有効ですが、最も重要な利点は、アプリケーションが仮想メモリアドレス空間外のデータを上書きまたは変更できないことです。 さらに、特定の機能はユーザーモードプロセスに対して立ち入り禁止であり、主にシステムをクラッシュさせたりデータを破壊したりする可能性のある機能です。

プロセスが起動するか、カーネルモードに昇格すると、オペレーティングシステム用に予約されているものも含め、システムリソースに完全にアクセスできます。 したがって、理論的には、オペレーティングシステムを適切に実行するために必要な重要なデータを上書きする可能性があります。

トラップと例外

これらの2つのモードは、CPU自体によってハードウェアレベルで適用されることを理解することが重要です。 ユーザーモードで実行されているアプリケーションがカーネルモードアクセスを必要とする処理を実行しようとすると、「トラップ」または「例外」が生成されます。 その後、オペレーティングシステムは アプリケーションを処理します。通常は、アプリケーションをシャットダウンしてクラッシュログを生成し、開発者が問題が発生したときにメモリ内で何が起こったかを確認できるようにします。 レール。

カーネルモードの危険性:死のブルースクリーン

コンピュータの電源を切ったり再起動したりするブルースクリーンを経験したことがある場合は、カーネルモードのプロセスが原因である可能性があります。

カーネルモードのプロセスが想定外の処理を行うと、オペレーティングシステムはそのプロセスから回復できず、コンピュータ全体が停止します。 ユーザーモードのプロセスが失敗すると、アプリケーションのみがクラッシュし、残りのソフトウェアとオペレーティングシステムは問題なく続行できます。

これは、カーネルモードの権限を要求するAPIであるため、APIが重要な役割を果たす領域の1つです。 ユーザーモードアプリケーションは、基本的に、カーネルモード特権を必要とするリクエストをAPIに委任します。

これが、カーネルモードが通常、コンピュータのハードウェアに直接アクセスする必要がある低レベルのシステムプロセスにのみ付与される理由です。 通常、この特権は、ユーザーモードが提供できるよりも多くのパフォーマンスを必要とするため、プロセスに拡張されます。 一部のCPU命令はカーネルモードでのみ機能するため、プロセスがこれらの関数を使用する必要がある場合は、昇格する必要があります。

ブルースクリーンオブデスで問題が発生した場合は、必ず Windows10のブルースクリーンの死のトラブルシューティングガイド!

ヘルプデスクオタクへようこそ-信頼できる技術専門家からの技術的なヒントが満載のブログ。 問題のトラブルシューティングに役立つ何千もの記事とガイドがあります。 私たちの記事は、2008年の立ち上げ以来、1億5000万回以上読まれています。

スパムも嫌いです。いつでも登録を解除してください。

Windows11PCに搭載されているグラフィックカードを確認する方法
Windows11PCに搭載されているグラフィックカードを確認する方法

新しいWindows11アプリまたはゲームには、最小および推奨ハードウェア要件のリストがあります。 そのリストにグラフィックカードがありますが、PCにどのカードがあるかをどうやって知ることができ...

Windows11/10でハードドライブの状態を確認する方法
Windows11/10でハードドライブの状態を確認する方法

老朽化したコンピュータでは、通常、ハードディスクが最初に使用されます。 これは、RAMやプロセッサなどのコンポーネントとは異なり、HDDには可動部品が多いためです。ハードドライブが故障するのを待...

PowerShellまたはコマンドラインを使用してすべてのWindowsサービスを一覧表示する方法
PowerShellまたはコマンドラインを使用してすべてのWindowsサービスを一覧表示する方法

画面に表示される実行中のアプリケーションは、Windowsで発生していることのほんの一部です。 デバイスドライバーの管理からセキュリティの確保まで、一連のバックグラウンドプロセスが機能するWin...