目次
2. オペレーティング システムがハードウェアとソフトウェアのリソースを管理する方法
1. まずハードウェアについて話しましょう
1. ノイマン型アーキテクチャの予備的な理解
私が今知っているコンピューターはすべてハードウェアで構成されており、すべて次のシステムに従っています。
まずはフォン・ノイマンのアーキテクチャをゆっくり理解しましょう。
1) 記憶とは何を指しますか?
ストレージとはメモリを指し、ディスクなどのハードウェアは入出力デバイスです。
2) 入力デバイス: キーボード、カメラ、マイク、ディスク、ネットワーク カード...
3) 出力デバイス: モニター、プレーヤー ハードウェア、ディスク、ネットワーク カード...
入出力デバイスは外部デバイスとも呼ばれ、周辺機器とも呼ばれます。
4) 電卓: 入力したデータに対して計算タスク (算術演算、論理演算) を実行します。
5) コントローラー: 当社のコンピューティングハードウェアプロセスをある程度制御するため
これら 2 つを総称して中央処理装置 (CPU) と呼びます。
そして、これら 5 つのコンポーネントは独立した実体です。システムが機能することを望み、
さまざまなハードウェア ユニットは、バスと呼ばれる「ワイヤ」で接続する必要があります。1. システム バス、2. IO バス。
2. モジュール間の連携を理解する
あるいはこの写真:
まず結論からお話しますと、
まず、入力デバイスがメモリに渡され、中央処理装置がメモリからデータを取得して内部で計算を実行し、計算結果をメモリに書き戻し、入力デバイスにデータを更新します。これがノイマン システムのデータの流れです。
ストレージについて話しましょう:
一般的に、ストレージ容量が大きくなるほど速度は遅くなります。低速の周辺機器と高速の中央処理装置がメモリを介してデータをより適切に操作できるように、システムにバッファとしてメモリが必要なのはまさにこのためです。
非常に多くのモジュール間の連携について言えば、誰がその連携を実現するのでしょうか? オペレーティング·システム。
2. もう一度ソフトウェアについて話します
私たちのコンピュータには QQ、WeChat、ブラウザなどが搭載されていますが、コンピュータはそれらをいつ使用するかをどのようにして判断するのでしょうか? したがって、それらを全体として調整するものが必要です。つまり、オペレーティング システム、
オペレーティング システムは、ハードウェアとソフトウェアを管理できる管理ソフトウェアです。
1. オペレーティング システムが存在する理由
コンピューター全体は階層構造になっています。次のような図を見てください。
下から上に、最初にハードウェアとドライバーがあります。すべてのハードウェアをソフトウェアで使用する必要がある場合は、対応するドライバーを搭載する必要があります。ハードウェアを直接扱うソフトウェア、そしてその上にあるオペレーティング システムと理解できます。 top. 後で注目する必要があるのは、プロセス管理とファイル管理です。
元の話題に戻りますが、なぜオペレーティング システムが必要なのでしょうか?
1) オペレーティング システムは、ユーザーがこれらのハードウェアおよびソフトウェア リソースを管理するのに役立ちます。(手段)
2) ユーザーに良好な(安定、効率的、安全な)動作環境を提供するため。(目的)
オペレーティング システムにはあらゆる種類のデータがありますが、オペレーティング システムはすべてのユーザーを信頼しているわけではありません。したがって、オペレーティング システムは、自身のデータのセキュリティを確保し、ユーザーへのサービスの提供を確実にするために、オペレーティング システムの内部リソースを取得するためのインターフェイスの形式でユーザーを呼び出すためのアクセスをユーザーに提供します。
では、インターフェースとは何でしょうか? Linux オペレーティング システムは基本的に C 言語で書かれているため、いわゆるインターフェイスは実際には C 言語によって実装された独自の内部関数呼び出しであり、これをシステム コールと呼びます。ただし、オペレーティング システムへのアクセスはすべて、システム コールを通じてのみ行うことができます。
この図をもう一度見てください。上はシステム コール システム コール インターフェイスです。
次に、使い慣れたシェルシェルを含むユーザー操作インターフェイスがあり、次に lib (ライブラリ) があり、システムコールはまだ比較的複雑であるため、言語によってはそれをライブラリにパッケージ化して使用できるようにします。 。
どの言語でも、ハードウェアを直接的または間接的に使用したい場合は、オペレーティング システムを介して、システム コール インターフェイスを使用する必要があります。
以上がコンピュータ全体の階層構造になります。
2. オペレーティング システムがハードウェアとソフトウェアのリソースを管理する方法
まず管理とは何かを理解しましょう。
1) 管理者と管理される者は、会う必要がない(学校と同じように、学生である私たちは通常、校長に会わないし、会社でも通常、上司とは必ずしも会わない(私は会わなかった)中小企業ではそんなことは言えません))
2) マネージャーは、管理対象を確認せずに、どのようにしてうまく管理できるでしょうか? 核となるのは経営情報であり、経営者が経営情報を入手すれば、将来の経営判断が可能となる 経営の本質は、「データ」の管理を通じて人を管理することである。
3) 管理者も管理対象者もお互いを見ることができません。対応するデータを取得するにはどうすればよいですか? (最初に概念を追加します。マネージャーとは何ですか? 私たちは一般に、世の中のすべてのものを 2 つのタイプに分けます。1 つは意思決定で、もう 1 つは実行です。たとえば、「今夜は何を食べますか? 麺類を食べましょう。これは意思決定; 今から麺を作るつもりです これが実行です 実際には意思決定をするのが経営者で、実行するのが管理される側ですが、私たちの日常生活では基本的に意思決定と実行は一体です。 ) 管理者は対応するデータを取得する必要があります。
それで!
オペレーティング システムを管理する場合、ソフトウェアとハードウェアを確認する必要がありますか? いいえ、オペレーティング システムはどうやってステータス データを取得できるのでしょうか? ハードウェアを例に挙げると、オペレーティング システムはドライバーを通じてデータを取得します。
オペレーティング システムは、何かを管理するために「最初に記述してから組織化する」という戦略に従う必要があり、構造を使用してオブジェクトを記述し、それをデータ構造で組織して、次のような状態を実現する必要があります。オブジェクトの管理は、最終的には特定のデータ構造の追加、削除、確認、変更に変換できます。
結論: オペレーティング システムはどのように管理されますか?
最初に説明し、後で整理します。
3. プロセスについてもう一度話す
1. プロセスとは
メモリにロードされたプログラムはプロセスと呼ばれます。
Linux でプロセスを作成して見てみましょう。
単にプログラムを書いて実行するだけです。
次に、SSH チャネルをコピーしてプロセスを確認します。
ps axj | head -1 && ps axj | grep process
したがって、実際には、実行中のプログラムはプロセスと呼ばれます。
2. プロセスを理解する方法
オペレーティング システムは 1 つのプロセスを実行するだけでなく、複数のプロセスを同時に実行することもできます。
オペレーティング システムはプロセスを管理する必要がありますが、プロセスを管理するにはどうすればよいでしょうか? 最初に説明し、後で整理します。
プロセスがメモリにロードされるとき、実際のプロセスを形成するとき、オペレーティング システムは最初にプロセスを記述するために使用される構造オブジェクト (PCB、プロセス制御ブロック、プロセス制御ブロック) を作成する必要があります。
ここで、プロセスをこのようにどのように説明すべきかという疑問が生じます。さまざまな属性の集合で物を記述します。したがって、いわゆる PCB は実際にはプロセス属性の集合です。つまり、PCB は次のような構造になります。
構造体 PCB {
プロセスの番号、
プロセスの状態、
プロセスの優先順位、
……
}
システムは、プロセスの PCB タイプに従って、プロセスに対応する PCB オブジェクトを作成します。
では、プロセスとは何ですか?そのプロセスは PCB なのでしょうか? いいえ、実際のプロセスは次のとおりです。
プロセス = カーネル PCB データ構造オブジェクト + 対応するプログラムのコードとデータ
もちろん、プロセス PCB には、プロセスを説明するすべての属性が含まれています。このように、オペレーティング システムはコードやデータを管理せず、プロセス PCB を管理することのみが必要になります。このようにして、プロセス上のオペレーティング システムのすべての管理操作は、PCB などのデータ構造への追加、削除、チェック、および変更になります。
3. Linux がプロセスを管理する方法
先ほど、プロセスがどのようなものかを理解しましたが、Linux オペレーティング システムはどのようにプロセスを編成し、管理するのでしょうか?
Linux オペレーティング システムの PCB は次のとおりです。 task_struct (プロセスは実際にはタスクと呼ばれることもあります)。プロセス task_struct は、Linux カーネル内の基本的な二重リンク リストの形式で編成されます。
task_struct がどのように見えるかについては、次に何が起こるかを知りたい場合は、次の章を聞いて分解してみましょう~
最後に次のように書きます。
以上が今回の記事の内容となります、読んでいただきありがとうございます。
何かを得たと感じたら、ブロガーに「いいね! 」を与えることができます。
記事の内容に抜けや間違いがある場合は、ブロガーにプライベートメッセージを送信するか、コメントエリアで指摘してください〜