程序: 为了完成特定任务的一系列指令的有序集合。
进程:程序的一次动态执行过程( 每个进程都有自己的状态;每个进程都有自己的虚拟地址空间),进程是操作系统分配资源的基本单位。
进程控制块(PCB)
程序:代码+数据
进程:代码数据+堆栈+PCB
![](https://i-blog.csdnimg.cn/blog_migrate/896053d2f59624322ea2bec0f0b107db.png)
创建一个进程的一般工作:
1.分配一个PID [0-/proc/sys/kerne1/pid _max]
0号进程是内核进程,它创建1号进程。
0号进程还将进程从物理内存搬到磁盘,和从磁盘搬到物理内存。
2.分配PCB,拷贝父进程PCB的绝大部分数据
3.给子进程分配资源
4.复制父进程地址空间
5.将子进程置成就绪状态,放入就绪队列。
pid_ t fork (void)
fork注意点:
1. fork父子进程交替进行
2.父进程死亡,子进程变成孤儿进程,由1号进程领养。
3.子进程死亡,成为僵尸进程。