グラフィカル オペレーティング システムの p、v 操作

p、v オペレーティング システムの動作

コンピュータの中核はすべてのコンピューティング タスクを引き受ける CPU であり、オペレーティング システムはコンピュータの管理者であり、タスクのスケジューリング、リソースの割り当てと管理を担当し、コンピュータ ハードウェア全体を制御します。

1. オペレーティング システムの関連定義

1. オペレーティング システムの定義:

操作系统是控制和管理计算机硬件和软件资源、合理的组织计算机流程以方便用户使用的程序的集合。

2. オペレーティング システムの機能:

(1) 同時実行 (ブロッキング)。
並行性と並列性は、違いのある 2 つの異なる概念です。並列性とは、2 つ以上のイベントが同時に発生することを意味し、同時性とは、2 つ以上のイベントが同じ時間間隔内に発生することを意味します。同時実行はマクロレベルでは同時に発生しますが、ミクロレベルでは交互に実行されます。

(2) 共有。2 種類の共有: 排他的共有と一定期間にわたる同時共有

(3) 仮想性

(4) 不確実性。マルチプログラミング環境では、各プログラムが非同期で実行され、複数のプログラムの実行順序が不定になります。

3. マルチコアシングルCPU

現在、当社のコンピュータはマルチコア シングル CPU またはマルチコア マルチ CPU です。マルチコア シングル CPU に必要なのは、一連のチップセットと一連のストレージだけであり、マルチコアはチップの内部バスを通じて通信し、メモリを共有します。マルチスレッド プログラムを実行すると、より高速な実行速度とより高い計算能力で並列実行できます。

2. プロセスに関する概念

1. プロセスの定義:

进程是程序的一次执行,改程序可以和其他程序并发执行;
它是一个动态的实体,在传统的计算机设计中,进程即使基本的分配单元,也是基本的执行单元。

それは上記の概念からもわかります。このプロセスには主に次の特徴があります。

1)进程是一个实体。每一个进程都有自己的地址空间,一般情况下,包括文本域 数字域和堆栈。

2)进程是一个执行中的程序,具有独立性 并发性和动态性。

2. プロセスの構成:

3. プロセスの状況と推移

(1) プロセスの基本的な状態:

运行态:进程已经获得资源,并占有处理机,处理机正在执行该进程的程序。

阻塞态:等待态、挂起态或者睡眠态。此时程序因为某个事件而暂时不能运行。如等待IO操作

就绪态:进程等待为其分配CPU,而CPU被其他进程占用,所以暂时不能运行,
              但是该进程已经具备了执行的所有条件。
运行--阻塞转换:进程出让CPU,等待系统分配资源或某些事件的发生,如等待用户输入。

运行--就绪:分配的CPU 时间片已经用完,或者在中断模式下,有更高优先级的进程进入系统。

阻塞--就绪:处于阻塞队列的进程,当其等待的事件已发生或者等到可用资源时,进入就绪列竞争CPU。

就绪--运行:进程被调用程序选中CPU。

3 つのプロセスの相互作用 - 協力と競争

    在多道程序设计系统中,同一时刻可能有多种进程,这些进程之间存在两种基本关系:竞争关系和协作关系。

1. 競争関係:

システム内の複数のプロセスは相互に関係がなく、他のプロセスの存在を認識せず、他のプロセスの影響を受けません。複数のプロセスが一連のコンピュータ システム リソースを共有するため、複数のプロセスがコンピュータ リソースを競合するという問題が必然的に発生します。リソースをめぐって競合するプロセスは情報を交換しませんが、あるプロセスの実行は他のプロセスの実行に影響を与えます。2 つのリソースが同じリソースにアクセスしたい場合、一方のプロセスはオペレーティング システムによって割り当てられたリソースを取得し、もう一方は待機する必要があり、極端な場合には、ブロックされたプロセスは実行されません。

リソースの競合により、次の 2 つの制御上の問題が発生します。

1)死锁,一组进程获得了部分资源,还想要得到其他进程所拥有的资源,最终所有的进程都陷入死锁。

2)饥饿,一个进程由于其他进程总是优先于它而被无限的拖延。

2.協力関係:

一部のプロセスは、タスクを完了するために分業と協力が必要ですが、協調プロセスはすべて独立して不定の速度で実行されるため、協調プロセスは次のことを行う必要があります。特定の調整ポイントが作業を調整します協調プロセスのとき調整点に到達するその後、パートナープロセスから情報を受け取る前に、自分をブロックするパートナープロセスによって目覚めるまで。

3. 競争問題の解決策 – プロセスの相互排除

プロセスの相互排除は、人種問題を解決する手段です。プロセスの相互排他とは、複数のプロセスが共有リソースを使用したい場合、いつでも最大 1 つのプロセスがそのリソースを使用でき、他のプロセスは待機することを意味します。リソースを所有するプロセスがリソースを解放するまで。

いくつかの名詞に注目してください。临界资源:称为独占资源,是指一段时间内只允许一个进程去使用的资源。

                    临界区:访问临界资源的代码称为临界区。

クリティカルセクションで使用するために必要なガイドライン:

1)当若干个进程要求进入临界区时,应是一个进程进入临界区,他们不应该改互相等待而是谁都不能进入。

2)一次只允许一个进程去访问临界区,其他进程互斥的访问临界区。

3)各进程使用临界区的时间是有限的,进程必须要早有限时间内释放临界资源。

