こんにちは、プペウアです。普段はC言語、C++、データ構造アルゴリズムなどを更新しています...興味のある方はぜひフォローしてください!がっかりすることはありません。
この記事のナビゲーション
コンピュータはハードウェア + ソフトウェアの2 つの部分で構成されており、ハードウェア関連部分はノイマン アーキテクチャ、ソフトウェア関連部分はオペレーティング システムです。
1. フォン・ノイマンアーキテクチャ
現在、ほとんどのコンピューター (ラップトップ、サーバーなど) はフォン ノイマン アーキテクチャに準拠しています。実際のモデルの詳細はさらに複雑です。これは抽象化後の単純なモデルです。その構造モデルは次のとおりです。
この図では、赤がデータ送信信号、黒が制御信号です。
入力デバイスは次のとおりです:キーボード、マウス、ハードディスク、その他のデバイス
出力デバイスは次のとおりです:モニター、プリンター、ハードドライブ、その他のデバイス
演算装置と制御装置を総称してCPUと呼びます
ここでいうメモリとはハードディスクではなくメモリのことを指します。
なぜこのように設計されているのでしょうか?
入力デバイスと出力デバイスの速度は CPU の速度よりもはるかに遅く、メモリの速度はその中間の速度です。
バレル効果から、パフォーマンスは欠点によって決まることが多いことがわかります。
CPU が入出力デバイスに直接接続されている場合、CPU はほとんどの時間 IO デバイスを待機することになり、CPU を効率的に使用できません。
媒体としてメモリを追加すると、この問題が大幅に解決され、CPU 使用率が向上します。
では、なぜ最速のキャッシュを選択しないのでしょうか?
ストレージピラミッドによれば、上に行くほど価格も高く、速度も速くなりますが、最速のキャッシュをすべて使用すると、コンピューターはコストが高く普及できなくなります。
一言で言えば、すべてのデバイスはメモリのみを処理できます。
フォン ノイマン アーキテクチャに関しては、次の 2 つの例から理解することができます。
-
QQにログインすると、友達とチャットすることができます(ネットワーク通信レベルは関係ありません)。
まず、キーボードを入力デバイスとして使用し、データを入力し、そのデータをメモリに入れてCPUで処理し、処理後に出力デバイス、この時点ではネットワークカードに入れます。
友達のコンピュータに送信します。
同様に、彼のコンピュータもこのアーキテクチャを満たしています。ネットワーク カードは入力デバイスとして機能します。メッセージを受信すると、メッセージをメモリに保存します。CPU がメッセージを処理した後、出力デバイスの画面に表示します。
-
qq 経由でファイルを転送する
まず、ハードディスクを入力装置として使用し、データを入力し、そのデータをメモリに入れてCPUで処理し、処理後、出力装置(この時点ではネットワークカード)に送ります。。
友達のコンピュータに送信します。
同様に、彼のコンピュータもこのアーキテクチャを満たしています。ネットワーク カードが入力デバイスとして使用されます。ファイル データを受信した後、ファイル データをメモリに配置します。CPU がファイル データを処理した後、ファイル データをコンピュータのハードディスクに保存します。出力デバイス。
2. オペレーティングシステムの概念
オペレーティング システムは管理ソフトウェアの一部です。上記のノイマン アーキテクチャはハードウェア レベルを示しています。しかし、各ハードウェアはどのように連携するのでしょうか?これがオペレーティング システムの意味です。
なぜオペレーティング システムが必要なのでしょうか?
- ユーザーがソフトウェアとハードウェアのリソースを管理できるようにする
- ユーザーに効率的な操作環境を提供するために、コンピュータを使用する人は一般ユーザーとプログラマーの2種類に大別され、前者は主にプログラマーが開発したソフトウェアを使用します。彼らは実際にオペレーティング システムを使用する人々です。
オペレーティング システムはユーザーを信頼せず、自らをカプセル化するため、ほとんどの場合、その詳細を見ることはできませんが、独自のセキュリティを維持し、ユーザーにサービスを提供するために、ユーザーは提供するインターフェイスを介してのみオペレーティング システムにアクセスできます。インターフェイスを呼び出す
言い換えると: **オペレーティング システムへのアクセスは、システム コールを通じてのみ完了できます。**これにより、システムのセキュリティと安定性が確保されます。
オペレーティング システムを管理するにはどうすればよいですか?
まずシナリオを想像してみましょう。
校長は学校の生徒全員をどのように管理していますか?
まず、データを記述し、各学生の情報を特定の形式で記録し、データを整理して管理しやすいように Excel の表にまとめ、特定の学生を見つけたい場合は、特定の属性で検索するだけです。
オペレーティング システムでも同様で、管理する必要がある各オブジェクトは、まず特定の形式でデータを記述し、次にそれをデータ構造を通じて編成します。
したがって**、オペレーティング システムでは、あらゆるオブジェクトの管理を、特定の種類のデータ構造の追加、削除、チェック、変更に変換できます。**
具体的なやり方については後ほどお話します。
先ほど書いたアドレス帳は、まず一人一人の人物を記述し、それを整理するだけの作業であり、ある意味、OSと同じです。
//描述
struct Person{
int age;
int tel;
string address;
};
//组织
struct Contact
{
Person p[100];
};
printf() 関数を呼び出すときは何をしているのでしょうか?
ハードウェアを呼び出す各関数の内部にはシステムコールインターフェースがカプセル化されており、システムコールインターフェースを通じてドライバーやハードウェアにアクセスし、最終的に画面に表示します。