描述进程(PCB–进程控制块)
1、Linux下描述进程的结构体叫做task-struct(进程控制块)windows下叫做PCB。
2、task-struct中包含进程的信息,其内容可以分为
1)标识符信息:用来区别其他进程的唯一信息。(pid)
2)程序计数器:记录即将被执行的下一条指令的地址。
3)进程调度信息:进程状态、进程优先级。
4)内存指针:程序代码指针、进程相关数据指针、与其他进程共享的内存块的指针。
1、进程的标识符信息
1、查看当前进程:
可以看出,同一程序每次运行PID都是不同的。
2、查看父进程
2、进程的创建(fork())
3、进程状态
1、R运行状态:并不意味着进程在运行中,他表示进程要么在运行中要么在运行队列里。
2、S睡眠状态:意味着进程在等待事件完成。
3、D磁盘状态:(不可中断睡眠状态)此状态下的进程通常会等待IO的结束。
4、T状态:可以通过发送SIGSTOP信号来停止T进程,也可以通过SIGCONT信号让进程继续运行。
5、X死亡状态:只是一个返回状态,任务列表中看不到此状态。
特殊进程–僵尸进程(zombie)
1、僵死状态是一种特殊状态,当进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵尸进程。
2、僵尸进程会以终止状态保持在进程表中,并且一直等待父进程读取退出状态代码。
3、只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态。
4、僵尸进程的危害:
父进程如果一直不读取,子进程就一直处于z状态。
维护退出状态要用数据维护,信息保存在PCB中,所以Z状态不退出PCB就要一直维护。造成内存泄露
解决方法:
https://blog.csdn.net/cx2479750196/article/details/80076168
孤儿进程
父进程提前退出,子进程就被称为孤儿进程,随后会被1号进程(init进程)领养。
4、进程优先级
其他概念
并行:多个进程在多个CPU下分别同时进行运行。
并发:多个进程在一个CPU下采用进程切换的方式,在一段时间内,让多个进程都得以推进。
竞争性:系统进程数量众多,但cpu数量有限,所以进程间存在竞争。
独立性:多进程并行,独享各自资源,多进程运行期间互不干扰。