3

我有三个问题让我产生了很多疑问:

  1. 如果程序中的一个线程调用fork(),新进程是复制所有线程,还是新进程是单线程的?

  2. 如果一个线程调用exec(),参数中指定的程序是否会exec()替换包括所有线程在内的整个进程?

  3. 系统调用是抢占式的吗?例如,是否可以在系统调用中间调度进程?

4

2 回答 2

4

对于exec, 从man execve:

除了调用线程之外的所有线程都在execve().

来自man fork

子进程是用一个线程创建的——调用fork().

于 2012-05-05T18:27:44.040 回答
1

Wrt #3:是的,您可以调用直接或间接使另一个线程准备好运行的系统调用。如果该线程具有比当前线程更高的优先级,并且系统设计为在那时安排它,它就可以这样做。

于 2012-05-05T18:37:56.317 回答