两个进程使用的共享库

时间:2011-08-17 06:17:21

标签: linux process shared-libraries

有人问我这个问题:

两个进程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. val = 10,这是因为虽然多个进程使用相同的共享库,但每个进程都会执行并拥有自己的地址空间。因此,尽管G1是一个全局变量,但它的值对于每个过程都是唯一的。

  2. P1。接收值20,因为当P1睡着时,过程P2改变了值。

  3. 无法确定该值。

  4. 如果你希望除了这4个选择之外,你可以添加任何其他答案。

  5. 嗯,1。是我的回答。你同意吗?

    P1和P2不合作,是独立的过程

1 个答案:

答案 0 :(得分:3)

VAL = 10。实际上,每个过程都有自己的地址空间(不是它,“它是”,它是“它是”)。该库本身没有数据空间。