概念:
什么是进程:正在执行的程序就叫做进程,担当分配系统资源(CPU时间,内存)的实体。
PCB:
Linux操作系统下的PCB是: task_struct。进程信息被放在进程控制块的数据结构中。
task_struct内容:
- 标示符: 描述本进程的唯一标示符,用来区别其他进程。
- 状态: 任务状态,退出代码,退出信号等。
- 优先级: 相对于其他进程的优先级。
- 程序计数器: 程序中即将被执行的下一条指令的地址。
- 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
- 上下文数据: 进程执行时处理器的寄存器中的数据。
- I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
- 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
- 其他信息
进程查看
ps -l
僵尸进程
- 什么是僵尸进程:当进程退出并且父进程没有读取到子进程退出的返回代码,僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态。
- 危害:
①进程的退出状态必须被维持下去,因为他要告诉父进程任务情况。可父进程如果一直不读取,那子进程就一直处于Z状态。
②维护退出状态就是要用数据维护,Z状态一直不退出,PCB一直都要维护,如果一个父进程创建了很多子进程,不回收,就会造成内存资源的浪费
③内存泄漏
孤儿进程
父进程先退出,子进程就称之为“孤儿进程”。
孤儿进程被1号init进程领养。