1.系统调用 fork:复制进程
Pid_t fork(void);
Pid_t:int pid:进程的编号(id标识符)
父子进程并发运行
并行:一种特殊的并发,不是交替,我在执行的同时,你也在执行。两个处理器
并发运行:一个处理器。在一段时间内交替运行,从长远角度看是同时运行。
fork:
先复制PCB,再把实体复制一份;
父进程返回的fork值是子进程的pid,子进程返回的fork值是0,子进程复制过来的fork不再对子进程起作用。
2.写时拷贝:为了提高效率,以页为单位拷贝,如果全部复制,那么会延时拷贝。在复制时,将修改的页面拷贝,不修改的,不拷贝,与原来的共享。
3.问题
(1)阿里面试题:
int main()
{
fork() || fork();
printf(“a\n”);
exit(0);
}
问:有几个进程?(a打印几次?) 3次
(2)int main()
{
int i = 0;
for(i = 0;i<2
Pid_t fork(void);
Pid_t:int pid:进程的编号(id标识符)
父子进程并发运行
并行:一种特殊的并发,不是交替,我在执行的同时,你也在执行。两个处理器
并发运行:一个处理器。在一段时间内交替运行,从长远角度看是同时运行。
fork:
先复制PCB,再把实体复制一份;
父进程返回的fork值是子进程的pid,子进程返回的fork值是0,子进程复制过来的fork不再对子进程起作用。
2.写时拷贝:为了提高效率,以页为单位拷贝,如果全部复制,那么会延时拷贝。在复制时,将修改的页面拷贝,不修改的,不拷贝,与原来的共享。
3.问题
(1)阿里面试题:
int main()
{
fork() || fork();
printf(“a\n”);
exit(0);
}
问:有几个进程?(a打印几次?) 3次
(2)int main()
{
int i = 0;
for(i = 0;i<2