一、第二次课大纲
1.fork、vfork、clone
2.写时拷贝技术
3.Linux线程的实现本质
4.进程0和进程1
5.进程的睡眠和等待队列
6.孤儿进程的托孤,SUBREAPER
1.fork、vfork、Copy-on-Write例子
2.life-period例子,实验体会托孤
3.pthread_create例子,strace它
4.彻底看懂等待队列的案例

二、fork

1)fork创建一个进程。p1是一个task_struct,p2也是一个task_struct,调度器只通过task_struct来调度进程。在p1中fork后新进程p2,直接完全对拷给p2的task_struct,两者完全一样(当然pid不同),资源一样。只要有修改就不一样了,资源分裂。比如fs,fd等。chdir函数修改cwd。

任督二脉之进程管理(2)

2)但是内存资源mm不好分裂。采用写时拷贝技术(COW)

例子:

 1 #include <sched.h>
 2 
 3 #include <unistd.h>
 4 
 5 #include <stdio.h>
 6 
 7 #include <stdlib.h>
 8 
 9 
10 
11 int data = 10;
12 
13 
14 
15 int child_process()
16 
17 {
18 
19     printf("Child process %d, data %d\n",getpid(),data);
20 
21     data = 20;
22 
23     printf("Child process %d, data %d\n",getpid(),data);
24 
25     _exit(0);
26 
27 }
28 
29 
30 
31 int main(int argc, char* argv[])
32 
33 {
34 
35     int pid;
36 
37     pid = fork();
38 
39 
40 
41     if(pid==0) {
42 
43         child_process();
44 
45     }
46 
47     else{
48 
49         sleep(1);
50 
51         printf("Parent process %d, data %d\n",getpid(), data);
52 
53         exit(0);
54 
55     }
56 
57 }
View Code

相关文章:

  • 2022-12-23
  • 2021-11-19
  • 2021-09-05
  • 2021-12-28
  • 2022-12-23
  • 2022-01-15
  • 2022-01-10
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-12
  • 2021-06-15
  • 2021-12-25
  • 2022-01-06
  • 2022-12-23
相关资源
相似解决方案