有人问我这个问题:
两个进程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?
解释是什么,你的答案是什么? 选择是:
val = 10,这是因为虽然多个进程使用相同的共享库,但每个进程都会执行并拥有自己的地址空间。因此,尽管G1是一个全局变量,但它的值对于每个过程都是唯一的。
P1。接收值20,因为当P1睡着时,过程P2改变了值。
无法确定该值。
如果你希望除了这4个选择之外,你可以添加任何其他答案。
嗯,1。是我的回答。你同意吗?
P1和P2不合作,是独立的过程
答案 0 :(得分:3)
VAL = 10。实际上,每个过程都有自己的地址空间(不是它,“它是”,它是“它是”)。该库本身没有数据空间。