オペレーティングシステム——第二章ノート(三)
1772 ワード
一.管路の構成パッケージ:1.ローカル変数のセット2.局所変数操作の一連のプロセス3.ローカル変数を初期化する文.(オブジェクト向けのクラスを連想する)2.管路の特徴プロセスは、スレッドが提供するプロセスエントリを呼び出すことによってのみ、スレッドにアクセスして共有データにアクセスできます.臨界資源を使用するのと同じように、信号量の申請を先に通過しなければならない.2.任意の時点で、1つのプロセスのみがパイプ内で内部プロセスを実行できます.三.管路はどのように同期を実現しますか?1.共有変数に対する反発操作:パイプの特徴は直接この要求を実現し、プロセスは一度にパイプに入って内部プロセスを呼び出して共有変数を操作する.パイプラインの反発アクセスはコンパイラがコンパイル時に自動的に追加し、プログラマの関心を必要とせず、正確さを保証することができる.2.操作の同期制御:条件変数の操作管理で実現する.パイプラインに入りますが、リソース操作を取得できないプロセスはブロックされ、条件を満たすと起動されて実行されます.例:
生産者——消費者問題のプロセス解決方法:
四.パイプストロークの利点は、プロセスが共有変数に反発的にアクセスし、プロセスを容易にブロックおよび起動することを保証する.パイプ・プロシージャは、関数ライブラリとして実装できます.それに比べて、パイプは信号量より制御しやすい. 管路はモジュールの独立性を強化することができる:システムは資源管理の観点からいくつかのモジュールに分解して、データで抽象的なシステム資源を表して、同期操作を相対的に集中させて、それによってモジュールの相対的な独立性を増加しました. パイプを導入すると、コードの可読性が向上し、修正とメンテナンスが容易になり、正確性が保証されやすい:集中同期メカニズムを採用する.1つのオペレーティングシステムまたはコンカレントプログラムは、通常、1つのモジュールが短く、モジュール間の関係が明確であるいくつかのモジュールから構成される.五.管路の欠点 の多くの一般的なプログラミング言語では、パイプが実装されていません.ある言語自体がパイプをサポートしていない場合、パイプに参加することは困難です. は、ほとんどのプログラミング言語でも信号量を実現していないが、P、V動作を独立したサブルーチンまたはオペレーティングシステムの管理プログラム呼び出しとして加えることができる.
type p_c=monitor
var in,out,count: interger;
buffer: array[0,…,n-1] of item
x,y: condition;
procedure entry put(var product:item)
{
if count>=n then x.wait;
buffer[in]=product;
in=in+1 mod n;
count=count+1;
y.signal;
}
procedure entry get(var product:item)
{
if count<=0 then y.wait;
nextc=buffer[out];
out=out-1 mod n;
count=count-1;
x.signal;
}
{
in=out=0;
count=0;
}
生産者——消費者問題のプロセス解決方法:
Producer:
begin
repeat
an item in nextp;
p_c.put(nextp);
until
end
consumer:
begin
repeat
p_c.get(nextc);
an item in nextc;
until
end
四.パイプストロークの利点