Linux 两个进程使用的共享库

Linux 两个进程使用的共享库,linux,process,shared-libraries,Linux,Process,Shared Libraries,有人问我这个问题: 两个进程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点 你的答案是什么

有人问我这个问题:

两个进程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点

你的答案是什么?请解释一下。 选择包括:

  • val=10,这是因为尽管多个进程使用同一个共享库,但每个进程都执行并拥有自己的地址空间。因此,尽管G1是一个全局变量,但它的值对于每个进程都是唯一的

  • P1。接收值20,因为该值在P1休眠时由进程P2更改

  • 无法确定该值

  • 除了这4个选项之外,如果您愿意,还可以添加任何其他答案

  • 嗯,1。这是我的回答。你同意吗


    P1和P2不合作,是独立的过程val=10。事实上,每个进程都有自己的地址空间(不是它的“它的”是“它的”)。图书馆本身没有数据空间