4. プロセスのコラボレーション関係の解決策 – プロセスの同期

进程的同步是指两个或两个以上进程基于某个条件来协调他们的活动。
一个进程的执行依赖于另外一个进程的信息。
当一个进程没有受到另一个协作进程发来的消息是,进程会阻塞状态。

4. プロセス管理 – PV運用

p操作和v操作是不可中断的程序段,称为原语。
P,V原语中P是荷兰语的Proberen(测试), V是荷兰语的Verhogen(增加)。

1. セマフォ – セマフォ

セマフォはリソースを表すエンティティであり、キューに関連する整数変数であり、P 操作と V 操作のみをサポートします。その具体的な意味は次のコードに示されています。
ここに画像の説明を挿入

値 value: の
場合の説明:

    value >0 时:信号量可用的资源个数
    value=0 时:无空闲资源,无空闲进程,正在执行一个进程;
    value< 0时:value的绝对值代表使用该资源的阻塞进程的个数;

セマフォはプライベート セマフォとパブリック セマフォに分けられます。

パブリック セマフォ: プロセス間の相互排他に使用され、通常、初期値は 1 に設定されます。

プライベート セマフォ: プロセス間の同期を達成するために使用され、初期値は 0 または n に設定され、プロセスが P 操作を実行できるようにします。

2.P(プローベレン)操作

P操作代表的是对资源的申请,其伪代码如下:

ここに画像の説明を挿入
フローチャートは次のとおりです。
ここに画像の説明を挿入

ここに画像の説明を挿入

3、V(増加)操作

V操作是释放资源的操作,其伪代码如下:

ここに画像の説明を挿入

4. プリンタ動作用PV動作の詳細説明

並行プログラムでは、印刷ジョブを実行するプロセス ABC がありますが、プリンターは 1 台しかありません。各プロセスがプリンターの使用を競合すると、ジョブ エラーが発生します。そのため、問題を解決するにはプロセスの相互排他を使用する必要があります。プロセス競技の様子。セマフォー S=1 (共有リソース プリンターを表す) を設定し、PV 操作を使用してプロセスの相互排他を実現します。
———————————————
ここに画像の説明を挿入
上記の PV 動作により、プロセスの相互排他が実現されます。このプロセス全体は、誰もが PV 運用のプロセスを理解するのに役立ちます。

5、古典的な IPC 問題

1. プロデューサーとコンシューマーの問題 - これはプロセスの同期に関する非常に良い例です。

問題の説明:

プロデューサ プロセスのグループとコンシューマ プロセスのグループは、特定のサイズの最初は空のバッファを共有します。バッファがいっぱいでない場合にのみ、プロデューサ プロセスはバッファに情報を入れることができます。それ以外の場合は、キャッシュのみで待機します。領域が空でない場合、コンシューマ プロセスはそこからメッセージを取得できますが、それ以外の場合は待機する必要があります。バッファーには一度に 1 つのプロセスのみがアクセスできます (クリティカル リソース)。

(1)問題分析:生産者をパン屋、消費者を買い物客、キャッシュ領域をパンを入れる箱(リソース)とする。

(2) 関係分析: 生産者と消費者は相互に排他的にリソースにアクセスできます。生産者はパンを箱に入れ、消費者はパンを持ち帰ることができます。または、消費者がパンを受け取った後、生産者はパンを箱に入れます。 . パンの中に、生産者のパンと消費者のパンを同時に運ぶことはできません。

生産者と消費者は相互依存しており、生産者がパンを生産して初めて消費者はパンを手に入れることができ、消費者がパンを手に入れて初めて生産者は生産を続けることができます。

(3) セマフォ設定:

semaphore empty=n;代表当前的空格子数,对于生产者来说,空格子是生产者的资源;

semaphore full =0;代表当前具有面包的盒子数量,对于消费者来说,放面包的盒子是消费者资源

这就是我们可以称为 empty  full 是私有信号量的原因。

semaphore mutex=1 ;代表临界区互斥信号量

生产者生产一个面包,就会给消费者一个通行证,告诉消费者,可以拿走面包;

消费者消费一个面包,就会给生产者一个通行证,告诉生产者,可以生产面包;

ここに画像の説明を挿入
ここに画像の説明を挿入

コードは以下のように表示されます:
ここに画像の説明を挿入

ここに画像の説明を挿入
プロデューサプロセスが最初に P(mutex) を実行し、次に P(empty) を実行し、コンシューマプロセスが P(mutex) を実行し、次に P(fall) を実行する場合、これは可能ですか?

プロデューサ プロセスがバッファをいっぱいにし、コンシューマ プロセスがプロダクトを受け取っていない、つまり空 = 0 であると想像してください。プロデューサ プロセスが次回まだ実行中の場合、最初に P(mutex) を実行してセマフォをブロックします。次に P(empty ) を実行するとブロックされ、消費者が製品を取り出した後に起動することが期待されます。Consumer プロセスの順番が来ると、Consumer プロセスは最初に P(mutex) を実行しますが、Producer プロセスがミューテックス セマフォをブロックしているため、Consumer プロセスもブロックされます。ブロックされ、両方とも期待されます 相手は目を覚まして、終わりのない待機に陥りました。デッドロック状態に陥る。

読者と美容師に関するIPC問題については次回の記事で紹介します。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/kalvin_y_liu/article/details/119865071