Linux操作系统下常引用的头文件有:
<stdio.h> <stdlib.h> <unistd.h> <string.h> <assert.h>

fork() 复制进程

1.printf方法
(1) 缓冲区放满了
(2) 程序结束了
(3) 强制刷新缓冲区 “\n” ,fflush(stdout)

2.main函数的参数
fork实现和拓展
传k参,直接./main k就行了

3.fork()
fork实现和拓展
fork实现和拓展
fork()最早时期采用,子进程全部复制父进程,目前采用相同的部分不复制,只复制并修改不同的部分(这些部分保存在页中,也就是说页不同就要将不同的页复制出来一份进行修改,只是代码段,资源而这是分开的。称之为写值拷贝)

并行是特殊的并发,并发:一段时间内,多个程序同时被执行。

fork实现和拓展
fork实现和拓展
fork实现和拓展虽然&S相等但是只是虚拟位置相等,实际位置并不相等
在程序中使用的是逻辑地址/虚拟地址,不是真实的物理地址。

内存泄漏?
在程序运行的过程中,动态申请了空间,不用了,也不free,就会发生内存泄漏。
但是,程序运行结束后,系统就把所有资源回收了。

申请1G能不能成功?
看内存有没有,没有就加上虚拟内存,才有可能

虚拟内存:在硬盘上划分一块区域来用作内存,称之为虚拟内存。(虚拟内存没有内存快)

先malloc后,再fork,子进程也有一份父进程在堆区申请的空间。

fork实现和拓展
fork实现和拓展
fork实现和拓展

相关文章: