由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问个fork cow的问题
相关主题
奇怪的问题:关于一个简单的malloc()小程序 (转载)大侠们救命, C++ operator new 问题
这个C++程序为什么不能运行C的argc问题
char ** pt1和 char * pt2[] 的区别在哪?const 指针类型转换
A aimple C++ question[C++ boost::interprocess] 讨论贴
What is wrong with the code?问个简单的c程序
C++ 初级再初级问题[合集] 这个java程序为什么比同样的c++程序快太多太多
为什么foo1可以而foo2不行?请问一个exception题目
菜鸟求教,一个c++的困惑Use Visual .NET for C++ programming
相关话题的讨论汇总
话题: pid话题: fork话题: 191m话题: 200000000话题: 199m
进入Programming版参与讨论
1 (共1页)
b****r
发帖数: 161
1
一小段程序,根据fork的COW,parent的resident内存消耗是200M,child的resident在
更改s数组之前应该很小,但是实际上top输出两者resident是一样的:
Virt Res
18 0 0 0:00.19 0.1 199m 191m 780 S a.out

18 0 0 0:00.00 0.1 199m 191m 148 S a.out
Why? Linux 2.6
int main(int argc, char *argv[])
{
char *s = new char[200000000];
for (int i = 0; i < 200000000; i++) {
s[i] = '1';
}
pid_t pid = fork();
if (pid == 0) {
sleep(30);
std::cout << " changingn";
s[10] = 'a';
s[10000] = 'a';
sleep(60);
_exit(0);
} else {
waitpid(pid, 0, 0);
}
delete s;
return 1;
}
l*********s
发帖数: 5409
2
'copy on write' does not mean allocating memory on write.
S*A
发帖数: 7142
3
这个很正常。
cow只是共享一些 page。
但是共享的地址空间还是用了的,
有真实的 page backing。
res 统计的是有多少地址空间
被用。
1 (共1页)
进入Programming版参与讨论
相关主题
Use Visual .NET for C++ programmingWhat is wrong with the code?
三个C syntax 弱问题C++ 初级再初级问题
一个读用户输入的小问题为什么foo1可以而foo2不行?
a question on C++ string菜鸟求教,一个c++的困惑
奇怪的问题:关于一个简单的malloc()小程序 (转载)大侠们救命, C++ operator new 问题
这个C++程序为什么不能运行C的argc问题
char ** pt1和 char * pt2[] 的区别在哪?const 指针类型转换
A aimple C++ question[C++ boost::interprocess] 讨论贴
相关话题的讨论汇总
话题: pid话题: fork话题: 191m话题: 200000000话题: 199m