Windowsエラー
 Computer >> コンピューター >  >> トラブルシューティング >> Windowsエラー

システムリソースとは?4つの種類と仕組み、エラーの直し方を徹底解説

システムリソースとは?4つの種類と仕組み、エラーの直し方を徹底解説

「限られたリソースを最大限に活かす力」は、あらゆる場面で魅力的な特性です。ここでいう「有効活用」とは、大量のリソースを保有していることではなく、手持ちの scarce なリソースの潜在能力を最大限に引き出す能力を指します。これは現実社会だけでなく、私たちが日々使っているハードウェアやソフトウェアにもそのまま当てはまります。

たとえば、高性能な車は多くの人にとって憧れの存在ですが、実際にスポーツカーやスポーツバイクを購入する人はごく一部です。購入しない理由を尋ねると、多くの人は「実用的じゃないから」と答えるでしょう。

システムリソースとは?4つの種類と仕組み、エラーの直し方を徹底解説

つまり、社会全体としても私たちの選択は「効率性」に傾いているのです。大衆に最も支持される車は、必ずしも華やかなデザインのものではなく、コスト・燃費・メンテナンスの面で優れた効率性を提供するものです。同じことがコンピューターにも言えます。単純な表計算の編集に多大な電力を消費する高価なハードウェアでは意味がありませんし、起動した瞬間にフリーズするようでは、どんなに高価なゲームやソフトウェアも役に立ちません。

何かを「効率的」にする鍵は、利用可能なリソースを賢く管理し、最小限のエネルギーとリソース消費で最大のパフォーマンスを引き出す能力にあるのです。

システムリソースとは?

システムリソースとは、ひとことでいえば「オペレーティングシステム(OS)が、ユーザーから要求されたタスクを、ハードウェアとソフトウェアを最大限に活用して効率的に実行するための能力」のことです。

技術の急速な進歩により、コンピューターの定義は「キーボード・画面・マウスが接続された、点滅するライトのある箱」というものを大きく超えて進化しました。スマートフォン、ノートパソコン、タブレット、シングルボードコンピューターなどが、コンピューターに対する概念を完全に変えたのです。しかし、これらの現代の驚異を支える根幹の技術はほとんど変わっておらず、今後すぐに変わることもないでしょう。

システムリソースはどのように機能するのか

コンピューターの電源を入れると、OSはまず接続されているすべてのハードウェアコンポーネントを確認・検証します。この情報はWindowsレジストリに記録され、容量や空き領域、RAMの搭載量、外部記憶媒体などの情報が格納されます。

同時に、OSはバックグラウンドサービスやプロセスも起動します。これがリソースの最初の使用例です。たとえば、ウイルス対策ソフトや定期的な更新が必要なソフトウェアをインストールしている場合、これらのサービスはPCの電源投入と同時に起動し、バックグラウンドでファイルの更新やスキャンを行い、システムを保護し最新の状態に保ちます。

リソース要求は、アプリケーションやシステムが必要とするサービスであることもあれば、ユーザーの要求に応じてプログラムを実行するために必要なものであることもあります。プログラムを開いた瞬間、そのプログラムは実行に必要なすべてのリソースを確認します。要件が満たされていれば、プログラムは意図したとおりに動作します。しかし要件が満たされない場合、OSはどのアプリケーションがその希少なリソースを占有しているかを特定し、強制終了を試みます。

理想的には、アプリケーションがリソースを要求したら、タスク完了後に返却すべきです。ところが実際には、要求したリソースを返さないアプリケーションが少なくありません。これこそが、別のサービスやアプリケーションがバックグラウンドで必要なリソースを奪い、アプリケーションやシステムがフリーズする原因です。すべてのシステムには限られたリソースしかないため、その管理はきわめて重要なのです。

システムリソースの4つの種類

システムリソースは、ハードウェアとソフトウェアが相互に通信するために使用されます。たとえば、ソフトウェアがデバイスへデータを送信したいとき(ファイルをハードディスクに保存するときなど)、あるいはハードウェアがCPUの注意を必要とするとき(キーボードのキーを押したときなど)に使われます。

システムの操作中に登場するシステムリソースには、次の4種類があります。

  • ダイレクトメモリアクセス(DMA)チャネル
  • 割り込み要求ライン(IRQ)
  • 入出力(I/O)アドレス
  • メモリアドレス

割り込み要求ライン(IRQ)

キーボードのキーを押すと、キーボードはCPUに「キーが押された」ことを通知したいはずです。しかしCPUはすでに別のプロセスを実行中のため、現在のタスクが完了するまで中断してもらうわけにはいきません。

