1.进程:进行中的程序。
微观串行,宏观并行。
程序的一次执行过程
进程是程序的一个实例
一个程序可以对应一个或多个进程。
2.为什么需要进程?
3.进程的组成部分:
进程 = pcb 块 + 栈|堆|bss|data|text
其中:
家族:操作系统
PID 进程ID号
PR 进程优先级
S 进程的状态:进程的生命周期
4.进程的状态:
操作系统理论:三态模型
5.观察进程:
1.top -- 类似于windows下的任务管理器
2.ps
ps aux | grep a.out //某个pid号及状态信息
ps -elf |grep a.out //查看父子进程id
ppid(parent process id) //父进程pid号
Linux系统中,进程间关系是一种父子关系。
3.pstree -sp【pid号】 //查看父子进程间的关系、树状图
4.kill -【】 -9 给进程发信号 killall 可以指定进程名称。
6.进程的生命周期:
1.创建进程
fork() 通过复制调用进程复制的子进程(复制进程实体|数据代码)
返回值:成功:父进程返回子进程的PID号、子进程返回0
失败返回-1并没有子进程被创建
注:1.pid号是一个非负整数。
2.父子进程的空间:在32位系统中,每个进程拥有4g运行空间(虚拟的)。
3.每个进程运行在独立的4G内存空间中
4.父子进程中,数据相互独立,不受影响。
5.父子进程运行的顺序不确定。取决于操作系统先调度谁。
6.孤儿进程会被收养自动变成后台进程。
7.子进程结束,父进程没有收,是僵尸态
8.孤儿进程,子进程在,父进程不在。32位系统被init收养,64位系统被systemd收养。资源被回收。