[Linux] プロセスの概念 I - オペレーティング システムの概念とフォン ノイマン アーキテクチャ

画像

こんにちは、プペウアです。普段はC言語、C++、データ構造アルゴリズムなどを更新しています...興味のある方はぜひフォローしてください!がっかりすることはありません。


ここに画像の説明を挿入します

コンピュータはハードウェア + ソフトウェアの2 つの部分で構成されており、ハードウェア関連部分はノイマン アーキテクチャ、ソフトウェア関連部分はオペレーティング システムです。

1. フォン・ノイマンアーキテクチャ

現在、ほとんどのコンピューター (ラップトップ、サーバーなど) はフォン ノイマン アーキテクチャに準拠しています。実際のモデルの詳細はさらに複雑です。これは抽象化後の単純なモデルです。その構造モデルは次のとおりです

bf9b4e7ba426b5cf8416ca9e992684c

この図では、赤がデータ送信信号、黒が制御信号です。

入力デバイスは次のとおりです:キーボード、マウス、ハードディスク、その他のデバイス

出力デバイスは次のとおりです:モニター、プリンター、ハードドライブ、その他のデバイス

演算装置と制御装置を総称してCPUと呼びます

ここでいうメモリとはハードディスクではなくメモリのことを指します。

なぜこのように設計されているのでしょうか?

入力デバイスと出力デバイスの速度は CPU の速度よりもはるかに遅く、メモリの速度はその中間の速度です。

バレル効果から、パフォーマンスは欠点によって決まることが多いことがわかります。

画像-20230826170459034

CPU が入出力デバイスに直接接続されている場合、CPU はほとんどの時間 IO デバイスを待機することになり、CPU を効率的に使用できません。

媒体としてメモリを追加すると、この問題が大幅に解決され、CPU 使用率が向上します。

では、なぜ最速のキャッシュを選択しないのでしょうか?

ストレージピラミッドによれば、上に行くほど価格も高く、速度も速くなりますが、最速のキャッシュをすべて使用すると、コンピューターはコストが高く普及できなくなります。

一言で言えば、すべてのデバイスはメモリのみを処理できます。

フォン ノイマン アーキテクチャに関しては、次の 2 つの例から理解することができます。

  1. QQにログインすると、友達とチャットすることができます(ネットワーク通信レベルは関係ありません)。

    まず、キーボードを入力デバイスとして使用し、データを入力し、そのデータをメモリに入れてCPUで処理し、処理後に出力デバイス、この時点ではネットワークカードに入れます

    友達のコンピュータに送信します。

    同様に、彼のコンピュータもこのアーキテクチャを満たしています。ネットワーク カードは入力デバイスとして機能します。メッセージを受信すると、メッセージをメモリに保存します。CPU がメッセージを処理した後、出力デバイスの画面に表示します

7bdcc5af99426bfbb2949a57573a0c9

  1. qq 経由でファイルを転送する

    まず、ハードディスクを入力装置として使用し、データを入力し、そのデータをメモリに入れてCPUで処理し、処理後、出力装置(この時点ではネットワークカード)に送ります

    友達のコンピュータに送信します。

    同様に、彼のコンピュータもこのアーキテクチャを満たしています。ネットワーク カードが入力デバイスとして使用されます。ファイル データを受信した後、ファイル データをメモリに配置します。CPU がファイル データを処理した後、ファイル データをコンピュータのハードディスクに保存します。出力デバイス

1aa497326af28e1501e009b51e52fa5

2. オペレーティングシステムの概念

オペレーティング システムは管理ソフトウェアの一部です。上記のノイマン アーキテクチャはハードウェア レベルを示しています。しかし、各ハードウェアはどのように連携するのでしょうか?これがオペレーティング システムの意味です。

なぜオペレーティング システムが必要なのでしょうか?

  1. ユーザーがソフトウェアとハ​​ードウェアのリソースを管理できるようにする
  2. ユーザーに効率的な操作環境を提供するために、コンピュータを使用する人は一般ユーザーとプログラマーの2種類に大別され、前者は主にプログラマーが開発したソフトウェアを使用します。彼らは実際にオペレーティング システムを使用する人々です。

オペレーティング システムはユーザーを信頼せず、自らをカプセル化するため、ほとんどの場合、その詳細を見ることはできませんが、独自のセキュリティを維持し、ユーザーにサービスを提供するために、ユーザーは提供するインターフェイスを介してのみオペレーティング システムにアクセスできます。インターフェイスを呼び出す

言い換えると: **オペレーティング システムへのアクセスは、システム コールを通じてのみ完了できます。**これにより、システムのセキュリティと安定性が確保されます。

オペレーティング システムを管理するにはどうすればよいですか?

まずシナリオを想像してみましょう。

校長は学校の生徒全員をどのように管理していますか?

まず、データを記述し、各学生の情報を特定の形式で記録し、データを整理して管理しやすいように Excel の表にまとめ、特定の学生を見つけたい場合は、特定の属性で検索するだけです

オペレーティング システムでも同様で、管理する必要がある各オブジェクトは、まず特定の形式でデータを記述し、次にそれをデータ構造を通じて編成します

したがって**、オペレーティング システムでは、あらゆるオブジェクトの管理を、特定の種類のデータ構造の追加、削除、チェック、変更に変換できます。**

具体的なやり方については後ほどお話します。

先ほど書いたアドレス帳は、まず一人一人の人物を記述し、それを整理するだけの作業であり、ある意味、OSと同じです。

//描述
struct Person{
    
    
  int age;
  int tel;
  string address;
};
//组织
struct Contact
{
    
    
  Person p[100];  
};

6bb2ef0104c16313701e6047fb28c4b

printf() 関数を呼び出すときは何をしているのでしょうか?

ハードウェアを呼び出す各関数の内部にはシステムコールインターフェースがカプセル化されており、システムコールインターフェースを通じてドライバーやハードウェアにアクセスし、最終的に画面に表示します。
画像-20230905164632777

おすすめ

転載: blog.csdn.net/qq_62839589/article/details/132792583