进程属性
- 多任务 vs 单任务 (并发vs并行)(调度:抢占vs非抢占)
- 进程的特点:每个进程拥有独立的虚拟地址空间 4G(内核态:1G 用户态:3G(栈,堆,数据段(bss、or、静态数据区)))
- 进程pid:每个进程创建都有自己的id号 getpid getppid(获得父进程的id)
- 进程控制块(PCB):每个进程创建都会有自己进程控制块(struct task_struct)(pid\ppid\pd\parent\child\os\mem)
- 如何创建进程?(对于开发人员,只需要知道如何创建进程,只有进程的调度由os决定)
- fork:创建进程
ps:
vfork:创建子进程结束之后,父进程执行;子和父共享内存空间
进程退出
- exit和_exit
- exit:库函数,里面封装了_exit();
- _exit:系统调用接口API
- 功能的区别:
- _exit函数退出进程,不会使进程刷新缓冲区;
- exit函数在调用_exit后会刷新缓冲区
进程运行
- exec和system
system:在进程中,运行一个程序
exec函数族:execl() - 区别:
- system执行的进程不会覆盖原有进程的代码,也就是说不会产生新的进程,pid不会发生改变;
- exec函数zu:覆盖原有进程的代码段,创建了新的进程,pid发生了变化
ps:
0号进程:调度
1号进程:所有进程的父进程,清除内存
2号进程:页转换