当前位置:   article > 正文

Linux——fork复制(将死进程)、内存管理(虚拟内存)、写时拷贝技术_写时拷贝fork

写时拷贝fork

目录

一、fork复制

1、进程原理

2、 僵死进程

3、代码演示

 二、内存管理

1、分页

2、虚拟内存

3、虚拟内存提供的三个重要的能力

三、fork写时拷贝技术

1、定义

2、引入 

3、缺点

一、fork复制

1、进程原理

  •  fork()函数的功能就是复制当前进程,在内核进程表中创建一个新的进程表,当前进程称为子进程,被复制的进程称为父进程。

  注意:子进程的代码和父进程的完全相同,同时它还会复制父进程的数据(堆数据、栈数据和静态数据)。数据的复制采用的是写时复制。创建子进程后,父进程打开的文件描述符默认在子进程中也是打开的,且文件描述符的引用计数加1。

2、 僵死进程

(1)僵死进程产生的原因或者条件: 当子进程先于父进程结束,父进程没有获取子进程的退出码,此时子进程变成僵死进程 ;

(2)演示僵死进程: ./main & ps(子进程结束而父进程未结束的时候才有僵死进程)。

(3)如何处理僵死进程:

         ①父进程先于子进程结束 比如子进程的n改为7,父进程的n改为3; 父进程先于子进程结束,子进程就会被收养,"父进程"就会获取退出码;(调用wait);

       ②父进程获取退出码。

(4)其实两种处理僵死进程的方法本质都是一样的,都调用了wait,获取退出码.但是两种 方法又有区别,就是父进程调用wait会阻塞,等子进程执行完之后,父进程才会执行。

(5)一般我们父进程调用wait是配合信号使用的,等讲到信号量再说.现在只能说明父进程 调用wait可以避免僵死进程。

(1)man-fork(看头文件/返回值)

(2)fork方法调用成功后,就会有两个进程存在,调用fork的进程称为父进程,新复制的进程 称为子进程;

(3)getpid:得到当前进程的PID;

(4)getppid:得到当前进程的父进程的PID。

注意:子进程的PID=父进程的PID+1

          父进程的返回值为子进程的PID,子进程的返回值为0fork调用失败返回-1。

  

3、代码演示:

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<unistd.h>
  4. #include<string.h>
  5. #include<assert.h>
  6. int main()
  7. {
  8. char *s=NULL;
  9. int n=0;//控制父子进程执行的次数
  10. pid_t id=fork();
  11. assert(id!=-1);
  12. if(id==0)//子进程
  13. {
  14. s="child";
  15. n=3;
  16. }
  17. else//父进程
  18. {
  19. s="parent";
  20. n=7;
  21. }
  22. //父 子进程一起执行
  23. int i=0;
  24. for(;i<n;i++)
  25. {
  26. printf("s=%s\n",s);
  27. sleep(1);
  28. }
  29. exit(0);
  30. }

 二、内存管理

1、分页

简单分页 分页 逻辑页 物理页 页表

2、虚拟内存

是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

swap(交换):实现进程切换

3、虚拟内存提供的三个重要的能力:

①它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,根据需要在磁盘和主存之间来回传送数据,使得能够运行比内存大的多的进程。

②它为每个进程提供了一致的地址空间,从而简化了存储器管理;

③ 它保护每个进程的地址空间不被其他进程破坏 ;

三、fork写时拷贝技术

1、定义

2、引入 

fork复制进程的过程做了一个优化——写时拷贝技术

引入了写时拷贝技术,就可以延迟页面的拷贝,甚至免除页面的拷贝 还有一个需要注意的地方:写时拷贝是以页为单位的,哪怕这个页中只有一个字节被修 改了,我们也需要将整个页面都复制出来一份。

3、缺点

①复制开销比较大

②占用内存空间

如有错误,敬请指正。

您的收藏与点赞都是对我最大的鼓励和支持!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/883033
推荐阅读
相关标签
  

闽ICP备14008679号