この課題を解決するために実装されたのが、割り込み要求ライン(IRQ)です。名前のとおり、CPUに割り込んで「キーボードなどから新しい要求が来た」ことを知らせます。具体的には、キーボードが自分に割り当てられたIRQラインに電圧をかけます。この電圧が、「処理を必要とする要求を持つデバイスが存在する」ということをCPUに伝える信号となるのです。

メモリアドレス

OSはメモリを、データと命令を保持するためのセルの長いリストとして扱います。イメージとしては一次元のスプレッドシートに近いものです。メモリアドレスは「劇場の座席番号」と考えると分かりやすいでしょう。各座席には、人が座っていようといまいと、必ず番号が割り当てられています。座席にいる「人」に相当するのがデータや命令です。OSは人を名前で呼ぶのではなく、座席番号だけで参照します。たとえばOSは「メモリアドレス500のデータを印刷したい」と指示します。これらのアドレスは通常、セグメント:オフセット形式の16進数として画面に表示されます。

入出力(I/O)アドレス

入出力アドレスは単に「ポート」とも呼ばれ、CPUが物理メモリにメモリアドレスでアクセスするのと同じ要領で、ハードウェアデバイスへアクセスするために使用します。マザーボード上のアドレスバスは、メモリアドレスを運ぶこともあれば、入出力アドレスを運ぶこともあります。

アドレスバスに入出力アドレスが設定されると、各ハードウェアデバイスはこのバスを監視します。たとえばCPUがキーボードと通信したい場合、キーボードの入出力アドレスをアドレスバスに載せます。

アドレスが置かれると、CPUはアドレスライン上のすべての入出力デバイスにそのアドレスを通知します。すると、すべての入出力コントローラーが自分宛てのアドレスかどうかを待ち受けます。ハードディスクコントローラーは「自分のアドレスではない」、フロッピーディスクコントローラーも「違う」と判断しますが、キーボードコントローラーだけは「自分のアドレスだ、応答しよう」と反応します。こうして、キーが押されたときにキーボードがプロセッサとやり取りすることになります。別の捉え方をすれば、バス上の入出力アドレスラインは、古い電話のパーティ回線のように機能します。すべてのデバイスがアドレスを聞いていますが、最終的に応答するのは1台だけです。

ダイレクトメモリアクセス(DMA)チャネル

ハードウェアとソフトウェアが使用するもうひとつのシステムリソースが、ダイレクトメモリアクセス(DMA)チャネルです。これは、入出力デバイスがCPUを完全にバイパスして、メモリへ直接データを送受信できる「近道」の仕組みです。プリンターなど一部のデバイスはDMAチャネルを使うよう設計されていますが、マウスなどはそうではありません。

DMAチャネルは、その設計上新しい方式よりはるかに遅いため、かつてほど普及していません。ただし、フロッピードライブ、サウンドカード、テープドライブといった比較的低速なデバイスは、今でもDMAチャネルを使用することがあります。

まとめ:ハードウェアとソフトウェアの連携

整理すると、次のような関係になります。

  • ハードウェアデバイスは、割り込み要求(IRQ)によってCPUの注意を引く
  • ソフトウェアは、ハードウェアデバイスの入出力アドレスを使ってハードウェアを呼び出す
  • ソフトウェアはメモリをひとつのハードウェアデバイスとみなし、メモリアドレスで呼び出す
  • DMAチャネルは、ハードウェアデバイスとメモリの間でデータを双方向に受け渡す

おすすめ記事: Windows 10の動作が遅いときに試したい改善術11選

以上が、ハードウェアとソフトウェアが連携してシステムリソースを効率的に割り当て・管理する仕組みです。

システムリソースで起こりうるエラー

システムリソースエラーは、最悪のトラブルのひとつです。ある瞬間まで快調に動いていたコンピューターも、リソースを大量に消費するプログラムをダブルクリックしただけで、正常な動作におさらば……なんてこともあり得ます。原因はプログラミングの不備かもしれませんが、厄介なことに、最新のOSでもこの問題は発生します。

実行されるプログラムは、実行に必要なリソースの量と、そのリソースをどれくらいの期間確保する必要があるかをOSに通知するのが原則です。しかし、プログラムの処理の性質上、それが不可能な場合があります。これを「メモリリーク」と呼びます。本来なら、プログラムは要求したメモリやシステムリソースを返却しなければなりません。

返却されないまま放置されると、次のようなエラーが表示されることがあります。

  • 「コンピューターのメモリが不足しています」
  • 「システムリソースが危険なほど不足しています」
  • 「要求されたサービスを完了するのに十分なシステムリソースが存在しません」

