CPUがRAMからアプリケーションとデータにアクセスする方法

ジョシュ

アプリケーションがRAMにロードされ、ファイルが開かれた後、CPUがRAMからアプリケーションとデータにアクセスする方法を理解するのに少し問題があります(したがって、ファイルのデータもRAMに保存されます)。

私の理解では、CPUは、プログラムカウンタがティックするか、割り込み後にタスクを実行するときに、RAMから命令を取得するだけです。次に、どのようにしてアプリケーションとデータにアクセスしますか。それは、命令を取得せず(たとえば、アプリケーションで開くハードドライブにファイルをロードする)、その後の命令としてRAMに保存されているアプリケーションによって行われた要求を処理する(保存するなど)ということですか?ファイル)。または、開いているファイルに関連するアプリケーションとデータ(たとえば)はRAMに留まり、CPUからはまったくアクセスされませんか。

同様に、記事を読んだ後、オペレーティングシステムのコピーがRAMに保存されていると言われました。その後、CPUはオペレーティングシステムにアクセスできます。(CPUはRAMからの命令で動作すると思いました)。次に、オペレーティングシステムとどのように通信し、RAM内のOSのコピーまたはハードドライブ内のOSからCPUに割り込みを送信する方法を説明します。

これが本当に紛らわしい場合は申し訳ありませんが、私は理解していませんでした。

表示名

あなたの質問の根源:コンピュータのハードウェアとコンピュータのソフトウェアの明確な区別の欠如。


コンピュータシステムのコンポーネント

私たちがそれらの両方について明確にし、それらの性質を理解するために、次のように述べさせてください。

  • ハードウェア: CPU、RAM、ディスク、レジスター、グラフィックカード、ネットワークカード、メモリバス、および「コンピューター」としてタッチして呼び出すことができるすべてのものが含まれます。体です。
  • ソフトウェア:オペレーティングシステム、プログラム、CPU命令、コンパイラ、プログラミング言語、およびコンピュータに関するほとんどすべての無形のものが含まれます。それは魂です。
  • ファームウェア:ハードウェアの動作に絶対に不可欠なのは、その基本的なコードです。これは、ハードウェア自体にインストールされている読み取り専用メモリに保存されます。このソフトウェアはハードウェアにとって不可欠であるため、ハードウェアとソフトウェアの中間と見なされ、ファームウェアと呼ばれます。

コンピュータが稼働していて、命令を適切に実行していると言ったときから理解することから始めます。しかし、その時あなたは言うでしょう-どうやってここにたどり着いたのですか?それで、私はコンピュータの起動についていくつかのポイントに言及します。


電源ボタンを押すと...

...コンピュータハードウェアにハードライトされた最も原始的で基本的な入出力システム(したがってBIOSと呼ばれます)が実行を開始します。これは読み取り専用メモリに書き込まれ、マシンを自立させるプロセスを開始します。また、ソフトウェア(オペレーティングシステム)を1つのハードウェア(ディスク)から別のハードウェア(RAMおよびCPUレジスタ)にロードして、ソフトウェアがハードウェアで正しく動作できるようにします。

これで、体と魂が一緒になり、個人(機械)が働くことができます。


これまで、OSはすでにRAMとCPUに搭載されていました。When the power button is pressed疑わしい場合は読んでください。)今すぐ質問を段落ごとに処理しましょう-


第一段落

アプリケーションがRAMにロードされ、ファイルが開かれた後、CPUがRAMからアプリケーションとデータにアクセスする方法を理解するのに少し問題があります(したがって、ファイルのデータもRAMに保存されます)。



説明は次のとおりです。

  1. ここでの正確な問題は、データにアクセスするのはCPUとRAMであるというあなたの考えです。CPUとRAMは実行ユニットのみです。
  2. CPUとRAM(ハードウェア)を使ってデータにアクセスするのはOS(ソフトウェア)です。アプリケーションが実行されるのはOSの領域です。
  3. これが、LinuxとWindowsを同じハードウェアにインストールできますが、OSがRAM / CPUではなく実行を行うため、Linuxで.exeファイルを実行できない理由です。
  4. さらに、CPUとRAMおよびディスクが物理的にどのように相互作用してデータを取り込み、実行し、保存し直すかなどは、ハードウェアの領域にあります。それには、論理ゲート(AND、OR、NOT ...)、ダイオード、回路、および電子機器の人が説明できる他の多くのことを含む説明が必要になります。

