【发布时间】: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?
你的答案是什么,并附上解释。 选择是:
val=10,这是因为每个进程都执行并拥有自己的地址空间,尽管多个进程使用同一个共享库。因此,虽然 G1 是一个全局变量,但它的值对于每个进程都是唯一的。
P1。接收值 20,因为当 P1 处于睡眠状态时,进程 P2 更改了该值。
无法确定值。
除了这 4 个选项之外,您还可以添加任何其他答案。
嗯,1. 是我的答案。你同意吗?
P1 和 P2 不合作,是独立的进程
【问题讨论】:
标签: linux process shared-libraries