UNIX作系统使用copy-on-write方式来实现fork()系统调用以便创建一个新进程。但在创建进程时并不能完全使用copy-on-write方式,因为进程的某些部分必须在创建时即时copy,请问进程的哪些部分必须在创建时即时copy,哪些部分可以采用copy-on-write方式而不用即时copy这样做有什么好处
参考答案:每个进程执行时必须将页表始址或段表始址调到初始寄存器,并将页表调入内存,否则进程无法执行,所以页表部分必需在创建时即时copy,其他进程管理程序所需的进程信息如进程号等也需要在创建时即时copy,而那些运行暂时不需要的进程用户上下文及数据可以先不复制到子进程空间,而是采取copy-on-write策略,因为子进程以后很可能不会用到这部分内容,而是调用exec()用新的进程上下文覆盖其原有上下文,这样一来可以节省fork()调用开销,避免不必要的copy。