oldbegger 发表于 2004-10-10 09:17:25

有几个问题请教大家,请不吝赐教!知道哪个说哪个,谢谢!~

有几个问题请教大家,请不吝赐教!知道哪个说哪个,谢谢!~
1、fork一个新进程最基本需要哪些物理空间?我知道有两个页面的task_struct+系统堆栈,还有执行的程序的大小是必须的。其他还有什么,大小是多少或如何确定???我的目的是比如我编了一个main(),我怎么确定它要运行需要多少内存空间。
2、连续的虚存空间经过映射以后的物理空间是否还连续?
3、把程序调入内存,是否要在连续的空间上?
4、如何区分当前的进程是运行在用户空间还是系统空间?是否一个标志位或是寄存器位?系统空间和用户空间在内存中有分开吗?
5、想编程确定当前内存还有多少剩余,要用哪个系统函数?或是能否调用df之类的命令来获取?

cxh_nuaa_2001 发表于 2004-11-21 20:40:31

我的理解,不一定正确

1、一开始就是 task_struct+系统堆栈的那两个页面。后来可以通过“写时复制”来申请自己的空间;你所要的空间是动态分配的,最大可达3G(内存够大);
2、不一定连续;
3、不一定,线性空间是连续的;
4、这个以前知道,现在一时想不起来。好象在do_timer()里面有,不过在内核空间中它的系统堆栈肯定不是空的,还有好多方法判断。在物理内存中谁也不知道发生了什么。
5、不知道。
页: [1]
查看完整版本: 有几个问题请教大家,请不吝赐教!知道哪个说哪个,谢谢!~