+ -
当前位置:首页 → 问答吧 → 源码中这段话是什么意思?

源码中这段话是什么意思?

时间:2011-11-24

来源:互联网

  1. 00011 /*
  2. 00012  * we need this inline - forking from kernel space will result
  3. 00013  * in NO COPY ON WRITE (!!!), until an execve is executed. This
  4. 00014  * is no problem, but for the stack. This is handled by not letting
  5. 00015  * main() use the stack at all after fork(). Thus, no function
  6. 00016  * calls - which means inline code for fork too, as otherwise we
  7. 00017  * would use the stack upon exit from 'fork()'.
  8. 00018  *
  9. 00019  * Actually only pause and fork are needed inline, so that there
  10. 00020  * won't be any messing with the stack from main(), but we define
  11. 00021  * some others too.
  12. 00022  */
复制代码
我自己翻译:
    我们需要“inline"--从内核空间fork会导致非写时复制(!!!),一直到一个可执行程序被执行。
如果不是栈,这没有问题。它的处理是通过在fork()后,根本不让main()使用栈。因此,没有函数调用
--也就意味着fork的inline代码,否则我们将在退出出fork()时使用栈。
     实际上,只有pause和fork需要inline,所以从main()中不会再有任何关于栈的信息,但是我们
却为其他的定义了栈。

这段话我自己翻译后,不是很明白。什么意思呀?究竟是要解释什么呀?

作者: HS_217^_^   发布时间: 2011-11-24

帮顶下

作者: bzbj   发布时间: 2011-11-25

inline是内联的意思(c++里的东东)。  fork是创建进程的系统调用。
好象是说 在这里的代码要以inline的方式(在一个main函数里面),即不是调用子函数。目的是不想使用栈。这样,就不会出现NO COPY ON WRITE(新技术"写时才复制"用不上,效率差)。
  最后说,调用子函数和创建子进程都要使用inline的方式。

哈哈   开始研究源代码了呀   了不起啊。。。

作者: chengshiding   发布时间: 2011-11-25

相关阅读 更多