プロセスと物語1のクライマックススレッド:私は、オペレーティングシステム(V)を作成する方法を学んでいました

序文

なぜこのタイトルにそれを選んだのですか?まず、オペレーティングシステムなどのプロセスやスレッドがコアの最も重要な部分です。第二に、一緒にタイトルをこすり、ほとんど言葉を向かう前にすることを余儀なくアイスキャンディーを引くアイスキャンディー、ない単語を、食べてください。

前章書かれたプロシージャコールシステムは、少しエピソード、この部分は可能なはずですどんなにを検討しました。

今、このシリーズはすでに離れて漂流する前に見出し、そして元々のおもちゃ型オペレーティングシステムの書き込みの前にしたかったFragileOSにメインラインを、少し変更さ方向にビットを読むことを学習するプロセスでは、特に操作を懸念されていません内部プロセスとシステムリンクの完全な実装は、より多くのオペレーティングシステムの様々なモジュールを学ぶことで、その後、いくつかのコードを補足し、とにかく、オペレーティングシステムの学習過程で自分の記録です

にゲット

プロセス

プロセスは、主な理由は、ほとんどのCPU使用率を向上させたいということです表示されます

定義されたプロセス

  • プログラムが実行されています
  • インスタンス上で実行されているコンピュータプログラム
  • これは、プロセッサによって実行される物理プロセッサに割り当てることができます
  • 命令のセット、および関連するシステムリソースの現在の設定状態を実行します

マルチプロセス・組織

同時に実行されているシングルコアのCPUは、1つの命令のみでは、いわゆるマルチプロセスは、前後に錯覚を切り替えるコマンドが、スピードが速すぎるので、それは同時に見ることができます。切り替えのプロセスを整理する必要性にスイッチングする過程でそう

プロセス制御ブロック(プロセス制御ブロック)

切替制御処理は、重要なプロセス制御ブロックデータ構造(プロセス制御ブロック)であり、各プロセスは、属性のセット、ならびにプロセスを制御するためのオペレーティング・システムの数に関連しています

処理ブロック制御動作、プログラムは、(データを含む)環境をマルチプログラミングの下で​​行わ別ないように、基本的な単位は、独立して、プロセスが他のプロセスと同時に実行することができ、動作させることができます。または、オペレーティングシステムは、PCBに従って行う複雑なプロセスを制御および管理することです。

一般的には、PCBの内容は次のとおりです。

  • プロセス識別子(内部、外部)
  • 情報プロセッサ(汎用レジスタ、命令カウンタ、PSW、ユーザスタックポインタ)。
  • プロセススケジューリング情報(状態優先処理、プロセス、その他の情報が必要なプロセススケジューリング、イベント)
  • プロセス制御情報(アドレス、プログラムのリソースインベントリデータ、プロセスの同期と通信機構、リンクポインタ)

ファイブ状態モデルプロセス

スケジューリングプロセス

一般的には、事件のこれらの種類を行うことができるプロセスは、スイッチが発生しています:

しかし、PCの開発で、この状況は、2つの方法で変更されました。まず、時間だけアクティブなプロセスのほとんど。結局、一般的には、ときに、システムがバックグラウンドでプログラムをコンパイルできるようにしてもそうしながら、ファイルを編集するためにWordを使用。このような状況下で、実際には、スケジューラは、プロセス--wordは最後の実行ではほぼ唯一の選択肢であるかを決定するために多くを行う必要はありません。第二に、コンピュータの速度が速く、CPUはとても希少もはやかもしれないので。多くのPCプログラムについて、その主な制限は、ユーザが、比例ではなく、比例CPUが入力を扱うことができることができるということです。2つのプログラムが実際にユーザが同時に両方のプログラムの出力を待っているかもしれないので、最初の行を予定している、実行、中に同時に例えば害、WordやExcelを実行していない最初に予定されていると同時に、でさえも真である場合であっても。

しかし、ネットワーク・サーバのために、このような状況は別の問題です。CPUのリソースの競合が非常に多くのプログラム、およびそのため、スケジューリングは非常に重要になっています。例えば、スケジューラは、最終的に決定する必要があり、プロセスは、毎日の統計を実行してみましょうか、ユーザーの要求にプロセスの実行応答をさせることです。

