2011-08-17 17 views
1

誰かがこの質問をしました。2つのプロセスによって使用される共有ライブラリ

2つのプロセスP1とP2が共有ライブラリ(UNIXシステム)を使用しています。 共有ライブラリには、グローバル変数G1と、G1の値を取得および設定するgetval()およびsetval()関数があります。ここで

は、一連のイベントです:今

P1:Calls setval(10) P1:Goes to sleep P2: Calls setval(20) P2:Goes to sleep P1:awake from sleep P1: Calls val=getval() 

のvalの値がどうなりますか?どのP1が受け取る?それは10か20か?

説明はあなたの答えとなります。 選択肢は以下のとおりです。

  1. ヴァル= 10、すべてのプロセスが実行され、複数のプロセスが同じ共有ライブラリを使用しているが、独自のアドレス空間を持つためです。したがって、G1はグローバル変数ですが、その値はすべてのプロセスで一意になります。

  2. p1。 P1がスリープ状態になったときにプロセスP2によって値が変更されたので、値20を受け取る。

  3. 値を決定することはできません。

  4. これらの4つの選択肢から離れてご希望の場合は、他の回答を追加することができます。

私の答えは1.です。同意しますか?

P1とP2が協働せず、独立したプロセス

答えて

2

ヴァル= 10です。確かに、すべてのプロセスとそれを持っている(それは "それは"です)自分のアドレス空間です。ライブラリにはデータスペースがありません。

+1

タイプミスを指摘してくれてありがとう。 – kingsmasher1

関連する問題