2番目の段落

私の理解では、CPUは、プログラムカウンタがティックするか、割り込み後にタスクを実行するときに、RAMから命令を取得するだけです。次に、どのようにしてアプリケーションとデータにアクセスしますか。それは、命令を取得せず(たとえば、アプリケーションで開くハードドライブにファイルをロードする)、その後の命令としてRAMに保存されているアプリケーションによって行われた要求を処理する(保存するなど)ということですか?ファイル)。



ご想像のとおり、CPUは命令を受け取りませんが、オペレーティングシステムはCPUを介して命令を受け取ります。また、脳が手と脚に直接動くように指示せず、代わりに神経を使って相互作用するのと同じように、CPUはディスクにデータを与える/取るように指示しません。CPUはRAMで動作し、レジスタのみを使用します。複数のハードウェアユニットが連携して動作し、データと命令が移動するためのパスを提供します。関連するハードウェアの重要な部分は次のとおりです。

  1. プロセッサ(CPUおよびCPUに組み込まれたレジスタ)
  2. キャッシュ
  3. メモリ(RAM)
  4. ディスク
  5. テープ

私はこの回答で提供された画像が好きです。この画像は、ハードウェアの部品をリストするだけでなく、これらの部品の実行速度の大きな違いも示しています。

に移りましょう...


3番目の段落

同様に、記事を読んだ後、オペレーティングシステムのコピーがRAMに保存されていると言われました。その後、CPUはオペレーティングシステムにアクセスできます。(CPUはRAMからの命令で動作すると思いました)。次に、オペレーティングシステムとどのように通信し、RAM内のOSのコピーまたはハードドライブ内のOSからCPUに割り込みを送信する方法を説明します。



これで、実際にOSがRAMおよびCPUレジスタに存在することをすでに知っています。それが住んでいるところです。それはそれがCPUにどのように働くかを教えるところからです。OSが十分に小さい場合(またはレジスタとキャッシュが十分に大きい場合)、OSはCPUの近くに存在します。

  • CPUはOSと通信しません。できません。上司に支配されているのは労働者です。OSはその上司です。
  • CPUはオペレーティングシステムにアクセスできませんCPUは体であり、OSは魂です。魂は体に何をすべきかを伝えますが、その逆ではありません。
  • CPUはRAMからの命令では機能しません。オペレーティングシステム(RAMに存在する可能性があります)によって指定された命令を実行するだけです。したがって、OSのモジュールをRAMにロードする命令がある場合でも、その命令を発行するのはRAM / CPUではなくOS自体です。
  • 割り込みには、ハードウェアとソフトウェアの2つのタイプがあり、クエリはソフトウェア割り込みに関するものです。OSの実行部分はRAMにあるので、簡単に言えば、割り込みはRAMにあるOSからCPUに送信されると言えます。

結論

ハードウェアとソフトウェアの区別の欠如は、混乱の基本的な原因です。より深く理解するためにCourseraまたはAcademicEarthのオペレーティングシステムに関するコースを受講してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

xamppのmysqlサーバーを外部に配置せずにJavaアプリケーションからデータベースにアクセスする方法

分類Dev

Entity Framework6を使用して.NetアプリケーションからSnowflakeデータベースにアクセスする方法

分類Dev

アプリケーションをデバッグするときにExcelからコンボボックスにデータをロードする方法

分類Dev

DjangoアプリケーションでPostgreSQLデータベースにアクセスする方法

分類Dev

AndroidアプリケーションでMySQLデータベースにアクセスする方法は?

分類Dev

デスクトップアプリケーションからWebSocketにアクセスする

分類Dev

外部からEmberアプリケーションインスタンスにアクセスする(cordova)

分類Dev

SpringBootアプリケーションからSessionFactoryにアクセスする

分類Dev

.NetWebアプリケーションからIBMInformixにアクセスする

分類Dev

WebアプリケーションからHDFSにアクセスする

分類Dev

アプリケーション内からJBossデータディレクトリにアクセスするにはどうすればよいですか?

分類Dev

AndroidアプリケーションからFirebaseデータベースにデータを追加する方法

分類Dev

別のマシンのJSFアプリケーションからEJBにアクセスする方法

分類Dev