どのプロセスを実行するために選択する際に考慮すべき加えて、スケジューラは、アカウントにシステムのパフォーマンスを取る必要があります。結局のところ、プロセス間での切り替えが状態、保存処理の状態など回復動作カーネルするユーザモードに切り替えることを含む、オーバーヘッドの多くは、です。

参考リンク

同期とコラボレーションプロセス

メモリ管理

現在のプロセスの動作は、このような読み出し、書き込みプロセスのメモリなどの他のプロセスの動作に影響を与えないことを確認する方法の過程で前後に切り替え、範囲外ではないことを確認する必要があります

だから我々は、プロセスの分離の間にオープンスペースに対処するためのメカニズムが必要です

同期プロセス

相互拘束関係の異なるプロセス間で異なるがあります。プロセス間の競合を避けるために、相互拘束、リソースの共有とプロセスの調整のプロセスとの間の関係を調整するために、我々は、プロセス同期の概念を必要とします。

我々は唯一のプロセスが重要なリソースになるためにリソースを使用できるように、複数のプロセスがシステム内のさまざまなリソースを共有することができますが、多くのリソースが唯一のプロセスとして使用することができます。
重要なリソースへのアクセスは、相互に排他的でなければなりません。各プロセスは、重要なリソースへのアクセスは、そのコードは、クリティカルエリアとなります。
重要な資源の適切な使用を確保するために、重要なリソースにアクセスできるプロセスは、4つのセクションに分かれています。

  • エリアに。重要なリソースを使用してクリティカル領域に入るためには、重要なゾーンに入る可能性をチェックするために行きます。
  • クリティカルセクション。そのコードの過程で重要なリソースへのアクセス。
  • 出口領域。兆候はクリア重要な領域にアクセスしています。
  • 残りの領域。コードの残りの部分。

これらの一般的な実装プロセスを同期する方法はいくつかあります。

  • 提供言及したハードウェア
  • セマフォ
  • チューブ

スレッド

プロセスがリソース割り当ての最小単位であり、スレッドは、CPUスケジューリングの最小単位であります

スイッチングの過程でも、メモリリソースへの切り替えが必要になりますが、スレッドは、リソースに切り替える必要がないので、プログラムの導入は、オペレーティングシステムのパフォーマンスを向上させるために、同時実行のための同時を支払うためにオーバーヘッドが時間と空間を削減することです。

ユーザーレベルのスレッドとカーネルレベルスレッド

ユーザーレベルのスレッドは、スレッドがユーザプログラム、無知なカーネルスレッドのパッケージに実装されたカーネルのサポートを必要としないことを意味します。ビューのカーネルの観点から、それは、シングルスレッドのプロセスを管理するための通常の方法であるが、それは、マルチコアCPUの活用として、カーネルレベルのスレッドのようにすることはできません。

カーネルレベルスレッド作成と破棄が完了するまで、システムコールを通じて、オペレーティングシステムの責任です。カーネルのサポートを実行して、スレッドのユーザプロセス、またはシステム・プロセスのスレッドのいずれか、彼らが作成、破棄、カーネルの実装に依存して切り替えます。

  • 何のカーネルレベルのスレッドが存在しない場合は、オペレーティング・システム・レベルで、彼らはすべてのプロセスを使用するために属しているため、すべてのスレッドがブロックされてつながる、それは直接意志、ユーザレベルスレッドがI / Oブロッキングを実行する際に、想像してみて切替処理、他のスレッドの実装の欠如

  • マルチプロセッサシステムでは、カーネルレベルのスレッドが本当に同じプロセス内で複数のスレッドを実行することが可能な、並列を実現することができます

概要

これは、タイムコードがバックでの綿密な外観を再実装され、書籍の一部の要約の主要な概念は、何の乾燥品はありませんです。次は、上記のプロセスでLinux0.12を達成するために行くかもしれません。

おすすめ

転載: www.cnblogs.com/secoding/p/11417547.html