【问题标题】:Shared library used by two processes两个进程使用的共享库
【发布时间】:2011-08-17 06:17:21
【问题描述】:

有人问我这个问题:

两个进程 P1 和 P2 正在使用一个共享库(UNIX 系统)。 共享库有一个全局变量 G1,以及一个 getval( ) 和 setval( ) 函数,用于获取和设置 G1 的值。

这是事件的顺序:

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 个选项之外,您还可以添加任何其他答案。

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

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

【问题讨论】:

    标签: linux process shared-libraries


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-04-02
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 2011-05-23
      • 1970-01-01
      相关资源
      最近更新 更多