データベースにアクセスするとアプリケーションがクラッシュする

分類Dev

ホストからコンテナのWebアプリケーションにアクセスする方法

分類Dev

Webアプリケーションからデータベースにアクセスするためのベストプラクティス

分類Dev

クラスタ外のアプリケーションからkubernetesのpostgresにアクセスする

分類Dev

ターミナルからデスクトップでアプリケーションを起動するときにログを無効にする方法

分類Dev

JavaでhttpsからWebアプリケーションにアクセスできるようにする方法

分類Dev

通知からアプリケーションにデータを送信する方法

分類Dev

別のSpringBootアプリケーションから1つのSpringBootアプリケーションのメモリh2データベースにアクセスする方法

分類Dev

Webブラウザ(Javascript)からクレデンシャルにアクセスするGoogleドライブAPIアプリケーションデータ

分類Dev

アプリケーションデータをクリアするときにインスタンスIDが無効にならない

分類Dev

bashスクリプトからJavaアプリケーションにデータを正しく渡す方法

分類Dev

MVVMアプリケーションでコアデータスタックにアクセスする

分類Dev

MVVMアプリケーションでコアデータスタックにアクセスする

分類Dev

.NetCoreアプリケーションのどこからでも構成にアクセスする方法

分類Dev

外部アプリケーションからSymfonyセッション値にアクセスする

分類Dev

NetworkAccessManager-> get()コールバックからQList <QLlnkedList <QUrl> *>にアクセスすると、Qtアプリケーションがフリーズします

Related 関連記事

  1. 1

    xamppのmysqlサーバーを外部に配置せずにJavaアプリケーションからデータベースにアクセスする方法

  2. 2

    Entity Framework6を使用して.NetアプリケーションからSnowflakeデータベースにアクセスする方法

  3. 3

    アプリケーションをデバッグするときにExcelからコンボボックスにデータをロードする方法

  4. 4

    DjangoアプリケーションでPostgreSQLデータベースにアクセスする方法

  5. 5

    AndroidアプリケーションでMySQLデータベースにアクセスする方法は?

  6. 6

    デスクトップアプリケーションからWebSocketにアクセスする

  7. 7

    外部からEmberアプリケーションインスタンスにアクセスする(cordova)

  8. 8

    SpringBootアプリケーションからSessionFactoryにアクセスする

  9. 9

    .NetWebアプリケーションからIBMInformixにアクセスする

  10. 10

    WebアプリケーションからHDFSにアクセスする

  11. 11

    アプリケーション内からJBossデータディレクトリにアクセスするにはどうすればよいですか?

  12. 12

    AndroidアプリケーションからFirebaseデータベースにデータを追加する方法

  13. 13

    別のマシンのJSFアプリケーションからEJBにアクセスする方法

  14. 14

    データベースにアクセスするとアプリケーションがクラッシュする

  15. 15

    ホストからコンテナのWebアプリケーションにアクセスする方法

  16. 16

    Webアプリケーションからデータベースにアクセスするためのベストプラクティス

  17. 17

    クラスタ外のアプリケーションからkubernetesのpostgresにアクセスする

  18. 18

    ターミナルからデスクトップでアプリケーションを起動するときにログを無効にする方法

  19. 19

    JavaでhttpsからWebアプリケーションにアクセスできるようにする方法

  20. 20

    通知からアプリケーションにデータを送信する方法

  21. 21

    別のSpringBootアプリケーションから1つのSpringBootアプリケーションのメモリh2データベースにアクセスする方法

  22. 22

    Webブラウザ(Javascript)からクレデンシャルにアクセスするGoogleドライブAPIアプリケーションデータ

  23. 23

    アプリケーションデータをクリアするときにインスタンスIDが無効にならない

  24. 24

    bashスクリプトからJavaアプリケーションにデータを正しく渡す方法

  25. 25

    MVVMアプリケーションでコアデータスタックにアクセスする

  26. 26

    MVVMアプリケーションでコアデータスタックにアクセスする

  27. 27

    .NetCoreアプリケーションのどこからでも構成にアクセスする方法

  28. 28

    外部アプリケーションからSymfonyセッション値にアクセスする

  29. 29

    NetworkAccessManager-> get()コールバックからQList <QLlnkedList <QUrl> *>にアクセスすると、Qtアプリケーションがフリーズします

ホットタグ

アーカイブ