关于系统空间。。。。。。。。

你我他111 2004-08-26 06:19:22
进来在研究linux内核,有一些疑惑,可能问题很幼稚,请大虾们不要笑话:)

每个进程的系统空间是不是都是一样的?
举一个简单的例子,假如进程A改变了系统空间中有一个全局变量x,那么在进程B中能不能看到这
个全局变量x?
另外假如B系统空间中能够看到一个全局变量x,它看到的x是不是就是A中的x;假如在A中改变了x,那么会
不会影响到B中的x?

...全文
106 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lysliberty 2004-08-29
系统空间是有全局变量,但用户进程可以操作内核变量吗?
就算是可以操作, 如果没有采用共享内存之类的机制,进程A也奈何不了进程B什么吧.
回复
collide 2004-08-29
内核的数据只能通过系统调用来进行访问,系统调用中,由系统负责访问的互斥性和唯一性。
回复
zxm927 2004-08-29
我想"全局变量"有多种吧.有的全局量是属于具体某个进程的;有的是属于整个内核的,毛氏情景分析中不是有很多"内核维护着...."的话么,这就是系统全局量吧;有的是属于某个CPU的(SMP结构中).我想楼主的意思就是指的内核全局量吧.既然x是全局的,那么进程A改变了x,B当然看到的就是改变了的x了(当然AB都要有这个权限).并且在很多情况下,一个进程在访问一个全局量,那么必须上锁,防止另一个进程访问.
回复
yanghuajia 2004-08-28
确实改变了,不过这就像一个磁盘文件bei
回复
David2008 2004-08-27
If they are used in the shared space by pointer
回复
你我他111 2004-08-27
to smaxll:
thanks!
我怕英文表达不好,还是用中文说了:
《linux源码情景分析》(毛德操,胡希明著)中有一段话(372页):
“(当)cpu在系统空间中运行,所有进程的页面目录中与系统空间相对应的目录项
都指向相同的页面表,所以,不管换上哪一个进程的页面目录都一样,受影响的只
是用户空间,系统空间的映射则永远不变”
既然系统空间的映射是永远不变的,那么改变了A系统空间的全局变量x,为什么会
不影响B系统空间呢?
回复
smaxll 2004-08-27
the global variable is different between A and B.
any variable changed do not affect other variable which have the
same name.

if B is a child of A,the variable x in B is a complete copy of x in A.
but they dont affect each other.
回复
你我他111 2004-08-27
没人知道吗?
回复
你我他111 2004-08-27
to collide:
1:用户空间是有全局变量
2:系统空间就没有全局变量吗?
回复
collide 2004-08-27
全局变量是在用户态的data region中的。并不在系统空间中(内核态)
回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4156

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2004-08-26 06:19
社区公告
暂无公告