など、さまざまな形で現れます。

システムリソースエラーの直し方

タスクマネージャーで原因を特定する

「Ctrl」+「Alt」+「Delete」の3つのキーの組み合わせは、頻繁にシステムフリーズに悩まされる人にとって必須のテクニックです。このキーを押すとタスクマネージャーが直接起動し、各プログラムやサービスが使用しているシステムリソースを一覧で確認できます。

多くの場合、どのアプリケーションが大量のメモリを消費しているのか、あるいは高いディスク読み書きを発生させているのかを特定できます。問題のアプリケーションを見つけたら、そのアプリを完全に終了させるか、アンインストールすることで、失われたシステムリソースを取り戻せます。特定のプログラムが原因でない場合は、タスクマネージャーの「サービス」セクションを確認しましょう。バックグラウンドで静かにリソースを奪っているサービスを突き止めることができます。

スタートアッププログラムを見直す

OSの起動と同時に開始されるサービスは「スタートアッププログラム」と呼ばれ、タスクマネージャーの「スタートアップ」セクションで確認できます。このセクションの便利な点は、リソースを大量に消費するサービスを手動で探す必要がないことです。システムへの影響度を示す「スタートアップへの影響」の評価とともに一覧表示されるため、無効化すべきサービスを簡単に判断できます。

システム全体がフリーズした場合

ここまでの手順は、コンピューターが完全にフリーズしていない場合や、特定のアプリケーションだけが固まっている場合に有効です。では、システム全体が完全にフリーズした場合はどうすればよいのでしょうか? この場合、必要なリソースが不足してOS全体が停止しているため、どのキーも機能せず、コンピューターを再起動する以外に選択肢はありません。誤動作や非互換のアプリケーションが原因だった場合は、再起動で問題が解決することがあります。原因となったアプリケーションを特定できたら、忘れずにアンインストールしておきましょう。

ハードウェア(RAM)の不具合を疑う

上記の手順を試してもシステムが頻繁にハングアップする場合は、ハードウェア関連の問題である可能性があります。特に疑われるのが、ランダムアクセスメモリ(RAM)の不具合です。この場合、マザーボード上のRAMスロットにアクセスする必要があります。RAMモジュールが2枚搭載されている場合は、1枚ずつ個別にシステムを起動してみて、どちらのRAMに不具合があるかを切り分けられます。RAMに問題が見つかった場合は、故障したモジュールを交換することで、システムリソース不足によるフリーズ問題は解決するはずです。

まとめ

本記事では、システムリソースとは何か、あらゆるコンピューティングデバイスに存在する4種類のシステムリソース(IRQ・メモリアドレス・入出力アドレス・DMAチャネル)の仕組み、日常的な作業で遭遇しうるエラーの種類、そしてタスクマネージャーやRAMの点検などを通じてシステムリソース不足の問題を解決する具体的な手順について解説しました。フリーズやメモリ不足エラーに悩まされたときは、ぜひ本記事の内容を参考に、落ち着いて原因を切り分けてみてください。

  1. Windowsのセーフモードとは?3種類のセーフモードの違いと使い方を徹底解説

    本記事では、Windowsのセーフモードとは何か、そしてセーフモードにはどのような種類があるのか——「セーフモード」「ネットワークありのセーフモード」「コマンドプロンプトありのセーフモード」——について、それぞれの意味と違いをわかりやすく解説します。 多くのWindowsユーザーにとって、セーフモードは馴染みのある機能でしょう。Windowsの不具合を診断したりトラブルシューティングを行ったりする際に利用することが多いからです。これまでの記事では、セーフモードでWindowsを起動する方法や、セーフモードへの直接再起動の手順をご紹介してきました。今回は改めて、セーフモードの仕組みと、Wind

  2. OSのカーネルとは?役割・仕組みと5つの種類をわかりやすく解説

    Windows、macOS、Linux、Androidなど、あらゆるオペレーティングシステム(OS)には「カーネル(Kernel)」と呼ばれる中核プログラムが存在します。カーネルはシステム全体の「ボス」のような存在であり、まさにOSの心臓部です。コンピューター上で起こるあらゆる処理はカーネルを経由し、他のすべてを制御するコンピュータープログラムでもあります。本記事では、OSにおけるカーネルとは何か、そしてカーネルにはどのような種類があるのかを詳しく解説します。 OSにおけるカーネルとは カーネルはOSの中核プログラムであるだけでなく、ブートローダーの実行後に最初に読み込まれるプログラムでもあり